使用mutt定时发送html格式的邮件
html格式的邮件写入
def write_email():
today = datetime.datetime.today()
#with open('today_info'+' '+today.strftime('%Y-%m-%d')+'.txt', 'a') as f:
weather_list = get_weather()
wbtop_list_url, wbtop_list = get_weibotop10()
hptop_list_url, hptop_list = get_huputop10()
ezutop_list_url, ezutop_list = get_ezutop10()
bdtop_list_url, bdtop_list = get_baidutop10()
mail_msg = ''
mail_msg+=('<div>今天是%d年%d月%d日,下面是今天的天气与各平台热点。</div>' %(today.year, today.month, today.day))
mail_msg+=("<div><br></div>")
mail_msg+=("<div>今日天气:</div>")
tplt = "<div>{0:10}\t{1:5}\t{2:5}\t{3:5}\t{4:5}</div>"
for each in weather_list:
weatherInTime = each.split(",")
mail_msg+=(tplt.format(weatherInTime[0],weatherInTime[2],weatherInTime[3],weatherInTime[4],weatherInTime[5], chr(12288)))
mail_msg+=("<div><br></div>")
mail_msg+=("<div>今日百度热点时事新闻:</div>")
mail_msg+=("<ul>")
for i in range(10):
mail_msg+=('<li><a href="{}">{}</a></li>'.format(bdtop_list_url[i].strip('\n'), bdtop_list[i].strip('\n'), chr(12288)))
mail_msg+=("</ul>")
mail_msg+=("<div><br></div>")
mail_msg+=("<div>今日微博热搜:</div>")
mail_msg+=("<ul>")
for i in range(1, len(wbtop_list)):
mail_msg+=('<li><a href="{}">{}</a></li>'.format(wbtop_list_url[i].strip('\n'), wbtop_list[i].strip('\n'), chr(12288)))
mail_msg+=("</ul>")
mail_msg+=("<div><br></div>")
mail_msg+=("<div>今日虎扑步行街热点:</div>")
mail_msg+=("<ul>")
for i in range(len(hptop_list)):
mail_msg+=('<li><a href="{}">{}</a></li>'.format(hptop_list_url[i].strip('\n'), hptop_list[i].strip('\n'), chr(12288)))
mail_msg+=("</ul>")
mail_msg+=("<div><br></div>")
mail_msg+=("<div>今日豆瓣鹅组热点:</div>")
mail_msg+=("<ul>")
for i in range(len(ezutop_list)):
mail_msg+=('<li><a href="{}">{}</a></li>'.format(ezutop_list_url[i].strip('\n'), ezutop_list[i].strip('\n'), chr(12288)))
mail_msg+=("</ul>")
mail_msg+=("<div><br></div>")
#print(mail_msg)
return mail_msg
非常简单粗暴的写入。格式可以参考菜鸟教程和qq邮箱代码试图下的邮件内容。
mutt发送html格式的邮件
cat /home/lin/文档/today_info.html | mutt -s "今日天气与要文" -e 'set content_type="text/html"' $YOURADDRESS$
加上一个参数-e 'set content_type="text/html"'即可。
crontab无法执行的问题
经过测试,发现crontab无法在约定的时间执行shell脚本。通过sudo service cron status查看状况,发现报错:(CRON) info (No MTA installed, discarding output)。报错的主要原因是没有配置邮件服务器。
通过sudo apt-get install postfix安装了邮件服务器后,发现问题变成: warning: unable to look up public/pickup: No such file or directory。搜索了一下可能是权限不够的问题,于是给予权限:chmod +x everydaynews.sh。
然而还是没有解决问题。经过搜索,最后发现是还得需要配置好邮件客户端,这样报错信息可以通过邮件推送(比较针对运维),如果不配置的话把报错信息输入log文件里也可以。最后写成这样:
33 18 * * * python3 /home/lin/everydaynews.py >> /home/lin/log.txt
重新启动crontab,可以实现了。这一段可以参考下面的页面:
原文链接:https://blog.csdn.net/u012129468/article/details/77926701