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

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

 

使用email模块和smtplib模块,内容比较固定,配好了即可实现,代码如下:

一、普通邮件发送 import smtplib from email.mime.text import MIMEText email_host = 'smtp.163.com'     #邮箱地址 email_user = 'XXX@163.com'  # 发送者账号 email_pwd = 'XXX'  # 发送者的密码 maillist ='XXX@XXXX.com' #收件人邮箱,多个账号的话,用逗号隔开 me = email_user msg = MIMEText('这是个python测试邮件,不用回复。')    # 邮件内容 msg['Subject'] = 'python测试'    # 邮件主题 msg['From'] = me    # 发送者账号 msg['To'] = maillist    # 接收者账号列表 smtp = smtplib.SMTP(email_host,port=25) # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25 smtp.login(email_user, email_pwd)   # 发送者的邮箱账号,密码 smtp.sendmail(me, maillist, msg.as_string()) # 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串 smtp.quit() # 发送完毕后退出smtp print ('email send success.') 注意 1. 发送者密码这里不是平时登录邮箱的密码,而是开启登录第三方邮件客户端的授权码。 2. 多数邮箱的smtp的端口号都是25,个别的请具体确认。 发邮件的代码封装成函数:
import smtplib from email.mime.text import MIMEText def send_mail(username, passwd, recv, title, content, mail_host='smtp.163.com', port=25):     '''     发送邮件函数,默认使用163smtp     :param username: 邮箱账号 xx@163.com     :param passwd: 邮箱密码     :param recv: 邮箱接收人地址,多个账号以逗号隔开     :param title: 邮件标题     :param content: 邮件内容     :param mail_host: 邮箱服务器     :param port: 端口号     :return:     '''     msg = MIMEText(content)  # 邮件内容     msg['Subject'] = title  # 邮件主题     msg['From'] = username  # 发送者账号     msg['To'] = recv  # 接收者账号列表     smtp = smtplib.SMTP(mail_host, port=port)  # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25     smtp.login(username, passwd)  # 发送者的邮箱账号,密码     smtp.sendmail(username, recv, msg.as_string())     # 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串     smtp.quit()  # 发送完毕后退出smtp     print('email send success.') email_user = 'xxxx@163.com'  # 发送者账号 email_pwd = 'xxxxx'  # 发送者密码 maillist = 'XXX@XXX.com' title = '测试邮件标题' content = '这里是邮件内容' send_mail(email_user, email_pwd, maillist, title, content)
二、发带附件的邮件
import smtplib #smtplib这个模块是管发邮件 from email.mime.text import MIMEText #构造邮件内容 from email.mime.multipart import MIMEMultipart #发带附件的邮件用的 email_host = 'smtp.163.com'     #邮箱服务器地址 email_user = 'XXX@163.com'  # 发送者账号 email_pwd = 'XXX' # 发送者密码是邮箱的授权码,不是登录的密码 maillist = 'XXX@XXX.com' #收件人邮箱,多个账号的话,用逗号隔开 new_msg = MIMEMultipart() #构建了一个能发附件的邮件对象 new_msg.attach(MIMEText('这是Python测试发邮件的邮件,不要回复')) # 邮件内容 new_msg['Subject'] = 'Python测试邮件带附件'    # 邮件主题 new_msg['From'] = email_user    # 发送者账号 new_msg['To'] = maillist    # 接收者账号列表 att = MIMEText(open('like_report.txt').read()) att["Content-Type"] = 'application/octet-stream' att["Content-Disposition"] = 'attachment; filename="haha.txt"' new_msg.attach(att) smtp = smtplib.SMTP(email_host,port=25) # 连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25 smtp.login(email_user, email_pwd)   # 发送者的邮箱账号,密码 smtp.sendmail(email_user, maillist, new_msg.as_string()) # 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串 smtp.quit() # 发送完毕后退出smtp print ('email send success.')
三、封装发送邮件的类并验证
class SendMail(object):     def __init__(self,username,passwd,recv,title,content,                  file=None,                  email_host='smtp.163.com',port=25):         self.username = username         self.passwd = passwd         self.recv = recv         self.title = title         self.content = content         self.file = file         self.email_host = email_host         self.port = port     def send_mail(self):         msg = MIMEMultipart()         #发送内容的对象         if self.file:#处理附件的             att = MIMEText(open(self.file).read())             att["Content-Type"] = 'application/octet-stream'             att["Content-Disposition"] = 'attachment; filename="%s"'%self.file             msg.attach(att)         msg.attach(MIMEText(self.content))#邮件正文的内容         msg['Subject'] = self.title  # 邮件主题         msg['From'] = self.username  # 发送者账号         msg['To'] = self.recv  # 接收者账号列表         self.smtp = smtplib.SMTP(self.email_host,port=self.port)         #发送邮件服务器的对象         self.smtp.login(self.username,self.passwd)         try:             self.smtp.sendmail(self.username,self.recv,msg.as_string())         except Exception as e:             print('出错了。。',e)         else:             print('发送成功!')     def __del__(self):         self.smtp.quit() if __name__ == '__main__':     m = SendMail(         username='XXX@163.com',passwd='XXX',recv='XXX@XXX.com',         title='新鞋的发送邮件',content='哈哈哈啊哈哈哈哈',file='like_report.txt'     )     m.send_mail()
 

转载于:https://www.cnblogs.com/houzhizhe/p/7458960.html

你可能感兴趣的文章
面向对象1
查看>>
编程开发之--java多线程学习总结(5)
查看>>
register_globals(全局变量注册开关)
查看>>
as3调用外部swf里的类的方法
查看>>
如何让 zend studio 10 识别 Phalcon语法并且进行语法提示
查看>>
任意阶幻方(魔方矩阵)C语言实现
查看>>
视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
查看>>
第五次作业
查看>>
织梦教程
查看>>
杭电多校 Harvest of Apples 莫队
查看>>
java 第11次作业:你能看懂就说明你理解了——this关键字
查看>>
C/C++心得-结构体
查看>>
函数名作为参数传递
查看>>
apt-get for ubuntu 工具简介
查看>>
数值计算算法-多项式插值算法的实现与分析
查看>>
day8-异常处理与网络编程
查看>>
Python基础-time and datetime
查看>>
Linux epoll 笔记(高并发事件处理机制)
查看>>
shell脚本练习01
查看>>
WPF图标拾取器
查看>>