工作中一般不會只發純文件格式的郵件,所以這一章講發送HTML格式的郵件
setting.py
在setting.py的末尾加上如下代碼:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' #調用Django模塊 一般不變
EMAIL_HOST ='smtp.qq.com' #郵件服務器,和你發郵件的郵箱相對應。企業用的話一般需要詢問一下,每個企業有自己的郵箱服務器配置
EMAIL_PORT = 25 #端口 一般25
EMAIL_HOST_USER='[email protected]' #發件箱:<span style="font-family: Arial;">可直接向外發送郵件的私人郵箱 或 </span>幫你向外轉發郵件的企業提供的特殊郵箱(企業郵箱)
EMAIL_HOST_PASSWORD='123456' #密碼
view.py
加在view.py的頭部,我們要使用放在view.py同級目錄下的MultiEmail.py文件中的SendMultiEmail函數(自己寫的)
from MultiEmail import SendMultiEmail
from django.core.mail import EmailMultiAlternatives #導入郵件模塊
#tolist:收件人;cclist:抄送人;fromemail:發件人
#郵件中顯示的發件人的郵箱,可以試試以其他人的郵件發哈,不保證成功^^
def SendMultiEmail(fromemail,tolist,cclist):
try:
#郵件裏會用到漢字,鑑於Python裏的編碼特別亂,這裏最好設置一下編碼。
reload(sys)
sys.setdefaultencoding('utf-8')
#發送郵件的主體,可以放在函數內,也可以通過參數傳過來,看自己需要。
html_body = '''
<h3>Hi!<br>This is a test Email.</h3>
<table border="1" style="border-width:1px;border-color: #000;border-style:solid;border-collapse: collapse;">
<tr align="center" style="font-weight:bold;font-family:micorsoft yahei;height:30px;">
<td width="150">第一列</td>
<td width="80">第二列</td>
<td width="80">第三列</td>
</tr></table>
'''
#html_body可以通過傳入參數賦值,也可以寫好各部分後加在一起。
#case = '''
# <table border="1" style="border-width:1px;border-color: #000;border-style:solid;border-collapse: collapse;">
# <tr align="center" style="font-family:micorsoft yahei;height:30px;">
# <td width="150">%s</td>
# <td width="80">%s</td>
# <td width="80">%s</td>
# </tr></table>'''%(str1,str2,str3)
#html_body = html_body + case
text_content = 'Hi!這是一封測試郵件。'#對方不支持多媒體郵件的話顯示這裏的內容
subject = '測試郵件' #郵件標題
#headers = {"Cc":",".join(cclist)}這一部分起到顯示的作用。
#不加的話,郵件是可以發送成功的,但是發送的郵件裏不顯示抄送的名單,回覆的時候不能回覆所有,不方便
msg = EmailMultiAlternatives(subject, text_content, from_email, tolist, cclist, headers = {"Cc":",".join(cclist)})
#郵件顯示html_body的內容,html編碼
msg.attach_alternative(html_body, "text/html")
msg.send()
return True
except Exception, e:
return False
Tips:
1.bcc暗送功能一直沒有實現。
2.發送多封郵件的話,循環調用就可以了,沒測試出有什麼bug。
3.‘’‘ ****** ’‘’ 中的內容最好有格式一些,在HTML標籤後換行比較好。換行隨意的話,郵件裏偶爾會出現不可捉摸的亂碼。