我是使用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,并且我也获得了其他异常的输出,例如ServerAuthenticationError(
我的要求是,有人可以向我解释这些例外情况,并告诉我该怎么做才能消除它们吗?我不需要一个有效的代码,只是一个很好的解释。

编辑:以前有语法错误,我已更正。现在的例外是:

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方法中如何以及为什么导致这些异常,以及如何解决它们?

最佳答案

创建SMTP对象时,应提供主机名作为name: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?

关于python - 在python中使用smtplib时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47949940/

10-09 02:26