最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年06月15日 09:47:55   作者:三度  
這篇文章主要介紹了Python smtp郵件發(fā)送模塊用法教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

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

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

一、快速上手

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

from django.core.mail import send_mail

send_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是用戶(hù)名和密碼。如果設(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]

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

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

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

(subject, message, from_email, recipient_list)

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

例如,以下代碼將向兩組不同的收件人發(fā)送兩個(gè)不同的消息;但是,只能打開(kāi)一個(gè)到郵件服務(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()方法時(shí),每調(diào)用一次,它會(huì)和SMTP服務(wù)器建立一次連接,也就是發(fā)一次連一次,效率很低。而send_mass_mail(),則只建立一次鏈接,就將所有的郵件都發(fā)送出去,效率比較高。

四、防止頭部注入攻擊

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

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

from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect

def 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.')

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

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

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

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

from django.core.mail import EmailMultiAlternatives

subject, 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)容能被閱讀,請(qǐng)務(wù)必同時(shí)發(fā)送純文本郵件。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中日期和時(shí)間的用法超強(qiáng)總結(jié)

    Python中日期和時(shí)間的用法超強(qiáng)總結(jié)

    時(shí)間無(wú)疑是生活各個(gè)方面中最關(guān)鍵的因素之一,因此,記錄和跟蹤時(shí)間變得非常重要。在?Python?中,可以通過(guò)其內(nèi)置庫(kù)跟蹤日期和時(shí)間。今天我們來(lái)介紹關(guān)于?Python?中的日期和時(shí)間,一起來(lái)了解如何使用time和datetime模塊查找和修改日期和時(shí)間
    2022-10-10
  • python將txt文件讀入為np.array的方法

    python將txt文件讀入為np.array的方法

    今天小編就為大家分享一篇python將txt文件讀入為np.array的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 淺談Keras中fit()和fit_generator()的區(qū)別及其參數(shù)的坑

    淺談Keras中fit()和fit_generator()的區(qū)別及其參數(shù)的坑

    這篇文章主要介紹了Keras中fit()和fit_generator()的區(qū)別及其參數(shù)的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python新手教程之while循環(huán)20例

    Python新手教程之while循環(huán)20例

    循環(huán)的作用就是讓指定的代碼重復(fù)的執(zhí)行,while循環(huán)最常用的應(yīng)用場(chǎng)景就是讓執(zhí)行的代碼按照指定的次數(shù)重復(fù)執(zhí)行,這篇文章主要給大家介紹了關(guān)于Python新手教程之while循環(huán)20例的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • python 制作本地應(yīng)用搜索工具

    python 制作本地應(yīng)用搜索工具

    這篇文章主要介紹了python 制作本地應(yīng)用搜索工具的方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • media配置及把用戶(hù)頭像從數(shù)據(jù)庫(kù)展示到前端的操作方法

    media配置及把用戶(hù)頭像從數(shù)據(jù)庫(kù)展示到前端的操作方法

    media配置可以讓用戶(hù)上傳的所有文件都固定的存放在某一個(gè)指定的文件夾下,接下來(lái)通過(guò)本文給大家介紹下media配置及把用戶(hù)頭像從數(shù)據(jù)庫(kù)展示到前端的操作,需要的朋友可以參考下
    2022-09-09
  • python在windows和linux下獲得本機(jī)本地ip地址方法小結(jié)

    python在windows和linux下獲得本機(jī)本地ip地址方法小結(jié)

    這篇文章主要介紹了python在windows和linux下獲得本機(jī)本地ip地址方法,實(shí)例分析了Python獲得IP地址的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • python實(shí)現(xiàn)LRU熱點(diǎn)緩存及原理

    python實(shí)現(xiàn)LRU熱點(diǎn)緩存及原理

    LRU算法根據(jù)數(shù)據(jù)的歷史訪(fǎng)問(wèn)記錄來(lái)進(jìn)行淘汰數(shù)據(jù),其核心思想是“如果數(shù)據(jù)最近被訪(fǎng)問(wèn)過(guò),那么將來(lái)被訪(fǎng)問(wèn)的幾率也更高”。 。這篇文章主要介紹了python實(shí)現(xiàn)LRU熱點(diǎn)緩存,需要的朋友可以參考下
    2019-10-10
  • 用Python爬取2022春節(jié)檔電影信息

    用Python爬取2022春節(jié)檔電影信息

    大家好,本篇文章主要講的是用Python爬取2022春節(jié)檔電影信息,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下
    2022-01-01
  • Python 將 CSV 分割成多個(gè)文件的示例代碼

    Python 將 CSV 分割成多個(gè)文件的示例代碼

    在本文中,我們討論了如何使用 Pandas 庫(kù)創(chuàng)建 CSV 文件, 此外,我們還討論了兩種常見(jiàn)的數(shù)據(jù)拆分技術(shù),行式數(shù)據(jù)拆分和列式數(shù)據(jù)拆分,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

房产| 英德市| 梁平县| 敦化市| 郸城县| 台安县| 洪泽县| 儋州市| 雷波县| 阿克陶县| 宣威市| 金昌市| 宝应县| 广饶县| 潼南县| 乃东县| 海晏县| 临沭县| 屏南县| 大田县| 弥勒县| 安化县| 东乌珠穆沁旗| 腾冲县| 麻城市| 木里| 平凉市| 桂林市| 三都| 南城县| 明溪县| 佛冈县| 克拉玛依市| 昌都县| 通山县| 永胜县| 江源县| 长沙市| 伊吾县| 横山县| 于都县|