Flask SMTP 认证错误

2 投票
3 回答
5124 浏览
提问于 2025-04-17 21:09

我在给网页添加一个联系页面时遇到了一些问题。我正在使用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>]''')

请告诉我在代码中的以下位置应该填哪个邮箱地址,我应该把我的邮箱放在哪里?另外一个邮箱又应该是什么?我没有自己的域名。

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 . . 

3 个回答

0

确保在你的 Gmail 账户的安全设置里,已经开启了对不太安全应用的访问。

2

还要确保你的谷歌账户已经开启了“允许不太安全的应用访问”这个选项。否则,这可能会导致SMTP认证出现问题。你可以在谷歌的设置中开启或关闭这个选项,链接在这里:https://www.google.com/settings/security/lesssecureapps

3

这个教程看起来有点复杂,不太明白为什么需要那么多的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)

在上面的代码中,把recipient替换成你想发送邮件的人的地址。recipients是一个列表,所以你可以根据需要输入一个或多个邮箱地址。

最后,使用以上两段代码,flask-mail会把邮件从sender@gmail.com(也就是你)发送到user1@gmail.com、user2@gmail.com等(也就是接收者)。

撰写回答