在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...