想在提交任务后在任务完成时发送邮件到指定邮箱进行通知.
经搜索有说安装
mailutils
来执行mail
的, 有安装ssmtp
来发送邮件的. 经测试SSMTP可行.SSMTP只使用SMTP提供发送功能, 并不提供收邮件功能. 请注意发送的邮箱smtp功能已开放 ( 尤其163/126系的邮箱, 请自行百度开启SMTP细节)
安装在ubuntu就是
sudo apt install ssmtp
然后是配置发送邮箱. 编辑配置文件
sudo vi /etc/ssmtp/ssmtp.conf
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=username@126.com
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.126.com:25
# Where will the mail seem to come from?
rewriteDomain=126.com
# The full hostname
hostname=Your-Hostname
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
AuthUser=username
AuthPass=userpasswd
UseTLS=Yes
UseSTARTTLS=Yes
FromLineOverride
哪一项取消注释, hostname是你主机名, 其实无所谓的. rewriteDomain一般就是发件人邮箱后半截.这里mailhub是发件人邮箱提供商所提供的SMTP地址, 包括端口号. 例如:
- hotmail:
smtp-mail.outlook.com:587
- gmail:
smtp.gmail.com:587
随后, 就可以使用
ssmtp receiver@mail.com
来给收件人发邮件了. 输入这个命令后, 进入输入状态, 输入完成后以Ctrl+D
结束.To: recipient_email@example.com
From: myemailaddress@gmail.com
Subject: test email
Hello World!
From:
后面有个空格哦), 发送内容在所有抬头后空一行输入.然后测试成功后, 应该没有返回信息, 如果有, 就要检查问题了. 问题会有:
- 发送人
From
部分和ssmtp指定发送人不一致. 额, 为啥都指定了还要再输入一次呢.. - 554 DT:SPM : 这个问题可就多了.. 官方解释说是
表示发件人发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。表示发件人发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件。
另外, 我在用126邮箱发给hotmail邮箱时无论怎样都会这个错, 但是不写
To:
部分倒是可以发送 (但邮件发送到ssmtp命令的邮箱后显示没有收件人(这是伪收件人,可以指定别的地址,这个地址收不到邮件的))
sudo vi /etc/ssmtp/revaliases
, 可以设置别名, 但其实也没有必要. 详细可以参考附录的reference帖子.我进一步封装了发送的方法为一个
sendmail
脚本, 输入 sendmail "receiver@qq.com" A B C
就可以根据模板改变发送对象和内容. 如果更简单, 就是将$2
替换为固定收件人邮箱, ${@:2}
替换为$@
, 这样就会接收所有参数到脚本指定部分.#! /bin/bash
echo "From: user@126.com
To: $2
Subject: Calculation result for ${@:2} from Hom-Home
The job for ${@:2} finish! Please check it soon~
" | ssmtp $2
#! /bin/bash
# Setup job running environment
source ~/setup.sh
# submit job
nohup mission $1 >> nohup.out 2>&1 &
sendmail "receiver@qq.com" Mission job $1
No comments:
Post a Comment