Pode enviar um email usando um script bash chamado por crontab mas não por um trabalho Jenkins

0

Eu instalei e configurei um cliente de e-mail:

sudo apt-get install heirloom-mailx
sudo vi /etc/ssmtp/ssmtp.conf
mailhub=smtp.mail.yahoo.com:587
FromLineOverride=YES
[email protected]
AuthPass=mypassword
UseSTARTTLS=YES

Eu, então, construo e envio um email em um script bash:

#!/bin/sh -x
sender="[email protected]"
recipient="[email protected]"
zipfile="results/file.zip"
today='date +\%d-\%m-\%Y'
mailSubject="My subject on the "$today
mailBody="Les résultats de la fiabilisation des données du $today sont dans le fichier zip.\n\nMy-Company"
echo $mailBody | mail -s "$mailSubject" -r "My Company <$sender>" -S replyto="$sender" -a $zipfile $recipient

Um trabalho de crontab envia o e-mail e eu recebo em minha caixa de correio:

05 12 * * * /home/.../script.sh

Mas um trabalho do Jenkins não parece enviá-lo, não recebo nada na minha caixa de correio:

/home/.../script.sh > logs/script.log 2>&1

O script.log mostra o comando de e-mail sendo chamado:

+ mail -s My subject -r My Company <[email protected]> -S [email protected] -a /home/.../results/file.zip [email protected]

Eu editei os dados confidenciais.

O trabalho de Jenkins mostra uma bola azul bem sucedida para o trabalho.

Outra coisa a notar é que, ao usar o crontab e receber o e-mail na caixa de correio da minha empresa, o endereço de e-mail do gmail usado para fazer logon no smtp também recebe um e-mail sobre:

Address not found
Your message wasn't delivered to [email protected] because the address couldn't be found. Check for typos or unnecessary spaces and try again.

UPDATE: Se em vez de criar o e-mail em um script script.sh bash e fazer com que Jenkins execute este script bash, eu tenho Jenkins diretamente para construir o e-mail, então o e-mail é enviado e eu o recebo na caixa de correio.

    
por Stephane 05.07.2017 / 12:24

1 resposta

0

O problema foi resolvido usando o cliente mutt mail.

O arquivo de script mail.sh , quando chamado pelo trabalho do Jenkins, envia o e-mail e eu o recebo na caixa de correio.

#!/bin/bash

sender="[email protected]"

recipient="[email protected]"

zipfile="/home/.../file.zip"

today='date +\%d-\%m-\%Y'

mailSubject="The subject "$today

mailBody=$(cat /home/.../mail-body.html)
mailBody="${mailBody/\$today/$today}"

echo "$mailBody" | mutt -s "$mailSubject" -e "set content_type=text/html" -e "my_hdr From:My Name <$sender>" -a "$zipfile" -- $recipient
    
por 07.07.2017 / 13:17