python发送邮件拒绝_python发送email邮件

一.开启邮箱SMTP服务

发送邮件需要使用SMTP服务器,常用的免费服务器有:163、126、qq等邮箱。

QQ邮箱配置方式如下:

1) 登录qq邮箱,选择【设置】-【账户】

1590725-20200506195454237-819189625.png

2) 在POP3/IMAP/SMAP/Exchage/CardDAV/CalDAV服务中,找到POP3/SMTP服务和IMAP/SMTP服务,点击开启。

1590725-20200506195531502-462079387.png

1590725-20200506200237790-101153426.png

1590725-20200506200259334-1305606554.png

163邮箱配置方式如下:

1)注册163邮箱,登录后设置。

1590725-20200506200458930-1183623481.png

2) 在新页面点击“客户端授权密码”,勾选“开启”,弹出新窗口填写手机验证码。

1590725-20200506200802460-158979348.png

3) 填写授权码

1590725-20200506200816783-573464515.png

4) 提示开启成功。

1590725-20200506200841930-597709191.png

二、使用python发送邮件

使用python自带的模块:smptlib、email

importsmtplibfrom email.mime.text importMIMETextfrom email.header import Header

1、发送普通的邮件

#发送邮件的步骤

importsmtplibfrom email.mime.text import MIMEText #用来构造文本类型的邮件

from email.header import Header #用来构造邮件的头部#第一步:创建一个SMTP的对象

s =smtplib.SMTP()#第二步:连接到SMTP的服务器

host = 'smtp.163.com' #设置163邮箱服务器,端口为:25

port = 25

#host = 'smtp.qq.com' port = 465 # 设置qq邮箱服务器,端口为:465

s.connect(host,port) #连接服务器#s.connect(host = 'smtp.163.com',port = 25)#第三步:登录SMTP服务器

mail_user = '18814726725@163.com' #163邮箱的用户名

mail_pass = 'password' #注意:此处填写的是邮箱的SMTP服务器授权码

s.login(user=mail_user,password=mail_pass)#第四步:构建邮件内容

content = '使用python测试发送邮件' #构建邮件内容

msg = MIMEText(content,_charset='utf8') #_charset 指定编码格式

msg['Subject'] = Header('测试报告','utf8') #邮件主题

msg['From'] = 'wl18814726725@163.com' #发件人邮箱,可传入列表,用于给多个人发送文件

msg['To'] = '1572533878@qq.com' #收件人

#第五步:发送邮件

s.sendmail(from_addr=msg['From'],to_addrs=msg['To'],msg=msg.as_string()) #将邮件内容转换为字符串

2、发送HTML格式邮件及附件

importsmtplibfrom email.mime.text import MIMEText #文本类型的邮件,用来构造邮件

from email.header import Header #用来构造邮件的头部

from email.mime.application importMIMEApplicationfrom email.mime.multipart import MIMEMultipart #用来构造附件

#发送邮件的步骤#第一步:创建一个SMTP的对象

s =smtplib.SMTP()#第二步:连接到SMTP的服务器

host = 'smtp.163.com' #设置163邮箱服务器,端口为:25

port = 25

#host = 'smtp.qq.com' # 设置qq邮箱服务器,端口为:465

s.connect(host,port) #连接服务器#第三步:登录SMTP服务器

mail_user = 'wl18814726725@163.com' #163邮箱的用户名

mail_pass = 'wl987654321' #注意:此处填写的是邮箱的SMTP服务器授权码

s.login(user=mail_user,password=mail_pass)#构造文本邮件内容

content = '使用python测试发送邮件' #构建邮件内容

textcontent = MIMEText(content,_charset='utf8') #_charset 指定编码格式#构造附件(二进制字节流形式)

part = MIMEApplication(open("report.html",'rb').read(),_subtype=None)#part = MIMEApplication(open("report.html",'rb').read()) 需要查看_subtype=None 是否会引发异常

part.add_header('content-disposition', 'attachment', filename='report18.html') #对方收到邮件之后,附件在邮件中显示的名称#封装一封邮件

msg =MIMEMultipart()#加入文本内容

msg.attach(textcontent)

msg.attach(part)#发送邮件

msg['From'] = 'wl18814726725@163.com' #发件人邮箱

msg['To'] = '1572533878@qq.com' #收件人

#第五步:发送邮件

s.sendmail(from_addr='wl18814726725@163.com',to_addrs='1572533878@qq.com',msg=msg.as_string()) #将邮件内容转换为字符串

定义send_email函数importsmtplibfrom email.mime.text import MIMEText #文本类型的邮件,用来构造邮件

from email.header import Header #用来构造邮件的头部

from email.mime.application importMIMEApplicationfrom email.mime.multipart import MIMEMultipart #用来构造附件

