flask发送邮件方法

打印 上一主题 下一主题

主题 843|帖子 843|积分 2529

经过一晚上的摸索整理, 测试成功了用163发送邮件
原书代码链接: https://github.com/greyli/helloflask/blob/master/demos/email/app.py
作者博客首页: https://greyli.com/
相比于书中源码, 代码修改如下后运行成功:
  1. import os
  2. from threading import Thread
  3. import sendgrid
  4. from sendgrid.helpers.mail import Email as SGEmail, Content, Mail as SGMail
  5. from flask_mail import Mail, Message
  6. from flask_wtf import FlaskForm
  7. from wtforms import StringField, TextAreaField, SubmitField
  8. from wtforms.validators import DataRequired, Email
  9. from flask import Flask, flash, redirect, url_for, render_template, request
  10. app = Flask(__name__)
  11. app.jinja_env.trim_blocks = True
  12. app.jinja_env.lstrip_blocks = True
  13. app.config.update(
  14.     # 配置环境变量,可在本文件夹下运行python
  15.     # >>>from app import app
  16.     # >>>app.config
  17.     # 查看配置项内容,字典格式
  18.     SECRET_KEY=os.getenv('SECRET_KEY', 'siec'),
  19.     MAIL_SERVER=os.getenv('MAIL_SERVER', 'smtp.163.com'),
  20.     MAIL_PORT=465,
  21.     MAIL_USE_SSL=True,
  22.     MAIL_USERNAME=os.getenv('MAIL_USERNAME', 'bob@163.com'),
  23.     MAIL_PASSWORD=os.getenv('MAIL_PASSWORD', 'NOYZJJY'),#此处不输入密码,输入授权码
  24.     MAIL_DEFAULT_SENDER=('注册验证 <bob@163.com>')
  25. )
  26. mail = Mail(app)
  27. # send over SMTP
  28. def send_smtp_mail(subject, to, body):
  29.     message = Message(subject, recipients=[to], body=body)
  30.     mail.send(message)
复制代码
附:
1.163中设置如下

 
 2.sendgrid当前无法注册

 附:
解决报错UnicodeEncodeError: 'ascii' codec can't encode characters in position的方法
导致这个报错的原因是发送邮件的内容包括中文,改用全字母可正常发送。
或将flask-mail 0.9.0 升级至于0.9.1版本可以解决编码问题。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表