koo*_*gee 3 python smtp hotmail
我想从我的服务器发送一封电子邮件.我正在尝试使用我已经拥有的Hotmail帐户发送邮件.
user = "myaddress@hotmail.com"
passwd = "xxxxxxxxx"
from_addr = "myaddress@hotmail.com"
to_addr = "someaddress@gmail.com"
smtp_srv = "smtp.live.com"
subject = "Home Server Uptime"
message = "The server has been online for: %s" %(uptime)
smtp = smtplib.SMTP(smtp_srv,587)
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
smtp.login(user, passwd)
smtp.sendmail(from_addr, to_addr, message)
smtp.quit()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Traceback (most recent call last):
File "sendemail.py", line 23, in <module>
smtp.starttls()
File "/usr/lib/python2.7/smtplib.py", line 636, in starttls
(resp, reply) = self.docmd("STARTTLS")
File "/usr/lib/python2.7/smtplib.py", line 385, in docmd
return self.getreply()
File "/usr/lib/python2.7/smtplib.py", line 358, in getreply
+ str(e))
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: [Errno 104] Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决这个问题.
这是Nathan建议的set_debuglevel(1)的输出:
send: 'ehlo [127.0.1.1]\r\n'
reply: '250-BLU0-SMTP190.blu0.hotmail.com Hello [my-ip-address]\r\n'
reply: '250-TURN\r\n'
reply: '250-SIZE 41943040\r\n'
reply: '250-ETRN\r\n'
reply: '250-PIPELINING\r\n'
reply: '250-DSN\r\n'
reply: '250-ENHANCEDSTATUSCODES\r\n'
reply: '250-8bitmime\r\n'
reply: '250-BINARYMIME\r\n'
reply: '250-CHUNKING\r\n'
reply: '250-VRFY\r\n'
reply: '250-TLS\r\n'
reply: '250-STARTTLS\r\n'
reply: '250 OK\r\n'
reply: retcode (250); Msg: BLU0-SMTP190.blu0.hotmail.com Hello [my-ip-address]
TURN
SIZE 41943040
ETRN
PIPELINING
DSN
ENHANCEDSTATUSCODES
8bitmime
BINARYMIME
CHUNKING
VRFY
TLS
STARTTLS
OK
send: 'STARTTLS\r\n'
Traceback (most recent call last):
File "sendemail.py", line 24, in <module>
smtp.starttls()
File "/usr/lib/python2.7/smtplib.py", line 636, in starttls
(resp, reply) = self.docmd("STARTTLS")
File "/usr/lib/python2.7/smtplib.py", line 385, in docmd
return self.getreply()
File "/usr/lib/python2.7/smtplib.py", line 358, in getreply
+ str(e))
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: [Errno 104] Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
小智 8
试试这个
import email
import smtplib
msg = email.message_from_string('warning')
msg['From'] = "example1@hotmail.fr"
msg['To'] = "example2@hotmail.fr"
msg['Subject'] = "helOoooOo"
s = smtplib.SMTP("smtp.live.com",587)
s.ehlo() # Hostname to send for this command defaults to the fully qualified domain name of the local host.
s.starttls() #Puts connection to SMTP server in TLS mode
s.ehlo()
s.login('example1@hotmail.fr', 'pass')
s.sendmail("example1@hotmail.fr", "example2@hotmail.fr", msg.as_string())
s.quit()
Run Code Online (Sandbox Code Playgroud)
您的代码在尝试启动 TLS ( ) 时似乎失败了smtp.starttls()。我刚刚测试过smtp.live.com,我能够到达您尝试登录的代码行,因此这可能是由于您的网络设置方式所致。
这是不相关的,但根据smtplib文档,您必须在消息的开头添加from和地址标头:to
parts = ("From: " + from_addr,
"To: " + to_addr,
"Subject: " + subject,
"",
message)
msg = '\r\n'.join(parts)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15212 次 |
| 最近记录: |