91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在django中使用smtp模塊發送郵件

發布時間:2021-03-18 15:34:19 來源:億速云 閱讀:175 作者:Leah 欄目:開發技術

這篇文章給大家介紹怎么在django中使用smtp模塊發送郵件,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

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

from django.core.mail import send_mail

send_mail(
  'Subject here',
  'Here is the message.',
  'from@example.com',
  ['to@example.com'],
  fail_silently=False,
)

導入功能模塊,然后發送郵件,so easy!

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

二、單發 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()方法,它接收一系列參數,其中的subject、message、from_email和recipient_list參數是必須的,其它的可選。

  • subject:郵件主題。字符串。

  • message:郵件具體內容。字符串。

  • from_email:郵件發送者。字符串。

  • recipient_list:收件人。一個由郵箱地址組成的字符串列表。recipient_list中的每一個成員都會在郵件信息的“To:”區域看到其它成員。

  • fail_silently: 一個布爾值。如果它是False,send_mail發送失敗時,將會引發一個smtplib.SMTPException異常。

  • auth_user: 可選的用戶名用來驗證SMTP服務器,如果你要特別指定使用哪個郵箱帳號,就指定這個參數。如果沒有提供這個值,Django將會使用settings中EMAIL_HOST_USER的值。如果兩者都不提供,那你還發什么???

  • auth_password: 可選的密碼用來驗證SMTP服務器。如果沒有提供這個值,Django 將會使用settings中EMAIL_HOST_PASSWORD的值。和上面那個參數是一家的。

  • connection: 可選的用來發送郵件的電子郵件后端。

  • html_message: 如果提供了html_message,可以發送帶HTML代碼的郵件。

send_mail()方法返回值將是成功發送出去的郵件數量(只會是0或1,因為它只能發送一封郵件)。

三、群發 send_mass_mail()

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

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

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

(subject, message, from_email, recipient_list)
上面四個字段的意義與send_mail()中的相同。

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

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()方法的返回值是成功發送的郵件數量。

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

四、防止頭部注入攻擊

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

下面是一個例子,接收用戶輸入的主題、郵件內容和發送方,將郵件發送到系統管理員:

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

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

五、發送多媒體郵件

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

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

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()

關于怎么在django中使用smtp模塊發送郵件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝兴县| 保康县| 库尔勒市| 新沂市| 玉溪市| 元氏县| 禄劝| 红桥区| 闵行区| 丹阳市| 龙海市| 迁安市| 沽源县| 酒泉市| 建瓯市| 理塘县| 南乐县| 区。| 吉林省| 岐山县| 勃利县| 永昌县| 隆尧县| 莲花县| 桐柏县| 普定县| 成安县| 松江区| 安吉县| 宜黄县| 安陆市| 池州市| 翼城县| 喀喇| 泸水县| 太保市| 永胜县| 鲁甸县| 渑池县| 阜宁县| 沙田区|