我是使用smtplib的新手,并希望用它来自动化我公司的群发邮件发送过程。 我试过这个基本脚本 -
#!/usr/bin/env python
import smtplib
server = smtplib.SMTP('smtp.gmail.com:587')
user_mail = '[user_email]@gmail.com'
user_pwd = '[password]'
rcv_mail = '[reciever_email]@yahoo.com'
msg = 'Test'
server.login(user_mail, user_pwd)
server.ehlo()
server.starttls()
server.sendmail(user_mail, rcv_mail, msg)
server.quit()
我没有在我的程序中使用这个脚本,这只是为了了解smtplib如何工作。 我收到此错误
Traceback (most recent call last):
File "sampleSMTP.py", line 4, in <module>
server = smtplib.SMTP('smtp.gmail.com. 587')
File "/usr/local/lib/python2.7/smtplib.py", line 256, in __init__
(code, msg) = self.connect(host, port)
File "/usr/local/lib/python2.7/smtplib.py", line 316, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/local/lib/python2.7/smtplib.py", line 291, in _get_socket
return socket.create_connection((host, port), timeout)
File "/usr/local/lib/python2.7/socket.py", line 557, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno -2] Name or service not known
以前在其他迭代中我尝试过使用电子邮件模块中的MIMEMultipart和MIMEText,我也得到了其他Exceptions作为输出,比如ServerAuthenticationError(&lt; - 我在这个中做了一些打印调试,发现异常被引发来自server.login()语句)。
我的要求是,有人可以向我解释这些例外并告诉我需要做些什么来摆脱它们吗?我不需要工作代码,只是一个很好的解释。
编辑:先前出现过语法错误,我已更正了。现在是例外:
Traceback (most recent call last):
File "sampleSMTP.py", line 10, in <module>
server.login(user_mail, user_pwd)
File "/usr/local/lib/python2.7/smtplib.py", line 585, in login
raise SMTPException("SMTP AUTH extension not supported by server.")
smtplib.SMTPException: SMTP AUTH extension not supported by server.
我原来的问题是 - 在smtplib方法中如何以及为什么会导致这些异常,以及如何解决它们?
答案 0 :(得分:0)
在创建SMTP
对象时,您应该提供主机名作为名称:port。
因此,server = smtplib.SMTP('smtp.gmail.com. 587')
不正确。
它应该是server = smtplib.SMTP('smtp.gmail.com:587')
。
如果此后出现错误,请参阅此主题:How to send an email with Gmail as provider using Python?
答案 1 :(得分:-1)
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
&#13;
这是一个相同的问题。