使用Python通过GoDaddy发送邮件

1 投票
4 回答
6442 浏览
提问于 2025-04-18 15:04

这是我用来通过GoDaddy发送邮件的代码:

import smtplib

server = smtplib.SMTP('smtpout.secureserver.net', 465)
server.starttls()
server.ehlo()
server.login("username", "password")
msg = "Please work!!!!!!"
fromaddr = "fromemail"
toaddr = "toemail"
server.sendmail(fromaddr, toaddr, msg)

当我运行这个脚本时,出现了这个错误:

Traceback (most recent call last):
File "emailTest.py", line 3, in <module>
server = smtplib.SMTP('smtpout.secureserver.net', 465)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py",      line 250, in __init__
(code, msg) = self.connect(host, port)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py", line 311, in connect
(code, msg) = self.getreply()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py", line 362, in getreply
raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed

我对此真的很困惑,我知道我的登录信息是正确的。

4 个回答

0

这是一个可以正常工作的完整代码。

import smtplib`enter code here`
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

msg = MIMEMultipart()
msg.set_unixfrom('author')
msg['From'] = 'your email'
msg['To'] = 'xyz@mail.com'
msg['Subject'] = 'simple email in python'
message = 'here is the email'
msg.attach(MIMEText(message))

mailserver = smtplib.SMTP_SSL('smtpout.secureserver.net', 465)
mailserver.ehlo()
mailserver.login('your email', 'password')
response = mailserver.sendmail('from@mail.com','to@mail.com',msg.as_string())
mailserver.quit()
2

乔的代码对我来说很好用。唯一需要改动的就是那些导入语句:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

然后一切都正常了!谢谢你,乔。

(抱歉我不能留评论或点赞 - 我的信誉还不够高,不能评论。)

6

如果有人在处理符合RFC 5322标准的电子邮件时遇到问题,这个方法对我有效:

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

msg = MIMEMultipart()
msg.set_unixfrom('author')
msg['From'] = 'you@mail.com'
msg['To'] = 'them@mail.com'
msg['Subject'] = 'simple email in python'
message = 'here is the email'
msg.attach(MIMEText(message))

mailserver = smtplib.SMTP_SSL('smtpout.secureserver.net', 465)
mailserver.ehlo()
mailserver.login('yourgodaddy@mail.com', 'PASSWORD')

mailserver.sendmail('you@mail.com','them@mail.com',msg.as_string())

mailserver.quit()
5

把这两行代码替换成下面这两行:

server = smtplib.SMTP('smtpout.secureserver.net', 465)
server.starttls()

换成:

server = smtplib.SMTP_SSL('smtpout.secureserver.net', 465)
#server.starttls()

引用一下文档里的内容:

当连接一开始就需要SSL,而使用starttls()不合适时,应该使用SMTP_SSL。

使用465端口就是这种情况。而当你使用25端口或587端口时,SMTP.starttls()是合适的选择。

参考资料:

撰写回答