Pergunta

Estou desenvolvendo um cliente Gmail leve para celulares, acessar o Gmail por IMAP. Quero enviar um projecto a partir da pasta Rascunhos, mas tem alguns anexos e eu não posso baixar todos eles para enviá-lo por SMTP.

Mudança / copiá-lo para o "Correio enviado" não enviá-lo, apenas move-lo para essa pasta.

Como posso enviar um Projecto diretamente sem retornar todo o conteúdo e anexos do cliente? Existe algum comando IMAP para fazê-lo?

Foi útil?

Solução

IMAP é um protocolo de caixa de correio. Não (nativamente) suporta o envio de mensagens, somente acessando. A fim de enviar e-mails que você deve uso SMTP. É possível que haja uma extensão IMAP para enviar correio, e sua possível que o Google Mail suporta essa extensão, mas eu duvido. Portanto, se você quiser enviar um e-mail com anexos, você deve realmente ter o conteúdo completo da mensagem disponíveis para você enviar.

Outras dicas

IMAP foi projetado para receber mensagens de email, não para enviá-la. Não há nenhum comando IMAP para enviar e-mail AFAIK. Há, no entanto, pelo menos um servidor IMAP que suporta uma pasta especial 'Caixa de saída'. Quando você coloca a mensagem para esta pasta que será enviado automaticamente.

Verifique a documentação Courier-IMAP em enviar correio electrónico através de uma conexão IMAP . Note, que este é um método não padrão e eu não estou ciente de qualquer outro servidor que suporta isso.

RFC 4468 que se estende SMTP para que ele possa buscar o conteúdo de correio do servidor IMAP , mas eu não sei sobre qualquer trabalho e implementação amplamente utilizado.

Falando sobre gmail:. Degola com SMTP é provavelmente a maneira mais segura para ir

A propósito, agora que qualquer cliente de correio moderno (incluindo os webbased) suporta um Sent pasta, você typicaly tem que usar tanto SMTP e IMAP para enviar um único e-mail. E há uma condição de corrida entre o envio do e-mail via SMTP e sucesso salvar o e-mail para o IMAP Sent pasta. Usando IMAP para enviar e-mail é uma maneira de evitar essa condição de corrida.

O envio de e-mail é uma característica especial de alguns servidores IMAP. Seu nada no protocolo IMAP. Você acabou de copiar o seu e-mail em um diretório imap especial no servidor e envia-los. Eu duvido que o Gmail suporta isso.

Eu enviei um e-mail para o meu endereço de e-mail usando IMAP usando Python 3 para uma conta do Gmail. O que é faz é anexar uma mensagem a uma caixa de correio. Você precisa utilizar um punhado de bibliotecas nativas do Python. Além disso este estudo documentação para imaplib , este código é destaque na seção carregar mensagens: Para adicionar uma nova mensagem para uma caixa de correio, construir uma instância da mensagem e passá-lo para o append método (), juntamente com a data e hora para a mensagem.

Em seguida, verifique sua caixa de entrada do Gmail e você verá a nova mensagem.

import imaplib
import time
import email.message
import imaplib_connect

new_message = email.message.Message()
new_message.set_unixfrom('name')
new_message['Subject'] = 'Test'
new_message['From'] = 'name@gmail.com'
new_message['To'] = 'name@gmail.com'
new_message.set_payload('This is an example message body.\n')

print(new_message)

with imaplib_connect.open_connection() as c:
    c.append('INBOX', '',
             imaplib.Time2Internaldate(time.time()),
             str(new_message).encode('utf-8'))

# Show the headers for all messages in the mailbox
c.select('INBOX')
typ, [msg_ids] = c.search(None, 'ALL')
for num in msg_ids.split():
    typ, msg_data = c.fetch(num, '(BODY.PEEK[HEADER])')
    for response_part in msg_data:
        if isinstance(response_part, tuple):
            print('\n{}:'.format(num))
            print(response_part[1])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top