电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

基于python SMTP實現(xiàn)自動發(fā)送郵件教程解析

瀏覽:3日期:2022-07-23 14:55:49

最近工作中的一個項目需要自動發(fā)送一些信息郵件到指定郵箱的需求,那么如何實現(xiàn)Python自動發(fā)送郵件的功能呢?接下來我們就來簡單的介紹下如何利用Python來實現(xiàn)自動發(fā)送郵件的功能。

Python SMTP發(fā)送郵件

SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協(xié)議 ,說白了就是發(fā)送郵件的協(xié)議,python的smplib庫對SMTP協(xié)議進行了簡單的封裝,提供了對SMTP的支持,可以發(fā)送純文本郵件、HTML文件以及帶附件的郵件。

首先我們構(gòu)建一個SendEmailManager類,也是遵循著面向?qū)ο缶幊痰乃枷雭碜觯篌w結(jié)構(gòu)如下:

class SendEmailManager(object): def __init__(self, **kwargs): # 初始化參數(shù) ... def _get_conf(self, key): # 獲取配置參數(shù) ... def _init_conf(self): # 初始化配置參數(shù) ... def _login_email(self): # 登錄郵箱服務(wù)器 ... def _make_mail_msg(self): # 構(gòu)建文本郵件對象 ... def do_send_mail(self): # 郵件發(fā)送 ...

def __init__(self, **kwargs)

類的初始化函數(shù),可以用來設(shè)置對象屬性,并給予初始值,可以是參數(shù)或者固定值 ,其中參數(shù)**kwargs是將一個可變的關(guān)鍵字參數(shù)的字典傳給函數(shù)實參,這里里我們主要是對SMTP服務(wù)器(這里使用qq郵箱)、發(fā)送郵件的代理郵箱、在郵箱中設(shè)置的客戶端授權(quán)密碼、可變參數(shù)進行一些初始化。具體代碼如下:

# SMTP服務(wù)器,這里使用qq郵箱,其他郵箱自行百度EMAIL_HOST = ’smtp.qq.com’# 發(fā)送郵件的代理郵箱EMAIL_HOST_USER = ’xxxx@xxxx.com’# 在郵箱中設(shè)置的客戶端授權(quán)密碼, 注意這里不是郵箱密碼,如何獲取郵箱授權(quán)碼,請看本文最后教程EMAIL_HOST_PASSWORD = ’xxxxxxxxxxxxx’def __init__(self, **kwargs): # 初始化參數(shù) self.email_host = EMAIL_HOST self.email_host_user = EMAIL_HOST_USER self.email_host_pass = EMAIL_HOST_PASSWORD self.kwargs = kwargs

def _get_conf(self, key)

主要負責通過key讀取 可變參數(shù)self.kwargs 字典里的值,供其他函數(shù)使用。

def _get_conf(self, key): # 獲取配置參數(shù) value = self.kwargs.get(key) if key != 'attach_file_list' and (value is None or value == ’’): raise Exception('configuration parameter ’%s’ cannot be empty' % key) return value

def _init_conf(self)

該函數(shù)主要負責初始化 函數(shù)_get_conf 返回的配置參數(shù), 以便接下來的函數(shù)可以調(diào)用相關(guān)配置參數(shù)。

def _init_conf(self): # 初始化配置參數(shù) print(self._get_conf(’receives’)) self.receives = self._get_conf(’receives’) self.msg_subject = self._get_conf(’msg_subject’) self.msg_content = self._get_conf(’msg_content’) self.msg_from = self._get_conf(’msg_from’) # attachment self.attach_file_list = self._get_conf(’attach_file_list’)

def _login_email(self)

登錄郵件服務(wù)器, 我這里登陸的是qq郵箱的服務(wù)器,端口號為465,其他郵箱端口號請自行百度,代碼如下:

def _login_email(self): # 登錄郵箱服務(wù)器 try: server = smtplib.SMTP_SSL(self.email_host, port=465) # set_debuglevel(1)可以打印出和SMTP服務(wù)器交互的所有信息 server.set_debuglevel(1) # 登錄郵箱 server.login(self.email_host_user, self.email_host_pass) return server except Exception as e: print('mail login exception:', e) raise e

def _make_mail_msg(self)

該函數(shù)的功能為構(gòu)建一個郵件實例對象,來處理郵件的內(nèi)容。一封正常的郵件一般有收發(fā)件者信息,郵件主題,郵件正文,有些郵件還附帶有附件,具體的設(shè)置參見如下代碼:

