Django傳送html郵件

2021-06-14 15:11:14 字數 2925 閱讀 6614

在django中,傳送郵件非常的方便,一直沒有時間,今天來做乙個小小的總結吧。

我們常用的當然是通過send_mail傳送郵件:

send_mail(subject,message,from_email,recipient_list,fail_silently=false,auth_user=none,auth_password=none,connection=none)

subject

,message

,from_email

和recipient_list

這四個引數是必須的。

以下是乙個簡單的事例:

from django.core.mail  import  send_mail

from django.template import context, loader

context =

email_template_name = 'template.html'

t = loader.get_template(email_template_name)

mail_list = [user.email, ]

send_mail(

subject=title,

message=t.render(context(context)),

from_email=email_host_user, # 發件郵箱

recipient_list=mail_list,

fail_silently=false,

auth_user=email_host_user, # smtp伺服器的認證使用者名稱

auth_password=email_host_password, # smtp伺服器的認證使用者密碼

connection=none

)

用過的人可能會發現,你在template.html中的標籤,並沒有通過瀏覽器的解析而顯示出來了。

怎麼辦?我們要傳送html郵件,django當然是為你提供了好的解決方案的,請看下面一段**:

from django.core.mail import emailmultialternatives

from django.template import context, loader

subject, from_email, to = title, email_host_user, mail_list

html_content = t.render(context(context))

msg = emailmultialternatives(subject, html_content, from_email, to)

msg.attach_alternative(html_content, "text/html")

msg.send()

看,很簡單吧,那麼現在我要稍稍的做一點點改動,我需要傳送附件給收件人,只需要做乙個簡單的修改即可:

from django.core.mail import emailmultialternatives

from django.template import context, loader

subject, from_email, to = title, email_host_user, mail_list

html_content = t.render(context(context))

msg = emailmultialternatives(subject, html_content, from_email, to)

msg.attach_alternative(html_content, "text/html")

msg.attach_file(u'd:/my documents/python/doc/test.doc') # 新增附件傳送

msg.send()

好了,到此為止,傳送郵件已經結束了。不過,此時,需求變了,我在自己的**上配置了多個傳送郵件的使用者名稱和密碼,現在需要用我指定的使用者名稱和密碼給使用者傳送郵件,該怎麼辦呢?請看下面的一段**:

from django.core.mail import emailmultialternatives,get_connection

from django.template import context, loader

conn = get_connection() # 返回當前使用的郵件後端的例項

conn.username = '[email protected]' # 更改使用者名稱

conn.password = 'my_email' # 更改密碼

conn.host = 'smtp.exmail.qq.com' # 設定郵件伺服器

conn.open() # 開啟連線

email_host_user = '[email protected]'

subject, from_email, to = title, email_host_user, mail_list

html_content = t.render(context(context))

msg = emailmultialternatives(subject, html_content, from_email, to)

msg.attach_alternative(html_content, "text/html")

conn.send_messages([msg,]) # 我們用send_messages傳送郵件

conn.close() # 傳送完畢記得關閉連線

Django傳送郵件

簡介 雖然python提供了smtplib庫,來完成email的傳送功能,但是django對其進行了封裝,使得傳送郵件的介面變得更簡單,更方便,django的封裝位於django.core.mail 例子 from django.core.mail import send mail send mai...

django傳送郵件

django封裝了python自帶的傳送郵件的功能,使其更加簡單易用。1 settings中進行配置 email backend django.core.mail.backends.smtp.emailbackend email use tls true email host smtp.163.co...

Django傳送郵件

django提供了傳送郵件的介面,僅需做簡單的設定即可實現傳送郵件的功能。首先需要在setting做簡單的配置,以163郵箱為例 email backend django.core.mail.backends.smtp.emailbackend email host smtp.163.com ema...