首页 文章

flask_mail,邮件卡在线程上,永远不会发送

提问于
浏览
0

我正在使用ssl烧瓶socketio,我正在尝试发送邮件,但由于某种原因,发送邮件不起作用 .

这是我的配置:

app.config['MAIL_SERVER']='smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = 'xxx@gmail.com'
app.config['MAIL_PASSWORD'] = 'xxx;'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
app.config['DEBUG'] = True

mail=Mail(app)

...

当我使用它时:

@app.route('/testMail')
def testMail():
    msg = Message(
              'Hello',
           sender='xxx@gmail.com',
           recipients=['xxx@gmail.com'])
    msg.body = "This is the email body"
    mail.send(msg)

    return ""

这里是错误日志:

文件“/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py”,第307行,在flush self._sock.sendall中查看[查看[] write_offset:write_offset buffer_size])文件“/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py”,第721行,在sendall v = self .send(data [count:])文件“/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py”,第687行,发送v = self._sslobj.write(data)错误:[Errno 32]管道损坏...文件“/usr/local/lib/python2.7/site-packages/flask_mail.py”,第156行,在configure_host host = smtplib.SMTP_SSL(self.mail.server,self.mail.port)文件“/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py “,第796行,在init SMTP.init(self,host,port,local_hostname,timeout)文件”/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2 . 7 / smtplib.py“,第256行,在init(代码,msg)= self.connect(h ost,port)文件“/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py”,第316行,在connect self.sock = self ._get_socket(host,port,self.timeout)文件“/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py”,第801行,在_get_socket中new_socket = socket.create_connection((host,port),timeout)文件“/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py “,第575行,在create_connection中引发错误错误:[Errno 65]无主机路由

由于某些原因,我无法发送任何电子邮件 . 它似乎因为socketio ssl包裹而卡住了 . 所以我不知道如何配置正确的方法

1 回答

  • 0

    我有同样的问题,如果你在虚拟机中工作检查 ssh 端口的网络连接,在我的情况下我使用 vagrant ,我启用了 ssh 端口的连接,这段代码对我有用:

    from flask import Flask
    from flask_mail import Mail, Message
    
    # object Flask and object Mail
    
    app = Flask(__name__)
    #configuration flask to Mail
    app.config.update(
                 MAIL_SERVER = "smtp.gmail.com",
                 MAIL_PORT = 465,
                 MAIL_USERNAME = 'xxx@gmail.com',  #user mail
                 MAIL_PASSWORD = 'xxx',
                 MAIL_USE_TLS = False,
                 MAIL_USE_SSL = True,
                 MAIL_DEFAULT_SENDER  =  'xxx@gmail.com', #user that will go email)
    mail = Mail(app)
    
    @app.route("/index")
    def index():
        return "ok"
    
    
    @app.route("/Test Mail")
    def test_mail():
        """route to test email by flask mail."""
        msj = "This is a test to send mail with flask."
        recipients = ["xxxemail@gmail.com"]
        msg_object = Message("hello", recipients)
        msg_object.body = "Hello, this email is a test"
        mail.send(msg_object)
        return "Sent"
    
    
    
    if __name__ == '__main__':
        app.run(host="0.0.0.0", port=7000, debug=True)
    

    此外,您应该验证 Gmail service 中的内置不安全功能是否可能阻止此登录尝试 . 登录您的帐户并访问https://www.google.com/settings/security/lesssecureapps .

相关问题