博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python发送邮件
阅读量:5426 次
发布时间:2019-06-15

本文共 3614 字,大约阅读时间需要 12 分钟。

我们在开发程序的时候,有时候需要开发一些自动化的任务,执行完之后,将结果自动的发送一份邮件,python发送邮件使用smtplib模块,是一个标准包,直接import导入使用即可,代码如下:

1 import smtplib 2 from email.mime.text import MIMEText 3 # 构造邮件内容 4 email_host = 'smtp.163.com'  # 邮箱smtp地址 5 email_user = 'xxxxxxx@163.com'  # 发送者账号 6 email_pwd = 'xxxxxxx'  # 发送者密码 7 maillist = 'xxxxxxx@qq.com' 8 # 收件人邮箱,多个账号的话,用英文逗号隔开 9 me = email_user10 msg = MIMEText('hello')  # 邮件内容11 # mintest实例化了,实例化给msg12 msg['Subject'] = '我是潘美丽'  # 邮件主题13 msg['From'] = me  # 发送者账号14 msg['To'] = maillist  # 接收者账号列表15 smtp = smtplib.SMTP(email_host, port=25)  # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是2516 smtp.login(email_user, email_pwd)  # 发送者的邮箱账号,密码17 smtp.sendmail(me,maillist,msg.as_string())18 # 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串19 smtp.quit()  # 发送完毕后退出smtp20 print('email send success.')

下面是发送带附件的邮件:

1 import smtplib 2 from email.mime.text import MIMEText 3 # 构造邮件内容 4 from email.mime.multipart import MIMEMultipart 5 # 发带附件的邮件用的 6 email_host = 'smtp.163.com'  # 邮箱地址 7 email_user = 'xxxxxxx@163.com'  # 发送者账号 8 email_pwd = 'xxxxxxx'  # 发送者密码 9 maillist = 'xxxxxxx@qq.com'10 # 收件人邮箱,多个账号的话,用英文逗号隔开11 new_masg=MIMEMultipart()12 # 构建了一个能发附件的对象13 new_masg.attach(MIMEText('此邮件中有附件'))14 # 邮件内容15 16 me = email_user17 # msg = MIMEText('hello')  # 邮件内容18 # mintest实例化了,实例化给msg19 new_masg['Subject'] = '我是潘美丽'  # 邮件主题20 new_masg['From'] = me  # 发送者账号21 new_masg['To'] = maillist  # 接收者账号列表22 att=MIMEText(open('a.txt').read())23 att["Content-Type"] = 'application/octet-stream'24 #发送附件就得这么写25 att["Content-Disposition"] = 'attachment; filename="a.txt"'26 new_masg.attach(att)27 smtp = smtplib.SMTP(email_host, port=25)  # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是2528 smtp.login(email_user, email_pwd)  # 发送者的邮箱账号,密码29 smtp.sendmail(me,maillist,new_masg.as_string())30 # 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串31 smtp.quit()  # 发送完毕后退出smtp32 print('email send success.')

当然,我们可以封装成一个函数,使用的时候,直接调用函数,传入邮箱账号密码,收件人,发件人,标题,附件和内容即可。

1 import smtplib 2 from email.mime.text import MIMEText 3 # 构造邮件内容 4 from email.mime.multipart import MIMEMultipart 5 class SendMail(object): 6     def __init__(self,username,passwd,recv,content,title,file=None, 7                  email_host='smtp.163.com',port=25): 8         self.username = username     # 发送者账号 9         self.passwd = passwd         # 发送者密码10         self.recv = recv             # 接收邮件账号11         self.title = title           # 邮件主题12         self.file = file             # 附件13         self.content = content       # 邮件内容14         self.email_host = email_host     #smtp15         self.port = port16     def send_mail(self):17         # 一下是发送附件内容18         msg=MIMEMultipart()19         if self.file:20             att = MIMEText(open(self.file).read())          # 附件有可能不存在,所以需要try一下21             att["Content-Type"] = 'application/octet-stream'22             # 发送附件就得这么写23             att["Content-Disposition"] = 'attachment; filename="%s"'%self.file24 25             msg.attach(att)26         # 以下是写正文27         msg.attach(MIMEText(self.content))28         msg['Subject'] = self.title # 邮件主题29         msg['From'] = self.username  # 发送者账号30         msg['To'] = self.recv  # 接收者账号列表31         self.smtp=smtplib.SMTP(self.email_host,port=self.port)32         # 发送邮件服务的对象33         self.smtp.login(self.username,self.passwd)34         self.smtp.sendmail(self.username,self.recv,msg.as_string())35     def __del__(self):36         self.smtp.quit()37 38 m=SendMail(39     username='xxxxxx@163.com',passwd='xxxxxxx',recv='xxxxxx@qq.com',40     title='这个是类发的邮件',content='潘阳是大美女',email_host='smtp.163.com')41 m.send_mail()

这个类中没有做异常处理,小伙伴们可以自己做一下异常处理.

转载于:https://www.cnblogs.com/panpan0301/p/7215743.html

你可能感兴趣的文章
SGU 275 To xor or not to xor
查看>>
[学习笔记]设计模式之Factory Method
查看>>
删除过期备份报错RMAN-06207 RMAN-06208解决方案
查看>>
创意无限!一组网页边栏过渡动画【附源码下载】
查看>>
Java_Hello World
查看>>
建造者模式
查看>>
Python:tesserocr 在 windows 下的安装及简单使用
查看>>
周周总结——时时更新(第4学期,第4周)
查看>>
在ubuntu12.04,64位中安装lnmp一键包mysql的问题
查看>>
一级关联数组转化成多层子级数组
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
八:Razor(MVC框架视图引擎)
查看>>
java代码编辑器 pdf文件预览 主流SSM 代码生成器 shrio redis websocket即时通讯
查看>>
final
查看>>
Win8下更改Chrome缓存目录
查看>>
django框架小技巧
查看>>
(八)8-3多线程共享变量
查看>>
Parameter配置文件获取
查看>>
[Operating System] {ud923} P3L1: Scheduling
查看>>
java后端发送http请求使用RestTemplate
查看>>