# smtp邮件发送参数
settings 中设置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.sina.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = ‘*******@sina.com'
DEFAULT_FROM_EMAIL = ‘*********@sina.com'
EMAIL_HOST_PASSWORD = ‘***************'
EMAIL_USE_TLS = True
import sys
from email.MIMEText import MIMEText
from django.core.mail import EmailMultiAlternatives
from django.template import loader
# recipients:收件人,是一个数组
# sender 发件人
# template 模板名 用于寻找要发送模板
# context 传入模板中的参数,是字典,会根据所传的模板不同而不同
def _send_mail_template(recipients, sender=None, template=None, context=None):
if context is None:
logger.error("_send_mail_template context is None.")
return False
if not sender:
sender = settings.DEFAULT_FROM_EMAIL
html_body = ""
if template == 'password_reset':
html_body = loader.render_to_string("email/reset_password.html",context,)
reload(sys)
sys.setdefaultencoding('utf-8')
subject = ""
if template == 'password_reset':
subject = '密码重置' # 邮件标题
text_content = ''
msg = MIMEText(html_body, 'html','utf-8')
msg['subject'] = subject # 邮件主题
msg['from'] = sender # 发件人
msg['to'] = recipients # 收件人
try:
# headers = {"Cc":",".join(cclist)}这一部分起到显示的作用。 cclist 抄送名单
# 不加的话,邮件是可以发送成功的,但是发送的邮件里不显示抄送的名单,回复的时候不能回复所有,不方便
# msg = EmailMultiAlternatives(subject, text_content, from_email, tolist, cclist,
# headers={"Cc": ",".join(cclist)})
msg = EmailMultiAlternatives(subject, text_content, sender, recipients)
# 邮件显示html_body的内容,html编码
msg.attach_alternative(html_body, "text/html")
msg.send()
print ("邮件发送成功,没有收到请查看垃圾箱")
return True
except Exception, e:
return False