【问题标题】:Flask SMTP authentication error烧瓶 SMTP 身份验证错误
【发布时间】:2014-04-09 10:28:25
【问题描述】:

我在将联系页面添加到网页时遇到问题。我正在使用 Flask 来执行此操作。 我不明白的部分是这样的:

app.config["MAIL_SERVER"] = "smtp.gmail.com"
app.config["MAIL_PORT"] = 465
app.config["MAIL_USE_SSL"] = True
app.config["MAIL_USERNAME"] = '''example@gmail.com<script type="text/javascript">
/* <![CDATA[ */
(function(){try{var s,a,i,j,r,c,l,b=document.getElementsByTagName("script");
l=b[b.length-1].previousSibling;a=l.getAttribute('data-cfemail');if(a){s='';
r=parseInt(a.substr(0,2),16);for(j=2;a.length-j;j+=2){c=parseInt(a.substr(j,2),16)^r;
s+=String.fromCharCode(c);}s=document.createTextNode(s);
l.parentNode.replaceChild(s,l);}}catch(e){}})();
/* ]]> */
</script>]'''

app.config["MAIL_PASSWORD"] = 'password'

msg = Message(form.subject.data, sender='''contact@gmail.com<script
type="text/javascript">
/* <![CDATA[ */
(function(){try{var s,a,i,j,r,c,l,b=document.getElementsByTagName("script");
l=b[b.length-1].previousSibling;a=l.getAttribute('data-cfemail');if(a){s='';
r=parseInt(a.substr(0,2),16);for(j=2;a.length-j;j+=2){c=parseInt(a.substr(j,2),16)^r;
s+=String.fromCharCode(c);}s=document.createTextNode(s);
l.parentNode.replaceChild(s,l);}}catch(e){}})();
/* ]]> */
</script>', recipients=['example@gmail.com<script type="text/javascript">
/* <![CDATA[ */
(function(){try{var s,a,i,j,r,c,l,b=document.getElementsByTagName("script");
l=b[b.length-1].previousSibling;a=l.getAttribute('data-cfemail');if(a){s='';
r=parseInt(a.substr(0,2),16);for(j=2;a.length-j;j+=2){c=parseInt(a.substr(j,2),16)^r;
s+=String.fromCharCode(c);}s=document.createTextNode(s);
l.parentNode.replaceChild(s,l);}}catch(e){}})();
/* ]]> */
</script>]''')

请说明我应该在代码中的以下位置输入哪个电子邮件地址,我应该在哪里添加我的电子邮件 ID?另一个应该是什么。我没有自己的域名。

app.config["MAIL_USERNAME"] = '''example@gmail.com
app.config["MAIL_PASSWORD"] = 'password'

msg = Message(form.subject.data, sender='''contact@gmail.com
recipients=['example@gmail.com . . 

【问题讨论】:

标签: python email smtp flask flask-mail


【解决方案1】:

该教程似乎有点过于复杂。不知道为什么你需要所有的 Javascript。这是我测试过的适合我的方法:

gmail 的配置设置应该是这样的:

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

在上面的代码中,将 app.config['MAIL_USERNAME'] 替换为您的实际 gmail 地址。密码也一样。使用此设置,电子邮件将从您的 gmail 帐户发送到接收者。以上所有信息均适用于发件人,即您的 gmail 帐户。

然后,要发送电子邮件,只需执行以下操作

msg = Message(subject,sender="sender@gmail.com",recipients=['user1@gmail.com','user2@gmail.com'])
msg.body = "test email"
mail.send(msg)

在上面的代码中,将recipients 替换为您要向其发送电子邮件的任何人。收件人是一个列表。因此,您可以根据需要输入 1 个或多个电子邮件地址。

最后,使用上述2,flask-mail会从sender@gmail.com(即你)向user1@gmail.com、user2@gmail.com等(即接收者)发送电子邮件

【讨论】:

  • 非常感谢,您解释清楚了。这有效!
【解决方案2】:

同时确保您的 Google 帐户的“已开启对不太安全的应用程序的访问”。否则可能会导致 SMTP 身份验证问题。 您可以从谷歌设置打开/关闭: https://www.google.com/settings/security/lesssecureapps

【讨论】:

    【解决方案3】:

    确保您的 gmail 帐户的安全部分已开启对不太安全应用的访问权限

    【讨论】:

      猜你喜欢
      • 2019-01-03
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 2015-07-23
      • 2021-06-03
      • 1970-01-01
      相关资源
      最近更新 更多