Python 从Flask mail发送邮件(SMTPSenderRefused 530)

Python 从Flask mail发送邮件(SMTPSenderRefused 530),python,email,flask,smtp,flask-mail,Python,Email,Flask,Smtp,Flask Mail,Flask邮件应用程序中使用的应用程序配置(遵循Miguel Grinberg Flask developlemt手册): 邮件用户名和密码变量已正确设置并重新检查。尝试使用以下代码发送消息时 from flask.ext.mail import Message from hello import mail msg = Message('test subject', sender='same as MAIL_USERNAME', recipients=['check@mail.com']) ms

Flask邮件应用程序中使用的应用程序配置(遵循Miguel Grinberg Flask developlemt手册):

邮件用户名和密码变量已正确设置并重新检查。尝试使用以下代码发送消息时

from flask.ext.mail import Message
from hello import mail
msg = Message('test subject', sender='same as MAIL_USERNAME', recipients=['check@mail.com'])
msg.body = 'text body'
msg.html = '<b>HTML</b> body'
with app.app_context():
    mail.send(msg)

有解决错误的方法吗

在深入研究面临的问题时,我重新检查了谷歌的SMTP设置

改变

app.config['MAIL_SERVER'] = 'smtp.googlemail.com'

成功了

还要确保完整用户名用作Gmail SMTP用户名,即example@gmail.com如上图所示


希望这有帮助

我也跟着这本书,得到了同样的问题,在到处挖掘之后,我找到了问题的根源。但是,我不确定你的情况是否也一样

app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
正如您可以看到的,flask应用程序通过os.environ.get()获取您的电子邮件凭据,如果您在系统中临时设置此环境变量,在我的例子中,Mac OSX,在您的终端会话之后,这些环境变量将消失,因此您需要在下次进入终端时再次设置它们,如下所示:

export MAIL_USERNAME=**YOUR EMAIL**
export PASSWORD=**YOUR PASSWORD**

由于这种情况,我出现了这个错误,为了永久地设置它们,您需要将这些变量包含到主目录中的.bash\u profile文件中

做以下两件事来解决:

  • 使用此链接并启用“允许不太安全的应用程序”——

  • 对电子邮件和密码使用硬编码值,效果很好。 只需在文件“init.py”中编辑以下部分:

  • 不要使用os.environ.get

    app.config['MAIL_USERNAME'] = 'youremail@gmail.com'
    app.config['MAIL_PASSWORD'] = 'yourpassword'
    

    您需要更改您的谷歌帐户设置。打开时,打开“允许不太安全的应用”选项

    正如那一页所说:

    某些应用程序和设备使用不太安全的登录技术,这会使您的帐户更容易受到攻击。您可以关闭这些应用的访问权限,我们建议您这样做,或者打开访问权限,如果您想使用这些应用,尽管存在风险


    我通过运行
    source~/.bash\u profile
    ,重新加载了我的文件。@ss\u百万富翁非常感谢你lol这些答案都对我无效,但是你的评论对我有效@谢申克斯。但下次重新加载时,它将不起作用comp@Humoyun嗯,那我怎么做才能让它一直保持下去呢
    app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
    app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
    
    export MAIL_USERNAME=**YOUR EMAIL**
    export PASSWORD=**YOUR PASSWORD**
    
    app.config['MAIL_USERNAME'] = 'youremail@gmail.com'
    app.config['MAIL_PASSWORD'] = 'yourpassword'