def _make_mail_msg(self): # 構(gòu)建郵件對象 msg = MIMEMultipart() msg.attach(MIMEText(self.msg_content, ’plain’, ’utf-8’)) # 郵件主題 msg[’Subject’] = Header(self.msg_subject, 'utf-8') # 發(fā)件人郵箱信息 msg[’From’] = '<%s>' % self.msg_from # msg[’From’] = Header(self.msg_from + '<%s>' % self.email_host_user, 'utf-8') msg[’To’] = ','.join(self.receives) print('---', self.attach_file_list) if self.attach_file_list: for i, att in enumerate(self.attach_file_list): # 構(gòu)造附件,傳送當前目錄下的文件 if not att:break att_i = MIMEText(open(att, ’rb’).read(), ’base64’, ’utf-8’) att_i['Content-Type'] = ’application/octet-stream’ # 這里的filename可以任意寫,寫什么名字,郵件中顯示什么名字 att_i['Content-Disposition'] = ’attachment; filename='%s'’ % att msg.attach(att_i) return msg

def do_send_mail(self)

發(fā)送郵件,就是把上幾個函數(shù)串起來,直接上代碼:

def do_send_mail(self): # 郵件發(fā)送 try: self._init_conf() server = self._login_email() msg = self._make_mail_msg() server.sendmail(self.email_host_user, self.receives, msg.as_string()) server.close() print('發(fā)送成功!') except Exception as e: print('郵件發(fā)送異常', e)

配置參數(shù),測試能否正常發(fā)送郵件:

if __name__ == '__main__': mail_conf = { ’msg_from’: ’xxxx@qq.com’, # 郵件發(fā)送者的地址 ’receives’: [’xxxx@qq.com’, ’xxxxxxxx@xxxx.com’, ], # 郵件接收者的地址,這是個list,因為郵件的接收者可能不止一個 ’msg_subject’: ’Python 自動發(fā)送郵件測試!!’, # 郵件的主題 ’msg_content’: ’人生苦短,我用python!!!’, # 郵件的內(nèi)容 ’attach_file_list’: {'test_file1.py': 'test.py', 'test_file2.pem': './public.pem'}, # 為附件文件路徑列表,也是個list,也可沒有這項 } manager = SendEmailManager(**mail_conf) manager.do_send_mail()

基于python SMTP實現(xiàn)自動發(fā)送郵件教程解析

ok,發(fā)送成功,添加附件也是沒問題的。

開始我們講的獲取客戶端郵箱的授權(quán)碼,教程如下(以qq郵箱為例):

基于python SMTP實現(xiàn)自動發(fā)送郵件教程解析

好了,目標完成。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 智慧水务|智慧供排水利信息化|水厂软硬件系统-上海敢创 | 温室大棚建设|水肥一体化|物联网系统 | 新疆乌鲁木齐网站建设-乌鲁木齐网站制作设计-新疆远璨网络 | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌 | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 展厅装修公司|企业展厅设计|展厅制作|展厅搭建—广州展厅装饰公司 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | 全钢实验台,实验室工作台厂家-无锡市辰之航装饰材料有限公司 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 | 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 据信,上课带着跳 D 体验-别样的课堂刺激感受引发网友热议 | 展厅设计公司,展厅公司,展厅设计,展厅施工,展厅装修,企业展厅,展馆设计公司-深圳广州展厅设计公司 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | SMN-1/SMN-A ABB抽屉开关柜触头夹紧力检测仪-SMN-B/SMN-C-上海徐吉 | 优秀的临床医学知识库,临床知识库,医疗知识库,满足电子病历四级要求,免费试用 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | 最新范文网_实用的精品范文美文网 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 汽车润滑油厂家-机油/润滑油代理-高性能机油-领驰慧润滑科技(河北)有限公司 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 【北京写字楼出租_写字楼租赁_办公室出租网/出售】-远行地产官网 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 不发火防静电金属骨料_无机磨石_水泥自流平_修补砂浆厂家「圣威特」 | 探鸣起名网-品牌起名-英文商标起名-公司命名-企业取名包满意 | 天津市能谱科技有限公司-专业的红外光谱仪_红外测油仪_紫外测油仪_红外制样附件_傅里叶红外光谱技术生产服务厂商 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 |