Flask Web 开发 邮件功能

卧了个槽,这个功能,就因为基础知识的大坑,花了我整整2天才解决........我们先来看文章主要内容:这里讲一下SMTP和POP还有IMAP功能这个主要达到的功能就是:可以通过非官方的客户端,来访问邮箱收发邮件比如:我用邮箱大师这个软件,可以绑定某个126邮箱,来进行收发邮件而POP和IMAP的区别在于,POP的操作,不会同步到服务器上,也就是不会影响到服务器而IMAP是和服务器同步的然后126设

卧了个槽,这个功能,就因为基础知识的大坑,花了我整整2天才解决........


我们先来看文章主要内容




这里讲一下SMTP和POP还有IMAP功能

这个主要达到的功能就是:可以通过非官方的客户端,来访问邮箱收发邮件

比如:我用邮箱大师这个软件,可以绑定某个126邮箱,来进行收发邮件

而POP和IMAP的区别在于,POP的操作,不会同步到服务器上,也就是不会影响到服务器

而IMAP是和服务器同步的

然后126设置相关的页面如下

特别要注意我附加在页面上的文字,网易会在开通这些功能的时候让你另外设置一个授权码!!这个授权码是当你在使用非网易客户端时,启用pop/smtp/imap几个功能时候的密码!!

也就是说,你用其他软件收发邮件的时候,密码不是你原来那个,而是你的授权码!!!




接着我们就按照课程的例子来敲代码


在开发过程中,如果连接到外部SMTP 服务器,则可能更方便。举个例子,示例6-1 展示
了如何配置程序,以便使用Google Gmail 账户发送电子邮件。
示例6-1 hello.py:配置Flask-Mail 使用Gmail
import os
# ...
app.config['MAIL_SERVER'] = 'smtp.126.com'                #这里是设置每个邮箱不同的smtp服务器,由于GMAIL在国内被墙了,所以我这里使用126
app.config['MAIL_PORT'] = 25                                            #自己百度一下,每个邮箱对应的smtp端口号
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')   #这里提示,不要将账户和密码写入代码里面,而是设置在环境变量里面读取
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')


前方大坑.....注意避让

保存电子邮件服务器用户名和密码的两个环境变量要在环境中定义。如果你在Linux 或
Mac OS X 中使用bash,那么可以按照下面的方式设定这两个变量:
(venv) $ export MAIL_USERNAME=<Gmail username>
(venv) $ export MAIL_PASSWORD=<Gmail password>
微软Windows 用户可按照下面的方式设定环境变量:
(venv) $ set MAIL_USERNAME=<Gmail username>
(venv) $ set MAIL_PASSWORD=<Gmail password>


我是windows用户,所以选取第二个选项

这里的1号大坑:设置的时候,要把<>去掉,并且!!你的邮箱名和密码,都要用引号括起来,也就是字符串!!!

后续更新!!!重要更新!!!

在cmd下面,设置环境变量的时候,不需要引号,在powershell下面设置的时候,需要引号!!!


这里的2号大坑:set这个设置环境变量的方法,是在cmd里面的!!我用的是powershell!!他的语句应该是

$env:MAIL_USERNAME='xxxxx@126.com'

$env:MAIL_PASSWORD='这里输密码'




补一下基础知识!

因为在cmd里面,查看所有环境变量的命令是set

而在powershell里面,查看环境变量的命令是ls env:   而设置的方法是   $env: name='variable'    这里的name是添加的变量名字,后面的variable则是变量内容


这里转载一篇其他前辈的博客,予以参考!!  http://blog.sina.com.cn/s/blog_bfc35a260102vv88.html


如果你按照cmd里面的设置环境变量的方法set,那么,你就会碰到授权错误553或者550的信息,如下





发送邮件的代码如下:

(venv) $ python hello.py shell
>>> from flask.ext.mail import Message
>>> from hello import mail
>>> msg = Message('test subject', sender='you@example.com',
... recipients=['you@example.com'])
>>> msg.body = 'text body'
>>> msg.html = '<b>HTML</b> body'
>>> with app.app_context():
... mail.send(msg)
...                                                                    #进行到这里没有报错的话,那就是ok了!!


我们来看一下测试结果



然后我们最后补一下关于cmd下还有powershell下面的环境变量区别

在powershell下面,你需要用ls env:的命令,才能显示参数

而设置方法,则是$env :












作者:bestallen
原文链接:https://blog.csdn.net/bestallen/article/details/52203794

  • 发表于 2019-10-11 16:43
  • 阅读 ( 69 )
  • 分类:flask

0 条评论

请先 登录 后评论
不写代码的码农
bestallen_csdn

0 篇文章

作家榜 »

  1. AI君 10 文章
  2. Tzung-Wen Liau 0 文章
  3. blairan 0 文章
  4. rookie 0 文章
  5. 陈凯 0 文章
  6. huanxue 0 文章
  7. admin 0 文章
  8. Lzs1998_csdn 0 文章