Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查我是否可以发送电子邮件?_Python_Email - Fatal编程技术网

Python 如何检查我是否可以发送电子邮件?

Python 如何检查我是否可以发送电子邮件?,python,email,Python,Email,我想检查我是否可以从python程序发送电子邮件。不幸的是,它失败了,在我看来,因为SMTP服务器不接受我的呼叫。 我只需要检查我的程序是否正确,我可以发送电子邮件。。。但是我没有检查它。 这是我的程序,我如何让服务器接受我的呼叫 import smtplib # Here are the email package modules we'll need from email.mime.image import MIMEImage from email.mime.multipart impor

我想检查我是否可以从python程序发送电子邮件。不幸的是,它失败了,在我看来,因为SMTP服务器不接受我的呼叫。 我只需要检查我的程序是否正确,我可以发送电子邮件。。。但是我没有检查它。 这是我的程序,我如何让服务器接受我的呼叫

import smtplib

# Here are the email package modules we'll need
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

COMMASPACE = ', '

# Create the container (outer) email message.
msg = MIMEMultipart()
msg['Subject'] = 'Our family reunion'
me = "susja@gmail.com"
family = "dusja@gmail.com"
msg['From'] = me
msg['To'] = COMMASPACE.join(family)
msg.preamble = 'Our family reunion'


# Send the email via our own SMTP server.
s = smtplib.SMTP('smtp.gmail.com')
s.sendmail(me, family, msg.as_string())
s.quit()
我有一个错误:

Traceback (most recent call last):
File "2.py", line 21, in <module>
s = smtplib.SMTP('smtp.gmail.com')
File "/usr/lib/python2.7/smtplib.py", line 249, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python2.7/smtplib.py", line 309, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python2.7/smtplib.py", line 284, in _get_socket
return socket.create_connection((port, host), timeout)
File "/usr/lib/python2.7/socket.py", line 562, in create_connection
sock.connect(sa)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
KeyboardInterrupt
回溯(最近一次呼叫最后一次):
文件“2.py”,第21行,在
s=smtplib.SMTP('SMTP.gmail.com')
文件“/usr/lib/python2.7/smtplib.py”,第249行,在__
(代码,消息)=自连接(主机,端口)
文件“/usr/lib/python2.7/smtplib.py”,第309行,在connect中
self.sock=self.\u获取\u套接字(主机、端口、self.timeout)
文件“/usr/lib/python2.7/smtplib.py”,第284行,在get套接字中
返回套接字。创建_连接((端口、主机),超时)
文件“/usr/lib/python2.7/socket.py”,第562行,在create_connection中
sock.connect(sa)
文件“/usr/lib/python2.7/socket.py”,第224行,meth格式
返回getattr(self.\u sock,name)(*args)
键盘中断

上述代码序列中似乎缺少三件事:

  • 您需要使用端口587
  • 切换到SSL/TLS协议需要调用
    starttls()
  • 您需要使用您的Gmail用户名和密码通过调用
    login
    登录Gmail SMTP服务器
代码的最后一部分现在应该如下所示:

s = smtplib.SMTP_SSL("smtp.gmail.com", 587)
s.starttls()
s.login('gmail_username', 'gmail_password')
s.sendmail(me, family, msg.as_string())
s.close()

对于任何遇到AWS和Flask类似问题的人,我找到的解决方案是设置环境变量
MAIL\u USE\u TLS=True
。同样,这仅适用于flask.ext.mail,但它可能会在将来为某人节省一些时间和精力。

您是否尝试创建与端口587的连接,因此
smtplib.SMTP('SMTP.gmail.com',587)
?回溯(最近的调用最后一次):文件“2.py”,第21行,在s=smtplib.SMTP('SMTP.gmail.com')文件/usr/lib/python2.7/smtplib.py中,第249行,在init(code,msg)=self.connect(host,port)文件“/usr/lib/python2.7/smtplib.py”中,第309行,在connect-self.sock=self.\u-get-socket(host,port,self.timeout)文件“/usr/lib/python2.7/smtplib.py”中,第284行,在“get-socket-return-socket-socket”文件“/usr/lib/python2.7/socket.py.py”中创建连接((端口,主机),超时),第571行,在create_connection raise err socket.error:[Errno 101]网络无法访问如果我添加端口587,我有以下情况:回溯(最近一次调用):文件“2.py”,第22行,在s.sendmail(me,family,msg.as_string())文件“/usr/lib/python2.7/smtplib.py”,第722行,在sendmail raise SMTPSenderRefused(代码,resp,from_addr)smtplib.SMTPSenderRefused:(530,'5.7.0必须首先发出STARTTLS命令。e4sm2329031qar.12-gsmtp','susja@gmail.com’)事实上,您需要调用
s.starttls()
,然后在调用
sendmail
之前,我还希望看到
s.login(用户,密码)
调用,我是这样做的:s=smtplib.SMTP('SMTP.gmail.com')s.starttls()s.login('susja@gmail.com“,”mypassword')s.sendmail(me,recepient,msg.as_string())s.quit()并得到以下信息:回溯(最近一次调用):文件“c:\ipython\ipython\Lib\smtplib.py”,第302行,在文件中的连接文件“\Scripts\sendmail\u Expl.py”第17行“c:\ipython\ipython\Lib\smtplib.py”,第242行,在初始化文件“c:\ipython\ipython\Lib\smtplib.py”,第277行,在"获取"套接字中。错误:getaddrinfo返回一个空列表,它看起来既不像凭据也不像其他…对我来说,我缺少了
s.starttls()
s.login('gmail\u用户名,'gmail\u密码')
。谢谢!