O formato de E-mail correcto para E-mail simples, HTML e um anexo em SMTP?
O Problema:
tentei copiar os cabeçalhos/e-mails baseados em SMTP usados pelo yahoo e pelo hotmail e enviá-los através do Telnet, mas o e-mail que recebo não mostra o anexo incluído, mas mostra a mensagem correctamente.
O Que Suspeito está a causar isto.:
Eu acredito que tenho o formato incorreto para o e-mail, e apesar de pesquisar numerosos artigos on-line (bem como tentar compreender complicado e difícil de ler RFCs), eu não tenho encontrei quaisquer artigos úteis ou concisos que explicam como usar todos os três (simples, HTML e um anexo) no SMTP corretamente. Passei vários dias tentando alterar o código, mas ou obtenho apenas a mensagem (sem anexo) ou todo o corpo de dados SMTP que mostra (incluindo limites, código html, etc).
O Que espero conseguir com esta pergunta:
Espero que alguém possa ver a informação que recolhi abaixo, e ser capaz de me dizer o que sou. falta (ou como exatamente a formatação do E-mail é incorreta).informação de depuração:
alimentei um duplicado da informação que enviei ao servidor de SMTP para ficheiro, e colei a informação ao pastebin (com todas as informações pessoais removidas / editadas - o anexo codificado de Base64 é apenas um ficheiro de texto de outro e-mail obtido do IMAP):
informação enviada literalmente (menos caracteres de controlo) para SMTP servidor:
O Que Eu vejo no cliente de E-mail (nota sem Anexo):
Http://i45.tinypic.com/29b1zci.jpg
O que o IMAP vê ao transferir o e-mail (nota formato incorrecto):
Como deve ser um e-mail formatado correctamente para IMAP:
Suspeito que o SMTP seja má interpretação do que estou enviando, e é por isso que o multipart/alternativa está faltando quando o IMAP tenta recuperar o e-mail. O que estou a fazer de errado? O que espera o servidor? [[1]} [obrigado pelos upvotes - eu posso re-ativar os links!]2 answers
Limpei os especificadores de fronteiras multipart e consegui isto, o que funciona para mim no meu servidor (deixei aqui os comandos SMTP):
From: "Edited Out" <[email protected]>
To: "Edited Out" <[email protected]>
Subject: Testing 4
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="boundary-type-1234567892-alt"
--boundary-type-1234567892-alt
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Testing the text to see if it works!
--boundary-type-1234567892-alt
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<html>Does this actually work?</html>
--boundary-type-1234567892-alt
Content-Transfer-Encoding: base64
Content-Type: text/plain;name="Here2.txt"
Content-Disposition: attachment;filename="Here2.txt"
KiAxMyBGRVRDSCAoQk9EWVtURVhUXSB7NjU5fQ0KLS1fZjZiM2I1ZWUtMjA3YS00ZDdiLTg0NTgtNDY5YmVlNDkxOGRhXw0 KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJpc28tODg1OS0xIg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZG luZzogcXVvdGVkLXByaW50YWJsZQ0KDQoNCkp1c3Qgc2VlaW5nIHdoYXQgdGhpcyBhY3R1
YWxseSBjb250YWlucyEgCQkgCSAgIAkJICA9DQoNCi0tX2Y2YjNiNWVlLTIwN2EtNGQ3Yi04NDU4LTQ2OWJlZTQ5MThkYV8 NCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJpc28tODg1OS0xIg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZG luZzogcXVvdGVkLXByaW50YWJsZQ0KDQo8aHRtbD4NCjxoZWFkPg0KPHN0eWxlPjwhLS0N
Ci5obW1lc3NhZ2UgUA0Kew0KbWFyZ2luOjBweD0zQg0KcGFkZGluZzowcHgNCn0NCmJvZHkuaG1tZXNzYWdlDQp7DQpmb25 0LXNpemU6IDEwcHQ9M0INCmZvbnQtZmFtaWx5OlRhaG9tYQ0KfQ0KLS0+PC9zdHlsZT48L2hlYWQ+DQo8Ym9keSBjbGFzcz 0zRCdobW1lc3NhZ2UnPjxkaXYgZGlyPTNEJ2x0cic+DQpKdXN0IHNlZWluZyB3aGF0IHRo
aXMgYWN0dWFsbHkgY29udGFpbnMhIAkJIAkgICAJCSAgPC9kaXY+PC9ib2R5Pg0KPC9odG1sPj0NCg0KLS1fZjZiM2I1ZWU tMjA3YS00ZDdiLTg0NTgtNDY5YmVlNDkxOGRhXy0tDQopDQpmbHlubmNvbXB1dGVyIE9LIEZFVENIIGNvbXBsZXRlZA
--boundary-type-1234567890-alt--
O especificador de limites num e-mail multipart é qualquer texto arbitrário que não é provável que apareça no corpo/anexos do E-mail. Quando ele aparece com dois traços na frente, que especifica o início da nova parte (incluindo a primeira parte. Quando aparece com dois traços no início e no fim, que especifica o fim do correio.
O SEU correio original tinha este marcador de "limite final" no meio do correio (logo a seguir a <html>Does this actually work?</html>
), e tinha dois marcadores de limites diferentes (--boundary-type-1234567890
e --boundary-type-1234567892-alt
). Isso explica porque o anexo foi deixado de lado.
O Hotmail convencionalmente (Este foi o e-mail original que o baseou em ), usa o termo "multipart/alternative" para várias partes do E-mail. Usei 'multipart / alternative' no meu email.
Acontece que o yahoo não gosta de 'multipart / alternative' e só irá mostrar correctamente o texto simples, o html e o anexo correctamente quando, em vez disso, é usado o termo 'multipart/mixed' (como reparei, os e-mails compatíveis com o yahoo usam este termo em vez de Alternativa), em combinação com a sugestão de ejdyksen (nenhuma sugestão funciona por si só para o servidor do yahoo embora).
Embora, tecnicamente falando, esta seja a resposta 'correcta', vou deixar a resposta de ejdyksen seleccionada porque os seus esforços tinham mostrado que era alguma tecnicalidade do lado do servidor (o seu servidor SMTP e o hotmail mostraram ambos o anexo, o yahoo não). Educadamente, vota a resposta de ejdyksen como ele fez a maior parte do trabalho.