Python發(fā)送郵件的實(shí)例代碼講解
一、郵件發(fā)送示例
郵件發(fā)送示例
flask_email及smtplib原生郵件發(fā)送示例,適用于基于Flask框架開(kāi)發(fā),但是內(nèi)部設(shè)置的定時(shí)任務(wù)發(fā)送郵件/或提供離線接口發(fā)送郵件操作
1.flask config配置
# QQ郵箱配置 MAIL_DEBUG = True # 開(kāi)啟debug,便于調(diào)試看信息 MAIL_SUPPRESS_SEND = False # 發(fā)送郵件,為T(mén)rue則不發(fā)送 MAIL_SERVER = 'smtp.qq.com' # 郵箱服務(wù)器 MAIL_PORT = 465 # 端口 MAIL_USE_SSL = True # 重要,qq郵箱需要使用SSL MAIL_USE_TLS = False # 不需要使用TLS MAIL_USERNAME = '@qq.com' # 填郵箱 MAIL_PASSWORD = '' # 填授權(quán)碼 FLASK_MAIL_SENDER = '@qq.com' # 郵件發(fā)送方 FLASK_MAIL_SUBJECT_PREFIX = '' # 郵件標(biāo)題 MAIL_DEFAULT_SENDER = '@qq.com' # 填郵箱,默認(rèn)發(fā)送者
2.示例代碼
import smtplib
import constant # 定義常量文件
from email.header import Header
from email.mime.text import MIMEText
constant.SMTP_SERVER = 'smtp.qq.com'
constant.PORT = 465
class EmailSender(object):
def __init__(self, subject, receivers, sender='ss@qq.com', password='123456', offline=False, html_body=None,
text_body=None, **kwargs):
self.subject = subject
self.receivers = receivers
self.sender = sender
self.password = password
if offline:
if html_body:
self.send_body = html_body
self._subtype = 'html'
elif text_body:
self.send_body = text_body
self._subtype = 'plain'
self.send_email_offline()
else:
from flask_mail import Mail
self.mail = Mail()
dic = dict(kwargs)
self.send_email(html_body, text_body, attachments=dic.get("attachments"), sync=dic.get("sync"))
def send_email_offline(self):
try:
message = MIMEText(self.send_body, self._subtype, 'utf-8')
message['From'] = self.sender
message['To'] = ','.join(self.receivers)
message['Subject'] = Header(self.subject, 'utf-8')
smtpObj = smtplib.SMTP_SSL(constant.SMTP_SERVER, constant.PORT)
smtpObj.login(self.sender, self.password)
smtpObj.sendmail(
self.sender, self.receivers, message.as_string())
smtpObj.quit()
except smtplib.SMTPException:
return "smtp服務(wù)器發(fā)送異常 >> 無(wú)法發(fā)送郵件"
except Exception as e:
return f"郵件發(fā)送失敗 >> {e}"
def send_email(self, text_body, html_body, attachments=None, sync=False):
from threading import Thread
from flask import current_app
from flask_mail import Message
try:
msg = Message(self.subject, recipients=self.receivers)
msg.body = text_body
msg.html = html_body
if attachments:
for attachment in attachments:
msg.attach(*attachment)
if not sync:
self.mail.send(msg)
else:
Thread(target=self.send_async_email, args=(current_app._get_current_object(), msg)).start()
except Exception as e:
return f"郵件發(fā)送失敗 >> {e}"
def send_async_email(self, app, msg):
with app.app_context():
try:
self.mail.send(msg)
except Exception as e:
print(f"郵件發(fā)送錯(cuò)誤信息:{e}")
3.使用
err = EmailSender(subject='吃貨詢問(wèn)', receivers=["123@qq.com", "1234@qq.cn"], text_body='吃了沒(méi)呀?', offline=True) if err: print(err)
以上3點(diǎn)就是關(guān)于Python發(fā)送郵件的全部知識(shí)點(diǎn),感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。
- Python Flask異步發(fā)送郵件實(shí)現(xiàn)方法解析
- python使用QQ郵箱實(shí)現(xiàn)自動(dòng)發(fā)送郵件
- Python發(fā)送郵件封裝實(shí)現(xiàn)過(guò)程詳解
- python實(shí)現(xiàn)QQ郵箱發(fā)送郵件
- Python3實(shí)現(xiàn)發(fā)送郵件和發(fā)送短信驗(yàn)證碼功能
- selenium+python實(shí)現(xiàn)登陸QQ郵箱并發(fā)送郵件功能
- Python 調(diào)用 Outlook 發(fā)送郵件過(guò)程解析
- Python 發(fā)送郵件方法總結(jié)
相關(guān)文章
python 已知平行四邊形三個(gè)點(diǎn),求第四個(gè)點(diǎn)的案例
這篇文章主要介紹了python 已知平行四邊形三個(gè)點(diǎn),求第四個(gè)點(diǎn)的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
django 實(shí)現(xiàn)編寫(xiě)控制登錄和訪問(wèn)權(quán)限控制的中間件方法
今天小編就為大家分享一篇django 實(shí)現(xiàn)編寫(xiě)控制登錄和訪問(wèn)權(quán)限控制的中間件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Pycharm配置Anaconda環(huán)境的詳細(xì)圖文教程
PyCharm是一款很好用很流行的python編輯器,Anaconda通過(guò)管理工具包、開(kāi)發(fā)環(huán)境、Python版本,大大簡(jiǎn)化了你的工作流程,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下Pycharm配置Anaconda環(huán)境的相關(guān)資料,需要的朋友可以參考下2023-02-02
python 獲取網(wǎng)頁(yè)編碼方式實(shí)現(xiàn)代碼
這篇文章主要介紹了python 獲取網(wǎng)頁(yè)編碼方式實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03
python實(shí)現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼
今天小編就為大家分享一篇python實(shí)現(xiàn)本地圖片轉(zhuǎn)存并重命名的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10

