Tentando enviar correio HTML no mac OSX Mountain Lion

2
Estou tentando enviar e-mail com um arquivo html como o corpo (na verdade, é um relatório de resultados pepino, se isso importa) ou um anexo (se o envio como o corpo não funciona) através da linha de comando

Eu tentei o seguinte com base no exemplo do mutt em esta resposta para outra pergunta, mas é resultando em um erro.

cat <<'EOF' Audit_Results.html | mutt -H -
To: [email protected]
Subject: "test sending html mail"
Content-Type: text/html

EOF

quando faço isso, recebo o seguinte erro

No recipients were specified.

O Mutt foi instalado usando brew install mutt e parece que a versão 1.5.21 foi instalada. Eu sou capaz de enviar e-mails através da interface 'interativa', mas apenas testei isso com simples mensagens de texto, nada html ou com um anexo.

Meu objetivo é enviar o arquivo de resultados do cucumber "Audit_Results.html" para fora como um e-mail. Embora o arquivo inclua algumas capturas de tela criadas usando o método .screenshot_as(:base64) do webdriver e incorporado usando a função embed("data:image/png;base64,#{encoded_img}",'image/png') do pepino que parece representar um pequeno problema. Até agora, a única vez que eu consegui criar um email em html a partir do relatório (usando o sendmail), ele não foi exibido corretamente no gmail. (embora se enviado como um anexo, ele irá formatar corretamente quando baixado e aberto com um navegador) Parece que o Gmail, pelo menos, não gosta de e-mail html com imagens embutidas nesse formato. Então, pode ser que eu acabe precisando enviar o relatório html como anexo.

    
por Chuck van der Linden 15.07.2013 / 22:06

3 respostas

2

Se você quiser apenas enviar Audit_Results.html verbatim, use esta sintaxe:

mutt -e "set content_type=text/html" -s "Your audit results" [email protected] < Audit_Results.html

Você não precisará pré-editar Audit_Results.html com cabeçalhos de e-mail, basta enviá-lo diretamente.

    
por 15.07.2013 / 22:16
2

Oh, eu entendi. Eu cometi um erro de digitação:

cat <<'EOF' - Audit_Results.html | mutt -H -

Observe o argumento - extra para cat . Sem ela, a entrada padrão de cat é redirecionada do documento here, mas isso não é útil, pois cat não está lendo sua entrada padrão. O comando era equivalente a cat Audit_Results.html , então mutt não recebeu nenhum cabeçalho e reclamou que não tinha nenhuma indicação de nenhum destinatário (não To: ). No snippet corrigido, cat tem dois argumentos: - (significando entrada padrão) e Audit_Results.html , portanto mutt recebe os cabeçalhos seguidos pela carga útil.

Quanto ao tipo de conteúdo, Mutt ignora o cabeçalho Content-Type fornecido e o substitui pela opção content_type , então você precisa definir a opção content_type na linha de comando:

cat <<'EOF' - Audit_Results.html | mutt -e 'set content_type=text/html' -H -
To: [email protected]
Subject: "test sending html mail"
EOF

Se você está indo nessa rota, você pode passar outros cabeçalhos via opções de linha de comando.

mutt -e 'set content_type=text/html' -s 'test sending html mail' [email protected] <Audit_Results.html

Nem todos os leitores de e-mail suportam CS e Javascript. Talvez seja necessário ajustar a forma como o HTML é gerado, se você precisar acomodar alguns leitores restritos. Isso inclui os leitores de webmail, que precisam desativar a maioria dos recursos ativos para que eles não entrem em conflito com o aplicativo de webmail.

    
por 15.07.2013 / 22:12
0

Ambas as respostas acima funcionaram para enviar o HTML como o corpo da mensagem, em formato html.

Infelizmente, o conteúdo de um relatório HTML do pepino é um pouco sofisticado demais para a maioria dos leitores de e-mail, portanto, a renderização do relatório é menos que estelar e os gráficos incorporados são perdidos completamente.

Então, em termos de usar o Mutt, o que acabei fazendo foi usar o seguinte para enviar o HTML como um anexo

echo "your audit results are attached" | mutt -s "Your audit results" -a Audit_Results.html -- [email protected] 
    
por 15.07.2013 / 22:54