十九 Django框架,发送邮件
全局配置settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' #发送邮件引擎 EMAIL_USE_TLS = False #是否以https方式 EMAIL_HOST = 'smtp.163.com' #邮件smtp服务器 EMAIL_PORT = 25 #端口 EMAIL_HOST_USER = '15284816568@163.com' #发件人 EMAIL_HOST_PASSWORD = 'adc279818' #发件人密码 DEFAULT_FROM_EMAIL = '玉秀文化 <15284816568@163.com>' #收件人显示的发件人信息
send_mail() 每次发邮件都会建立一个连接,发多封邮件时建立多个连接
from django.core.mail import send_mail send_mail('主题', '内容', '玉秀文化 <15284816568@163.com>',['729088188@qq.com'], fail_silently=False)
send_mass_mail() 是建立单个连接发送多封邮件,所以一次性发送多封邮件时 send_mass_mail 要优于 send_mail。
from django.core.mail import send_mass_mail message1 = ('主题', '内容', '玉秀文化 <15284816568@163.com>', ['729088188@qq.com', '244831604@qq.com']) message2 = ('主题', '内容', '玉秀文化 <15284816568@163.com>', ['729088188@qq.com']) a = send_mass_mail((message1,message2), fail_silently=False) print(a)
如果我们想在邮件中添加附件,发送 html 格式的内容
from django.conf import settings from django.core.mail import EmailMultiAlternatives from_email = settings.DEFAULT_FROM_EMAIL # subject 主题 content 内容 to_addr 是一个列表,发送给哪些人 msg = EmailMultiAlternatives(subject, content, from_email, [to_addr]) msg.content_subtype = "html" # 添加附件(可选) msg.attach_file('./twz.pdf') # 发送 msg.send()
上面的做法可能有一些风险,除非你确信你的接收者都可以阅读 html 格式的 邮件。
为安全起见,你可以弄两个版本,一个纯文本(text/plain)的为默认的,另外再提供一个 html 版本的(好像好多国外发的邮件都是纯文本的)
from __future__ import unicode_literals from django.conf import settings from django.core.mail import EmailMultiAlternatives subject = '来自自强学堂的问候' text_content = '这是一封重要的邮件.' html_content = '<p>这是一封<strong>重要的</strong>邮件.</p>' msg = EmailMultiAlternatives(subject, text_content, from_email, [to@youemail.com]) msg.attach_alternative(html_content, "text/html") msg.send()