ToB企服应用市场:ToB评测及商务社交产业平台
标题:
flask发送邮件方法
[打印本页]
作者:
科技颠覆者
时间:
2022-8-17 11:45
标题:
flask发送邮件方法
经过一晚上的摸索整理, 测试成功了用163发送邮件
原书代码链接:
https://github.com/greyli/helloflask/blob/master/demos/email/app.py
作者博客首页:
https://greyli.com/
相比于书中源码, 代码修改如下后运行成功:
import os
from threading import Thread
import sendgrid
from sendgrid.helpers.mail import Email as SGEmail, Content, Mail as SGMail
from flask_mail import Mail, Message
from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, SubmitField
from wtforms.validators import DataRequired, Email
from flask import Flask, flash, redirect, url_for, render_template, request
app = Flask(__name__)
app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True
app.config.update(
# 配置环境变量,可在本文件夹下运行python
# >>>from app import app
# >>>app.config
# 查看配置项内容,字典格式
SECRET_KEY=os.getenv('SECRET_KEY', 'siec'),
MAIL_SERVER=os.getenv('MAIL_SERVER', 'smtp.163.com'),
MAIL_PORT=465,
MAIL_USE_SSL=True,
MAIL_USERNAME=os.getenv('MAIL_USERNAME', 'bob@163.com'),
MAIL_PASSWORD=os.getenv('MAIL_PASSWORD', 'NOYZJJY'),#此处不输入密码,输入授权码
MAIL_DEFAULT_SENDER=('注册验证 <bob@163.com>')
)
mail = Mail(app)
# send over SMTP
def send_smtp_mail(subject, to, body):
message = Message(subject, recipients=[to], body=body)
mail.send(message)
复制代码
附:
1.163中设置如下
2.sendgrid当前无法注册
附:
解决报错UnicodeEncodeError: 'ascii' codec can't encode characters in position的方法
导致这个报错的原因是发送邮件的内容包括中文,改用全字母可正常发送。
或将flask-mail 0.9.0 升级至于0.9.1版本可以解决编码问题。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4