0402自學web後端之——使用flask-mail發送郵件

安裝:

>>> pip3 install flask_mail

設置環境變量

>>> export MAIL_USERNAME=發件郵箱地址@163.com
>>> export MAIL_PASSWORD=發件郵箱授權碼
>>> export MAIL_SERVER=smtp.163.com

注意!發件郵箱要開啓SMTP,一般在郵箱的設置界面,並且MAIL_PASSWORD一定要填授權碼,而非密碼,以163爲例:
在這裏插入圖片描述

# -*- coding: UTF-8
# config.py
import os

DEBUG = False
MAIL_SERVER = os.environ['MAIL_SERVER']
MAIL_PORT = 25
MAIL_USE_TLS = True
MAIL_USE_SSL = False
MAIL_USERNAME = os.environ['MAIL_USERNAME']
MAIL_PASSWORD = os.environ['MAIL_PASSWORD']
MAIL_SERVER = os.environ['MAIL_SERVER']
MAIL_DEFAULT_SENDER = '[email protected]'
DB_HOST = os.environ['MONGO_PORT_27017_TCP_ADDR']
DB_PORT = 27017
KEY = 'secret'
ACTIVATION_EXPIRE_DAYS = 5
TOKEN_EXPIRE_HOURS = 1
# -*- coding: UTF-8
# flaskMail.py
from flask import Flask
from flask_mail import Message, Mail
import os

app = Flask(__name__)
app.config.from_object('config')
mail = Mail(app)

# 創建郵件內容
msg = Message('email subject',sender='發件郵箱地址@163.com',
          recipients=['收件郵箱地址@qq.com'])
msg.body='郵件正文內容'

# 發送郵件,沒有包含附件
with app.app_context():
    mail.send(msg)

# 發送郵件,包含有附件
with app.app_context():
    with app.open_resource('test.png') as f:
        # msg.attach 郵件附件添加
        # msg.attach("文件名", "類型", 讀取文件)
        msg.attach('test.png','image/png',f.read())
        mail.send(msg)
        print('已發送!')
>>> python3 flaskMail.py
'已發送!'

如果sender中設置的郵箱和環境變量中設置的郵箱不一致會報錯:

smtplib.SMTPSenderRefused: (553, b'Mail from must equal authorized user', '[email protected]')

如果郵箱沒有設置開啓SMTP或發件郵箱密碼不是授權碼,會報錯:

smtplib.SMTPAuthenticationError: (550, b'User has no permission')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章