首页 > 代码库 > python最简单的发邮件方式(不带附件)

python最简单的发邮件方式(不带附件)

今天在尝试使用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去判断流程的成功性,这里没有给出!!



好了,查看结果:


wKioL1RoJEngwjiBAAEpsTSK5bw421.jpg


本文出自 “要做一只博学多才的运维狗” 博客,请务必保留此出处http://kekeung.blog.51cto.com/2339469/1577112

python最简单的发邮件方式(不带附件)