我正试图通过我的大学的SMTP服务器发送一封电子邮件。我写了一些python代码。代码本身运行良好,但我认为SMTP服务器存在问题。我想我应该联系管理员,但我该怎么跟他说呢?这真的是服务器问题吗?我的代码如下所示:
import smtplib
import string
fromaddr = str('from@subunidomain.server.com')
password = str('secretpass')
toaddrs = 'to@unidomain.com'
server_smtp = 'smtp.server.com'
port_smtp = 465
msg = 'There was a terrible error that occured and I wanted you to know'
BODY = string.join((
"From: %s" % fromaddr,
"To: %s" % toaddrs,
"Subject: %s" % 'Hello' ,
"",
'Hello'
), "\r\n")
try :
server = smtplib.SMTP_SSL(host=server_smtp, port=port_smtp)
server.set_debuglevel(True)
server.login(fromaddr,password)
server.sendmail(fromaddr, toaddrs, str(BODY))
server.quit()
except smtplib.SMTPServerDisconnected :
print "smtplib.SMTPServerDisconnected"
except smtplib.SMTPResponseException, e:
print "smtplib.SMTPResponseException: " + str(e.smtp_code) + " " + str(e.smtp_error)
except smtplib.SMTPSenderRefused:
print "smtplib.SMTPSenderRefused"
except smtplib.SMTPRecipientsRefused:
print "smtplib.SMTPRecipientsRefused"
except smtplib.SMTPDataError:
print "smtplib.SMTPDataError"
except smtplib.SMTPConnectError:
print "smtplib.SMTPConnectError"
except smtplib.SMTPHeloError:
print "smtplib.SMTPHeloError"
except smtplib.SMTPAuthenticationError:
print "smtplib.SMTPAuthenticationError"
except Exception :
print "Exception"我有来自服务器的这样的回应:
send: 'ehlo [127.0.1.1]\r\n'
reply: '250-smtp.server.com Hello [127.0.1.1] [219.104.12.12]\r\n'
reply: '250-SIZE 78643200\r\n'
reply: '250-PIPELINING\r\n'
reply: '250-AUTH PLAIN LOGIN\r\n'
reply: '250 HELP\r\n'
reply: retcode (250); Msg: smtp.server.com Hello [127.0.1.1] [219.104.12.12]
SIZE 78643200
PIPELINING
AUTH PLAIN LOGIN
HELP
send: 'AUTH PLAIN AGFpQGluZm9ybWF0aWNhLnVtY3MubHVibGluLnBsAGFubmFsZXN1bWNzMjAxNQ==\r\n'
reply: '535 Incorrect authentication data\r\n'
reply: retcode (535); Msg: Incorrect authentication data
smtplib.SMTPResponseException: 535 Incorrect authentication data有什么问题,如何解决?我的密码和电子邮件都是100%正确的。
下面是来自from@subunidomain.server.com的输出(用户名:来自的--当我尝试编写https://pingability.com/smtptest.jsp时,它不起作用):
smtp.server.com
SMTP Username from
Output
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.server.com", port 25, isSSL false
220-smtp.server.com ESMTP Exim 4.69 #1 Wed, 29 Apr 2015 23:05:53 +0200
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.
DEBUG SMTP: connected to host "smtp.server.com", port: 25
EHLO localhost
250-smtp.server.com Hello pingability.com [72.249.37.67]
250-SIZE 78643200
250-PIPELINING
250-AUTH PLAIN LOGIN
250-STARTTLS
250 HELP
DEBUG SMTP: Found extension "SIZE", arg "78643200"
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "AUTH", arg "PLAIN LOGIN"
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "HELP", arg ""
DEBUG SMTP: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM
AUTH LOGIN
334 VXNlcm5hbWU6
YWk=
334 UGFzc3dvcmQ6
YW5uYWxlc3VtY3MyMDE1
235 Authentication succeeded
DEBUG SMTP: use8bit false
MAIL FROM:<smtptester@pingability.com>
250 OK
RCPT TO:<smtptester@pingability.com>
250 Accepted
DEBUG SMTP: Verified Addresses
DEBUG SMTP: smtptester@pingability.com
DATA
354 Enter message, ending with "." on a line by itself
Date: Wed, 29 Apr 2015 21:05:53 +0000 (UTC)
From: smtptester@pingability.com
To: smtptester@pingability.com
Message-ID: <8486466.51545.1430341553138.JavaMail.tomcat@localhost>
Subject: Pingability Test
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Pingability Test
.
250 OK id=1YnZB5-0006N0-Nd
QUIT
221 smtp.server.com closing connection发布于 2015-04-29 20:23:14
也许您可以尝试使用yagmail发送消息。
安装:
pip install yagmail
然后导入、制作连接对象并发送电子邮件:
import yagmail
yag = yagmail.Connect('user', 'pass', server_smtp, port_smtp, set_debuglevel = 1)
yag.send(toaddrs, Subject = 'Hello', Body = 'Hello')如果你面临任何错误,请告诉我。
Disclaimer/Background:我是yagmail的维护者/开发人员。该包裹的目的是使许多事情非常方便地发送电子邮件。例如,您可以使用它的特性不在脚本中写入密码,而是将其存储在您的密钥环中(非常安全,您可以在github上看到它!)它也有几种方法可以使它变得更短,例如:
from yagmail import Connect
yag = Connect(host = server_smtp, port = port_smtp, set_debuglevel = 1)
yag.send(toaddrs, 'Hello', 'Hello')附件(如HTML/图像)非常容易使用,但我不会去那里,因为它没有被要求。最后,每当它超出范围时,它就会自动退出。
https://stackoverflow.com/questions/29953686
复制相似问题