defsend_email(filepath):""":param filepath: #传入报告文件的路径

:return:"""

#发送邮件的步骤

#第一步:创建一个SMTP的对象

s =smtplib.SMTP()#第二步:连接到SMTP的服务器

host = 'smtp.163.com' #设置163邮箱服务器,端口为:25

port = 25

#host = 'smtp.qq.com' #设置qq邮箱服务器,端口为:465

s.connect(host,port) #连接服务器

#第三步:登录SMTP服务器

mail_user = 'wl18814726725@163.com' #163邮箱的用户名

mail_pass = 'wl987654321' #注意:此处填写的是邮箱的SMTP服务器授权码

s.login(user=mail_user,password=mail_pass)#构造文本邮件内容

content = '使用python测试发送邮件' #构建邮件内容

textcontent = MIMEText(content,_charset='utf8') #_charset 指定编码格式

#构造附件(二进制字节流形式)

part = MIMEApplication(open(filepath,'rb').read())

part.add_header('content-disposition', 'attachment', filename='report988.html') #对方收到邮件之后,附件在邮件中显示的名称

#封装一封邮件

msg =MIMEMultipart()#加入附件和文本内容

msg.attach(textcontent)

msg.attach(part)#发送邮件

msg['From'] = 'wl18814726725@163.com' #发件人邮箱

msg['To'] = '1572533878@qq.com' #收件人

#第五步:发送邮件

s.sendmail(from_addr=msg['From'],to_addrs=msg['To'],msg=msg.as_string()) #将邮件内容转换为字符串

send_email('report.html')

定义send_email函数

importsmtplibfrom email.mime.text import MIMEText #文本类型的邮件,用来构造邮件

from email.header import Header #用来构造邮件的头部

from email.mime.application importMIMEApplicationfrom email.mime.multipart import MIMEMultipart #用来构造附件

#发送邮件的步骤#第一步:创建一个SMTP的对象

s =smtplib.SMTP()#第二步:连接到SMTP的服务器

host = 'smtp.163.com' #设置163邮箱服务器,端口为:25

port = 25

#host = 'smtp.qq.com' # 设置qq邮箱服务器,端口为:465

s.connect(host,port) #连接服务器#第三步:登录SMTP服务器

mail_user = 'wl18814726725@163.com' #163邮箱的用户名

mail_pass = 'password' #注意:此处填写的是邮箱的SMTP服务器授权码

s.login(user=mail_user,password=mail_pass)#构造文本邮件内容

content = '使用python测试发送邮件' #构建邮件内容

textcontent = MIMEText(content,_charset='utf8') #_charset 指定编码格式#构造附件(二进制字节流形式)

part = MIMEApplication(open("report.html",'rb').read(),_subtype=None)#part = MIMEApplication(open("report.html",'rb').read()) 需要查看_subtype=None 是否会引发异常

part.add_header('content-disposition', 'attachment', filename='report18.html') #对方收到邮件之后,附件在邮件中显示的名称#封装一封邮件

msg =MIMEMultipart()#加入文本内容

msg.attach(textcontent)

msg.attach(part)#发送邮件

msg['From'] = 'wl18814726725@163.com' #发件人邮箱

msg['To'] = '1572533878@qq.com' #收件人

#第五步:发送邮件

s.sendmail(from_addr='wl18814726725@163.com',to_addrs='1572533878@qq.com',msg=msg.as_string()) #将邮件内容转换为字符串

使用python发送邮件时常见错误:

错误1:smtplib.SMTPAuthenticationError: (550, b'User has no permission')

我们使用python发送邮件时相当于自定义客户端根据用户名和密码登录,然后使用SMTP服务发送邮件,新注册的163邮箱是默认不开启客户端授权的(对指定的邮箱大师客户端默认开启),因此登录总是被拒绝,解决办法(以163邮箱为例):进入163邮箱-设置-客户端授权密码-开启(授权码是用于登录第三方邮件客户端的专用密码)。上述有专门的设置方法。

错误2:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')

以163邮箱为例,在开启POP3/SMTP服务,并开启客户端授权密码时会设置授权码,将这个授权码代替smtplib.SMTP().login(user,password)方法中的password即可。

错误3:给多人发送邮件是,可能会出现“AttributeError: 'list' object has no attribute 'encode'”或者写了多个人,实际只给第一个人发了邮件等错误。

#将所有的收件人邮箱写入到一个字符串中

msg['To'] = '1668010021@qq.com, 1572533878@qq.com, wangle@kyee.com.cn, 2685083419@qq.com'

#发送邮件时,通过字符串函数split分割,分割后返回的每一个邮箱账号

s.sendmail(from_addr=msg['From'], to_addrs=msg['To'].split(','), msg=msg.as_string())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值