E-mail HTML da herança mailx no linux

4

Eu tenho tentado trabalhar enviando um e-mail html do mailx em um servidor linux.

Algumas notas:

  • Eu tenho que especificar um servidor smtp, portanto, não posso usar o sendmail (Isso não é algo que eu possa mudar no meu fim)
  • Não consigo instalar coisas de terceiros, como o mutt. Vou ter que usar mail ou mailx
  • Como minha versão de e-mail / x é herança, não tenho o --append ou -a (anexe as opções de cabeçalho)
  • não tenho certeza se isso ajuda em tudo, mas a minha distribuição Linux é 7.3 (Maipo)

O que eu vi na maioria das postagens no stackoverflow no meu caso:

mailx -v -S smtp=SERVER -s "$(echo -e "This is the subject\nContent-Type: text/html")" -r FROM TO < htmlmail.txt

Isso só retorna um e-mail de texto simples no meu caso.

Então, aqui está o que eu tentei até agora:

Tente 1:

Eu vi em um post para adicionar Content-Disposition: inline.

mailx -v -S smtp=SERVER -s "$(echo -e "This is the subject v1\nContent-Type: text/html\nMIME-Version: 1.0\nContent-Disposition: inline")" -r FROM TO < htmlmail.txt

Isso acaba enviando um e-mail em html, mas como os cabeçalhos são incluídos em linha com o corpo, o resultado é:

Content-Disposition: inline Message-ID: User-Agent: Heirloom mailx 12.5 7/5/10 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello World

Tente 2:

Por isso, não quero que os cabeçalhos sejam impressos no corpo. Então eu tentei remover o Content-Disposition: inline

mailx -v -S smtp=SERVER -s "$(echo -e "This is the subject v2\nContent-Type: text/html\nMIME-Version: 1.0")" -r FROM TO < htmlmail.txt

Isso acaba enviando um email de teste simples como:

<html> <b>Hello World</b> </html>

Experimente 3:

Tentei inverter o tipo de conteúdo e a versão do mime

mailx -v -S SERVER -s "$(echo -e "This is the subject v3\nMIME-Version: 1.0\nContent-Type: text/html")" -r FROM TO < htmlmail.txt

Acabei não recebendo e-mails desse código

Experimente 4:

Eu vi on-line para tentar outro cabeçalho para ajudar a descobrir onde está o problema. Então, adicionei a opção de cabeçalho para definir a prioridade do email.

mailx -v -S smtp=SERVER -s "$(echo -e "This is a subject v4\nContent-Type: text/html\nX-Priority: 1 (Highest)")" -r FROM TO < htmlmail.txt

Isso acabou enviando um e-mail de alta prioridade, mas tudo em texto simples.

Experimente 5:

Eu adicionei o cabeçalho MIME à tentativa anterior

mailx -v -S smtp=SERVER -s "$(echo -e "This is a subject v5\nMIME-Version: 1.0\nContent-Type: text/html\nX-Priority: 1 (Highest)")" -r FROM TO < htmlmail.txt

Isso acabou mandando um email com cabeçalhos no corpo e a prioridade não definida como alta ... estranho

X-Priority: 1 (Highest) Message-ID: User-Agent: Heirloom mailx 12.5 7/5/10 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello World

Depois de tudo isso, eu tentei muitas outras adaptações das tentativas acima, mas elas não levaram a nenhuma nova saída.

Todas as sugestões ou ideias são aceitas de bom grado! Por favor, tenha em mente minhas restrições listadas acima ... Eu sei que elas limitam minhas opções, mas isso está fora do meu controle.

obrigado pelo seu tempo!

    
por Cbuckles17 07.08.2017 / 18:45

1 resposta

2

Primeiro, algum contexto: Estou usando a versão heirloom-mailx como a seguinte no tópico: link

Estou usando o Ubuntu 16.04 Xenial. Tentei também no Ubuntu Server 16.04.

Para enviar e-mails, estou usando a seguinte função para enviar e-mails usando o mailx (heirloom mailx no bash):

sendmail() {
#Sending Report Email
heirloom-mailx -a $2 -v -s ""$(echo -e "subject 3\nContent-Type: text/html")"" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://mail.mymailserver:port \
-S from="[email protected]" \
-S [email protected] \
-S smtp-auth-password='password' \
-S ssl-verify=ignore \
$1 < body.html
}

Onde $ 2 é o anexo e $ 1 é o destino. Notas: 1. Os arquivos anexados são impressos dentro do corpo também, mas isso pode ser útil se você quiser apenas enviar um arquivo html sem anexos. 2. A opção "-v" é impressa por extenso, então você pode ter um problema com .mime.types que pode ser ignorado. Remova a opção se você não quiser verboso no mailx. 3. Você ainda obterá o seguinte no corpo se usar a opção "-a": Esta é uma mensagem com várias partes no formato MIME. - = - = fFPa7dLqoSF1TGj-YDc2k8bdvmjpix_4sKFT = - = Tipo de Conteúdo: text / plain; charset = US-ASCII Content-Disposition: in-line

Neste caso, estou anexando um arquivo de texto simples. Removendo "-a $ 2" do comando e você está pronto para imprimir a mensagem html. Então o resultado final seria:

sendmail() {
    #Sending Report Email
    heirloom-mailx -s ""$(echo -e "subject 3\nContent-Type: text/html")"" \
    -S smtp-use-starttls \
    -S ssl-verify=ignore \
    -S smtp-auth=login \
    -S smtp=smtp://mail.mymailserver:port \
    -S from="[email protected]" \
    -S [email protected] \
    -S smtp-auth-password='password' \
    -S ssl-verify=ignore \
    $1 < body.html
    }

Experimente e me avise. Eu testei no meu final e funciona.

Espero que isso ajude! Atenciosamente

    
por 27.08.2018 / 13:48