今天在尝试使用python发送邮件,在网上看了很多教程,发觉对于初学者的我有点复杂和代码比较麻烦,而且也没有太多的注释告诉我这是干嘛用的,用法是什么
这个教程十分简单,但是我足够应付我日常工作的需要了,作为运维,我要的功能只是能够发送邮件并且正确显示其内容就够,不需要太多花俏的东西。
测试的准备工作是,我在虚拟机下把w的命令输出重定向到一个文件,作为邮件body体的发送内容。
w > msg.log
[root@test-A tmp]# cat msg.log
02:48:50 up 10:11, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.178.1 02:48 0.00s 0.06s 0.00s w
[root@test-A tmp]#
以下是python的内容:
#!/usr/bin/python import smtplib #导入模块 mailfrom=‘qxxxxx@126.com‘ #定义发件人,收件人,密码 mailto=‘qwwww@gmail.com‘ passwd=‘abcdefg‘ subject=‘this is a test‘ #定义主题 body=open(‘msg.log‘).read() #读取文件的内容作为body信息 msg="""From:%s #定义发邮件的格式 TO:%s Subject:%s %s """ % (mailfrom,mailto,subject,body) #把变量传入到格式中 smtp=smtplib.SMTP() smtp.connect(‘smtp.126.com‘) #连接到126的邮箱服务器 smtp.login(mailfrom,passwd) #登陆邮箱 smtp.sendmail(mailfrom,mailto,msg) #发送邮件
搞掂,这样就可以收到邮件了,但是在查看结果前,先要说明几个重点。
msg这个变量的格式完成后,必须是这样的:
>>> print msg From:qxxxxx@126.com #必须不与上面留空行 TO:qwwww@gmail.com Subject:this is a test #必须与上部分留空行 02:48:50 up 10:11, 1 user, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.178.1 02:48 0.00s 0.06s 0.00s w
如果不注意这些细节,会造成邮件接收是可能会是没有标题或标题错乱!
还有,msg不一定要用我这种字符串的处理方法,可以使用其他方法如列表和split,\n这样组合生成,但是生成后的格式应该要是一样的,就是说,条条大路通罗马~~只是我用了比较懒的方法
***这种生产环境中应该要有更多的try-except去判断流程的成功性,这里没有给出!!
好了,查看结果:
本文出自 “要做一只博学多才的运维狗” 博客,请务必保留此出处http://kekeung.blog.51cto.com/2339469/1577112
原文地址:http://kekeung.blog.51cto.com/2339469/1577112