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

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

Python smtp郵件發(fā)送模塊用法教程

瀏覽:54日期:2022-07-21 13:02:34

在Python中已經(jīng)內(nèi)置了一個smtp郵件發(fā)送模塊,Django在此基礎(chǔ)上進(jìn)行了簡單地封裝,讓我們在Django環(huán)境中可以更方便更靈活的發(fā)送郵件。

所有的功能都在django.core.mail中。

一、快速上手

兩行就可以搞定一封郵件:

from django.core.mail import send_mailsend_mail( ’Subject here’, ’Here is the message.’, ’from@example.com’, [’to@example.com’], fail_silently=False,)

導(dǎo)入功能模塊,然后發(fā)送郵件,so easy!

默認(rèn)情況下,使用配置文件中的EMAIL_HOST和EMAIL_PORT設(shè)置SMTP服務(wù)器主機(jī)和端口,EMAIL_HOST_USER和EMAIL_HOST_PASSWORD是用戶名和密碼。如果設(shè)置了EMAIL_USE_TLS和EMAIL_USE_SSL,它們將控制是否使用相應(yīng)的加密鏈接。

二、單發(fā) send_mail()

方法原型:send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None, html_message=None)[source]

讓我們來了解一下send_mail()方法,它接收一系列參數(shù),其中的subject、message、from_email和recipient_list參數(shù)是必須的,其它的可選。

subject:郵件主題。字符串。 message:郵件具體內(nèi)容。字符串。 from_email:郵件發(fā)送者。字符串。 recipient_list:收件人。一個由郵箱地址組成的字符串列表。recipient_list中的每一個成員都會在郵件信息的“To:”區(qū)域看到其它成員。 fail_silently: 一個布爾值。如果它是False,send_mail發(fā)送失敗時,將會引發(fā)一個smtplib.SMTPException異常。 auth_user: 可選的用戶名用來驗(yàn)證SMTP服務(wù)器,如果你要特別指定使用哪個郵箱帳號,就指定這個參數(shù)。如果沒有提供這個值,Django將會使用settings中EMAIL_HOST_USER的值。如果兩者都不提供,那你還發(fā)什么??? auth_password: 可選的密碼用來驗(yàn)證SMTP服務(wù)器。如果沒有提供這個值,Django 將會使用settings中EMAIL_HOST_PASSWORD的值。和上面那個參數(shù)是一家的。 connection: 可選的用來發(fā)送郵件的電子郵件后端。 html_message: 如果提供了html_message,可以發(fā)送帶HTML代碼的郵件。 send_mail()方法返回值將是成功發(fā)送出去的郵件數(shù)量(只會是0或1,因?yàn)樗荒馨l(fā)送一封郵件)。

三、群發(fā) send_mass_mail()

方法原型:send_mass_mail(datatuple,fail_silently = False,auth_user = None,auth_password = None ,connection = None)[source]

send_mass_mail()用來處理大批量郵件任務(wù),也就是所謂的群發(fā)。

它的參數(shù)中,datatuple是必需參數(shù),接收一個元組,元組的每個元素的格式如下:

(subject, message, from_email, recipient_list)

上面四個字段的意義與send_mail()中的相同。

例如,以下代碼將向兩組不同的收件人發(fā)送兩個不同的消息;但是,只能打開一個到郵件服務(wù)器的連接:

message1 = (’Subject here’, ’Here is the message’, ’from@example.com’, [’first@example.com’, ’other@example.com’])message2 = (’Another Subject’, ’Here is another message’, ’from@example.com’, [’second@test.com’])send_mass_mail((message1, message2), fail_silently=False)

send_mass_mail()方法的返回值是成功發(fā)送的郵件數(shù)量。

使用send_mail()方法時,每調(diào)用一次,它會和SMTP服務(wù)器建立一次連接,也就是發(fā)一次連一次,效率很低。而send_mass_mail(),則只建立一次鏈接,就將所有的郵件都發(fā)送出去,效率比較高。

四、防止頭部注入攻擊

有時候,我們要根據(jù)用戶表單的輸入來構(gòu)造電子郵件,這就存在頭部注入攻擊的風(fēng)險,Django給我們提供了一定的防范能力,但是更多時候,還需要你自己編寫安全防范代碼。

