我安装并配置了一个邮件客户端:
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
然后我使用 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
crontab 作业确实发送了邮件,并且我在我的邮箱中收到了它:
05 12 * * * /home/.../script.sh
但是詹金斯工作似乎没有发送它,我的邮箱里没有收到任何内容:
/home/.../script.sh > logs/script.log 2>&1
script.log 显示邮件命令被调用:
+ mail -s My subject -r My Company <[email protected]> -S [email protected] -a /home/.../results/file.zip [email protected]
我编辑掉了敏感数据。
詹金斯作业显示作业成功为蓝球。
另外需要注意的是,在使用crontab接收我公司邮箱的邮件时,用于登录smtp的gmail邮箱也会收到一封抱怨邮件:
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.
更新:如果不是在script.sh
bash 脚本中构建邮件并让 Jenkins 执行此 bash 脚本,而是让 Jenkins 直接构建邮件,那么邮件就会被发送并且我会在我的邮箱中收到它。
答案1
该问题已通过使用mutt
邮件客户端得到解决。
当 Jenkins 作业调用该mail.sh
脚本文件时,它会发送邮件,然后我会在我的邮箱中收到它。
#!/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