Como enviar conteúdo de mensagens de e-mail como HTML em vez de texto sem formatação?

4

Atualmente, envio um email do comando do Linux assim:

echo "Here is the link: file:///S:/some_doc.html" | mail -s "Here is some_doc.html" [email protected]

Em alguns clientes de e-mail, o "arquivo: /// S: /some_doc.html" no corpo da mensagem se torna um link no qual o usuário pode clicar, mas em outro clientes é apresentado como texto simples, exigindo que o usuário copie e cole a string em um navegador da web. Como modifico o comando para tornar a mensagem HTML, para que o cliente de e-mail saiba como lidar com o link?

Isso obtém o link na mensagem, mas ainda é tratado como texto sem HTML:

echo "Here is the link to: <a href='file:///S:/some_doc.html'>some_doc.html</a>" | mail -s "Here is some_doc.html" [email protected]
    
por C.W.Holeman II 08.02.2011 / 19:11

2 respostas

6

Eu já vi isso:

mail -a "Content-type: text/html;" -s Test [email protected] < mail_html.html

Eu deveria ter mencionado, eu testei isso no Ubuntu Server 10.04_x64 com Gnu Mail Utils - > Postfix

    
por 08.02.2011 / 19:18
1

Mensagem:

  • A melhor maneira é criar uma mensagem MIME Content-Type: multipart/alternative com text/plain e text/html parts.

  • Para o preguiçoso, Content-Type: text/html (com HTML direto no corpo da mensagem) serve.

    ... mas lembre-se de que existem clientes de e-mail que não podem exibir HTML.

  • O que você escolher, adicione um charset=utf-8 (como em Content-Type: text/html; charset=utf-8 ) ao cabeçalho do tipo. (Qualquer conjunto de caracteres não-Unicode (exceto talvez us-ascii e iso-8859-1 ) é mal.)

Envio:

  • Nathaniel sugeriu mail -a "Content-Type: text/html" , mas isso só funciona com o GNU Mailutils.

  • Uma maneira mais confiável é canalizar a mensagem sendmail , mas você terá que construir todos os cabeçalhos por conta própria.

    [email protected]
    echo -e "From: <$USER>\nTo: <$rcpt>\nDate: $(date "+%a, %d %b %Y %H:%M:%S %z")\nContent-Type: text/html; charset=utf-8\n\n<!DOCTYPE html>\n<p>Here is the link to: <a href=\"file:///S:/some_doc.html\">some_doc.html</a>" | sendmail -i "$rcpt"
    
por 08.02.2011 / 20:49