今天在尝试使用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/pythonimport 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:%sSubject:%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.comSubject:this is a test                                        #必须与上部分留空行 02:48:50 up 10:11,  1 user,  load average: 0.00, 0.00, 0.00USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHATroot     pts/0    192.168.178.1    02:48    0.00s  0.06s  0.00s w

如果不注意这些细节,会造成邮件接收是可能会是没有标题或标题错乱!

还有,msg不一定要用我这种字符串的处理方法,可以使用其他方法如列表和split,\n这样组合生成,但是生成后的格式应该要是一样的,就是说,条条大路通罗马~~只是我用了比较懒的方法

***这种生产环境中应该要有更多的try-except去判断流程的成功性,这里没有给出!!

好了,查看结果: