利用python发送邮件,python发送电子邮件
在学习如何使用python发送邮件之前,首先要知道什么是授权码
授权码是用于登录第三方邮件客户端的专用密码
网易通过邮箱获取授权码的方式
如何通过qq邮箱获取授权码
接下来,我们来看看如何使用python自动发送邮件
导入smtplib
从email.mime.text导入MIMEText
Mail= smtp.163.com #邮箱服务器地址
用户名发送=测试@163.com #电子邮件用户名
密码=XXXX #电子邮件密码:需要授权码
Username_recv=test@qq.com #收件人,多个收件人用逗号分隔
Mail=MIMEText(这是发送邮件的内容)
Mail[Subject]=这是邮件的主题
mail[ From ]=username _ send # sender
Mail[To]=username_recv #收件人;[]中有三个是固定写法别问为什么,我只是代码的搬运工
Smtp=smtplib.smtp(邮件服务器,端口=25) #连接邮箱服务器,Smtp的端口号为25
# SMTP=SMTP lib . SMTP _ SSL( SMTP . QQ . com ,port=465)# QQ邮箱的服务器和端口号
Smtp.login(用户名_发送,密码)#登录邮箱
smtp.sendmail (username _ send,username _ recv,mail.as _ string ()) #的参数分别是发送方和接收方,第三个是把上面发送的邮件内容变成一个字符串
发送后退出smtp.quit() #
打印后发送邮件(“成功”)
升级邮件内容,我们会发一封带附件的邮件
导入smtplib
导入base64
从email.mime.text导入MIMEText
从email.mime.multipart导入MIMEMultipart
Mail= smtp.163.com #邮箱服务器地址
username _ send= mape ipei 04265 @ 163 . com #电子邮件用户名
Password=las0312e #电子邮件密码:需要授权码
username _ recv= 272932709 @ QQ . com #收件人,多个收件人之间用逗号分隔
mail=MIMEMultipart()
# file=r e:\ \ testpy \ \ python-MPP \ \ day 8 \ \ practice \ \ sendmail . py
# att=mimetext(打开(文件,编码= UTF-8 )read ()) #这个只能发py或者txt附件,比较复杂的会报错
file=r e:\ \ testpy \ \ python-MPP \ \ day 7 \ \ job \ \ data \ \ MPP . xls
Att=mimetext (open (file, rb )read(), base64 , UTF-8) #这可以发送复杂的附件,比如表格
att[内容类型]=应用程序/八位字节流
#这一行处理附件的格式不知道为什么这样写,但是如果不写收到的附件就不是表格样式了
new_file==?utf-8?“乙,”base64.b64encode(file.encode())decode()?=
att[Content-Disposition]=附件;filename=“% s”% new _ file
邮件.附件(附件)
Mail.attach(MIMEText(这是带附件的邮件正文,假装很长)#邮件正文的内容
Mail[Subject]=这是邮件的主题
mail[ From ]=username _ send # sender
Mail[To]=username_recv #收件人;[]中有三个是固定写法别问为什么,我只是代码的搬运工
Smtp=smtplib.smtp(邮件服务器,端口=25) #连接邮箱服务器,Smtp的端口号为25
# SMTP=SMTP lib . SMTP _ SSL( SMTP . QQ . com ,port=465)# QQ邮箱的服务器和端口号
Smtp.login(用户名_发送,密码)#登录邮箱
smtp.sendmail (username _ send,username _ recv,mail.as _ string ()) #的参数分别是发送方和接收方,第三个是把上面发送的邮件内容变成一个字符串
发送后退出smtp.quit() #
打印后发送邮件(“成功”)
最后装上一个老师打包的邮箱功能,用的时候直接调用
导入smtplib,os
从email.mime.text导入MIMEText
从email.mime.multipart导入MIMEMultipart
导入base64
类SendMail(对象):
def __init__(自己,用户名,密码,接收,标题,内容,
file=None,ssl=False,
email_host=smtp.qq.com ,port=25,ssl_port=465):
:param用户名:用户名
:param passwd:密码
:param recv:收件人,要发送的列表的多个[a@qq.com,b@qq.com]
:参数标题:消息标题
:param内容:消息正文
:param文件:附件路径如果它不在当前目录中,请写一个绝对路径默认没有附件
:param ssl:链接是否安全;默认为正常
:param email_host: smtp服务器地址,默认为163服务器
:参数端口:非安全链接端口,默认为25
:param ssl_port:安全链接端口,默认为465
self.username=用户名#用户名
self.passwd=passwd #密码
self.recv=recv #收件人,多个要传列出[a@qq.com,b@qq.com]
self.title=title #邮件标题
self.content=内容#邮件正文
self.file=file #附件路径,如果不在当前目录下,要写绝对路径
自我电子邮件主机=电子邮件主机# SMTP服务器地址
self.port=port #普通端口
self.ssl=ssl #是否安全链接
self.ssl_port=ssl_port #安全链接端口
定义发送邮件(自己):
msg=MIMEMultipart()
#发送内容的对象
if self.file:#处理附件的
文件名=操作系统路径分裂(自我文件)[-1]#只取文件名,不取路径
尝试:
f=open(self.file, rb ).阅读()
例外情况为e:
引发异常(附件打不开!)
否则:
att=MIMEText(f, base64 , utf-8 )
属性[内容类型]=应用程序/八位字节流
# base64b 64编码(文件名encode()).解码()
new_file_name==?utf-8?"乙,“base64b 64编码(文件名encode()).decode()?=
#这里是处理文件名为中文名的,必须这么写
att[内容处置]=附件;文件名=%s%(新文件名)
消息附加(附件)
味精附加(mime文本(自身内容))#邮件正文的内容
消息[主题]=self.title #邮件主题
msg[From]=self.username #发送者账号
消息[到]=, .加入(self.recv) #接收者账号列表
if self.ssl:
self.smtp=smtplib .SMTP_SSL(self.email_host,port=self.ssl_port)
否则:
self.smtp=smtplib .SMTP(self.email_host,port=self.port)
#发送邮件服务器的对象
self.smtp.login(self.username,self.passwd)
尝试:
自我SMTPsendmail(自己用户名,self.recv,msg.as_string())
及格
例外情况为e:
打印(出错了e)
否则:
打印(发送成功!)
self.smtp.quit()
if __name__==__main__ :
m=SendMail(
用户名=test@qq.com,
passwd=xxxxx
x ,
recv=[test001@163.com , test002@qq.com],
title=发送邮件20180205,
内容=测试发送邮件,qq发件,接收方一个是163邮箱,另一个是即时通信软件邮箱。20180205,
file=r e:\ \ testpy \ \ python-MPP \ \第7天\ \作业\\data\\mpp.xls ,
ssl=True,
)
发送邮件()
转载于:https://www。cnblogs。com/MPP 0905/p/8419869。超文本标记语言
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。