下面是一個例子,接收用戶輸入的主題、郵件內(nèi)容和發(fā)送方,將郵件發(fā)送到系統(tǒng)管理員:

from django.core.mail import send_mail, BadHeaderErrorfrom django.http import HttpResponse, HttpResponseRedirectdef send_email(request): subject = request.POST.get(’subject’, ’’) message = request.POST.get(’message’, ’’) from_email = request.POST.get(’from_email’, ’’) if subject and message and from_email: try: send_mail(subject, message, from_email, [’admin@example.com’]) except BadHeaderError: return HttpResponse(’Invalid header found.’) return HttpResponseRedirect(’/contact/thanks/’) else: # In reality we’d use a form class # to get proper validation errors. return HttpResponse(’Make sure all fields are entered and valid.’)

如果檢查到用戶的輸入帶有頭部注入攻擊的可能性,會彈出BadHeaderError異常。

五、發(fā)送多媒體郵件

默認(rèn)情況下,發(fā)送的郵件都是純文本格式的。但有時候我們希望能在郵件里帶一些超級鏈接、圖片,甚至視頻和JS動作。

Django為我們提供了一個EmailMultiAlternatives類,可以同時發(fā)送文本和HTML內(nèi)容,下面是個范例,我們照著寫就行:

from django.core.mail import EmailMultiAlternativessubject, from_email, to = ’hello’, ’from@example.com’, ’to@example.com’text_content = ’This is an important message.’html_content = ’<p>This is an <strong>important</strong> message.</p>’msg = EmailMultiAlternatives(subject, text_content, from_email, [to])msg.attach_alternative(html_content, 'text/html')msg.send()

需要提醒的是,接收方的郵件服務(wù)商不一定支持多媒體郵件,也許是為了安全,也許是別的原因。為了保證你的郵件內(nèi)容能被閱讀,請務(wù)必同時發(fā)送純文本郵件。

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 电机保护器-电动机综合保护器-上海硕吉电器有限公司 | 立式矫直机_卧式矫直机-无锡金矫机械制造有限公司 | 福尔卡(北京)新型材料技术股份有限公司| 常州企业采购平台_常州MRO采购公司_常州米孚机电设备有限公司 | 空冷器|空气冷却器|空水冷却器-无锡赛迪森机械有限公司[官网] | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 线粒体膜电位荧光探针-细胞膜-标记二抗-上海复申生物科技有限公司 | 诚暄电子公司首页-线路板打样,pcb线路板打样加工制作厂家 | 首页-瓜尔胶系列-化工单体系列-油田压裂助剂-瓜尔胶厂家-山东广浦生物科技有限公司 | cnc精密加工_数控机械加工_非标平键定制生产厂家_扬州沃佳机械有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | COD分析仪|氨氮分析仪|总磷分析仪|总氮分析仪-圣湖Greatlake | 一点车讯-汽车网站,每天一点最新车讯! | 双段式高压鼓风机-雕刻机用真空泵-绍兴天晨机械有限公司 | 真空乳化机-灌装封尾机-首页-温州精灌 | 吨袋包装机|吨包秤|吨包机|集装袋包装机-烟台华恩科技 | 托利多电子平台秤-高精度接线盒-托利多高精度电子秤|百科 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | 神马影院-实时更新秒播| 面粉仓_储酒罐_不锈钢储酒罐厂家-泰安鑫佳机械制造有限公司 | 保温杯,儿童婴童奶瓶,运动水壶「广告礼品杯定制厂家」超朗保温杯壶 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 山东风淋室_201/304不锈钢风淋室净化设备厂家-盛之源风淋室厂家 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 万烁建筑设计院-建筑设计公司加盟,设计院加盟分公司,市政设计加盟 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | J.S.Bach 圣巴赫_高端背景音乐系统_官网| 上海小程序开发-上海小程序制作公司-上海网站建设-公众号开发运营-软件外包公司-咏熠科技 | 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 压滤机-洗沙泥浆处理-压泥机-山东创新华一环境工程有限公司 | 深圳法律咨询【24小时在线】深圳律师咨询免费 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 |