Python实现邮件发送的方法
小编给大家分享一下Python实现邮件发送的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
python笔记- 发送邮件
依赖:
Python代码实现发送邮件,使用的模块是smtplib、MIMEText,实现代码之前需要导入包:
importsmtplibfromemail.mime.textimportMIMEText
使用163邮件发送邮件,具体代码实现如下:
importsmtplibfromemail.mime.textimportMIMEText'''发送邮件函数,默认使用163smtp:parammail_host:邮箱服务器,16邮箱host:smtp.163.com:paramport:端口号,163邮箱的默认端口是25:paramusername:邮箱账号xx@163.com:parampasswd:邮箱密码(不是邮箱的登录密码,是邮箱的授权码):paramrecv:邮箱接收人地址,多个账号以逗号隔开:paramtitle:邮件标题:paramcontent:邮件内容:return:'''defsend_mail(username,passwd,recv,title,content,mail_host='smtp.163.com',port=25):msg=MIMEText(content)#邮件内容msg['Subject']=title#邮件主题msg['From']=username#发送者账号msg['To']=recv#接收者账号列表smtp=smtplib.SMTP(mail_host,port=port)#连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25smtp.login(username,passwd)#登录发送者的邮箱账号,密码#参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串smtp.sendmail(username,recv,msg.as_string())smtp.quit()#发送完毕后退出smtpprint('emailsendsuccess.')if__name__=='__main__':email_user='xxxx@163.com'#发送者账号email_pwd='xxxxx'#发送者密码,授权码maillist='xxxx@qq.com'title='测试邮件标题'content='这里是邮件内容'send_mail(email_user,email_pwd,maillist,title,content)
163邮箱的授权码获取方法如下:
1. 登录163邮箱,点击设置-POP3/SMTP/IMAP,如下:
2. 开启SMTP服务且可以查询SMTP的host地址:
3. 点击客户端授权密码,可以重置授权码:
使用QQ邮件发送邮件,具体代码实现如下:
importsmtplibfromemail.mime.textimportMIMEText'''发送邮件函数,默认使用163smtp:parammail_host:邮箱服务器,qq邮箱host:smtp.qq.com:paramport:端口号,qq邮箱的默认端口是:456:paramusername:邮箱账号xx@163.com:parampasswd:邮箱密码(不是邮箱的登录密码,是邮箱的授权码):paramrecv:邮箱接收人地址,多个账号以逗号隔开:paramtitle:邮件标题:paramcontent:邮件内容:return:'''#qq邮箱发送邮件defsend_mail(username,passwd,recv,title,content,mail_host='smtp.qq.com',port=456):msg=MIMEText(content)#邮件内容msg['Subject']=title#邮件主题msg['From']=username#发送者账号msg['To']=recv#接收者账号列表smtp=smtplib.SMTP_SSL(mail_host,port=port)#连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25smtp.login(username,passwd)#登录发送者的邮箱账号,密码#参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串smtp.sendmail(username,recv,msg.as_string())smtp.quit()#发送完毕后退出smtpprint('emailsendsuccess.')if__name__=='__main__':email_user='xxx@qq.com'#发送者账号email_pwd='WOSHINIGE123'#发送者密码,授权码maillist='xxxx@qq.com'title='测试邮件标题'content='这里是邮件内容'send_mail(email_user,email_pwd,maillist,title,content)
多个收件人且带附件:
#importsmtplib#fromemail.mime.textimportMIMEText#'''#发送邮件函数,默认使用163smtp#:parammail_host:邮箱服务器,qq邮箱host:smtp.163.com#:paramport:端口号,qq邮箱的默认端口是:25#:paramusername:邮箱账号xx@163.com#:parampasswd:邮箱密码(不是邮箱的登录密码,是邮箱的授权码)#:paramrecv:邮箱接收人地址,多个账号以逗号隔开#:paramtitle:邮件标题#:paramcontent:邮件内容#:return:#'''importsmtplibfromemail.mime.textimportMIMETextfromemail.mime.multipartimportMIMEMultipart#邮箱服务器地址email_host='smtp.163.com'#发送者email_user='xxxx@163.com'#授权码email_pwd='WOSHINIGE123'#多个收件人,使用分号分隔maillist='xxxx@qq.com;aaaa@qq.com'#对多个收件人进行分割,以;为标准,返回结果是list['xxxx@qq.com','aaaa@qq.com']email_info=maillist.split(';')#构造一个发附件的邮件内容对象new_msg=MIMEMultipart()#邮件正文内容new_msg.attach(MIMEText('testemail.....'))#邮件主题new_msg['Subject']='testemail'#邮件发送者new_msg['From']=email_user#邮件接收者,多个收件人的账号使用,连接,传入类型是strnew_msg['To']=','.join(email_info)#打开a.txt读取文本内容att=MIMEText(open('a.txt').read())att["Content-Type"]='application/octet-stream'#发送附件就得这么写,固定格式,filename指定附件的名字att["Content-Disposition"]='attachment;filename="haha.txt"'new_msg.attach(att)#连接邮箱,传入邮箱地址,和端口号,smtp的端口号是25smtp=smtplib.SMTP(email_host,port=25)#发送者的邮箱账号,密码,先登录smtp.login(email_user,email_pwd)smtp.sendmail(email_user,email_info,new_msg.as_string())smtp.quit()print('emailsendsuccess.')
多个收件人时账号之间使用分号;分割,进行smtp.sendmail(传入的多个收件人类型是list);new_msg['TO'] = recv,接收的类型是str。
使用类实现邮件的发送,即可发送多人也可发送附件:
importsmtplibfromemail.mime.textimportMIMETextfromemail.mime.multipartimportMIMEMultipartclassSendMail(object):def__init__(self,username,passwd,recv,title,content,file=None,email_host='smtp.163.com',port=25):self.username=usernameself.passwd=passwdself.recv=recvself.title=titleself.content=contentself.file=fileself.email_host=email_hostself.port=portdefsend_mail(self):msg=MIMEMultipart()#发送内容的对象ifself.file:#处理附件的att=MIMEText(open(self.file,encoding='utf-8').read())att["Content-Type"]='application/octet-stream'att["Content-Disposition"]='attachment;filename="%s"'%self.filemsg.attach(att)msg.attach(MIMEText(self.content))#邮件正文的内容msg['Subject']=self.title#邮件主题msg['From']=self.username#发送者账号#将多个账号'aaa.@qq.com;bbbb@163.com'以分号分割,分割为listself.recv=self.recv.split(';')ifisinstance(self.recv,list):msg['To']=','.join(self.recv)else:msg['To']=self.recv#接收者账号列表ifself.username.endswith('qq.com'):#如果发送者是qq邮箱self.smtp=smtplib.SMTP_SSL(self.email_host,port=self.port)else: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())exceptExceptionase:print('出错了。。',e)else:print('发送成功!')self.smtp.quit()if__name__=='__main__':m=SendMail(username='zzzzz@163.com',passwd='xxxxxxx',file='a.txt',recv='xxxxxx@qq.com;xxxxxx@qq.com',title='多个收件人',content='哈哈哈啊哈哈哈哈',email_host='smtp.163.com',port=25)m.send_ma
以上是Python实现邮件发送的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。