我用python发邮件。出现以下问题,求解答 10

send:'ehlo[172.22.166.1]\r\n'Traceback(mostrecentcalllast):File"<stdin>",line1,in<mod... send: 'ehlo [172.22.166.1]\r\n'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python27\lib\smtplib.py", line 582, in login
self.ehlo_or_helo_if_needed()
File "D:\Python27\lib\smtplib.py", line 542, in ehlo_or_helo_if_needed
if not (200 <= self.ehlo()[0] <= 299):
File "D:\Python27\lib\smtplib.py", line 414, in ehlo
(code, msg) = self.getreply()
File "D:\Python27\lib\smtplib.py", line 368, in getreply
raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
展开
 我来答
柏影abc123
2018-04-11 · TA获得超过1万个赞
知道小有建树答主
回答量:97
采纳率:100%
帮助的人:4.4万
展开全部

1、准备两个邮箱帐号,一个是常用的(接收端),另一个可以注册网易163邮箱或者foxmail邮箱也可(发送端),本次我使用两个QQ邮箱进行演示。

2、在邮箱的设置

3、账户中开启SMTP功能,如下图:

4、点击生成授权码,按照弹出窗口的提示发送短信,发送后单击我已发送按钮。

5、将生成的授权码复制下来以备接下来使用。如下图:

6、我们来编辑代码:

from email.header import Header

from email.mime.text import MIMEText

from email.utils import parseaddr,formataddr

import smtplib

def _format_addr(s):    

name,addr = parseaddr(s)    

return formataddr((Header(name,'utf-8').encode(),addr))

#发件人地址

from_addr = '10******10@qq.com'

#密码刚才复制的邮箱的授权码

password = 'u*******************g'

#收件人地址

to_addr =  '10********28@qq.com'

#邮箱服务器地址

smtp_server = 'smtp.qq.com'

#设置邮件信息

msg = MIMEText('Python爬虫运行异常,异常信息为遇到HTTP 403','plain','utf-8')

msg['From'] = _format_addr('Python爬虫一号<%s>'%from_addr)

msg['To'] = _format_addr('管理员<%s>'%to_addr)

msg['Subject'] = Header('一号爬虫运行异常.','utf-8').encode()

#发送邮件

server = smtplib.SMTP_SSL(smtp_server,465)

#打印出和SMTP服务器交互的所有信息

server.set_debuglevel(1)

#登录SMTP服务器

server.login(from_addr,password)

#sendmail():发送邮件,由于可以一次发给多个人,所以传入一个list邮件正文是一个str,as_string()把MIMEText对象变成str。

server.sendmail(from_addr,to_addr,msg.as_string())server.quit()print('邮件发送成功!')

7、登录接收端邮箱,查看是否发送成功,如下图:

8、如果能成功收到邮件的话就说明完成了。

flyzjw369
2018-08-21 · TA获得超过114个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:134万
展开全部

我也遇到这样的问题,看网上是说在login方法前面加上两行代码

smtp.ehlo()

smtp.starttls()

就可以了。

原文博客地址网页链接

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yofon
2015-04-13
知道答主
回答量:4
采纳率:0%
帮助的人:5万
展开全部
提示对方邮件服务器意外关闭,
可能断网了或其他原因不能连接,如果以前能连接的,只不过有时不能,就把连接代码加入try{}中吧
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式