Django发HTML邮件

来源:互联网 发布:天天养生观耳朵知长寿 编辑:程序博客网 时间:2024/05/08 23:13

工作中一般不会只发纯文件格式的邮件,所以这一章讲发送HTML格式的邮件

setting.py

在setting.py的末尾加上如下代码:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'  #调用Django模块 一般不变EMAIL_HOST ='smtp.qq.com' #邮件服务器,和你发邮件的邮箱相对应。企业用的话一般需要询问一下,每个企业有自己的邮箱服务器配置EMAIL_PORT = 25   #端口 一般25EMAIL_HOST_USER='247128642@qq.com' #发件箱:<span style="font-family: Arial;">可直接向外发送邮件的私人邮箱 或 </span>帮你向外转发邮件的企业提供的特殊邮箱(企业邮箱)EMAIL_HOST_PASSWORD='123456' #密码

view.py

加在view.py的头部,我们要使用放在view.py同级目录下的MultiEmail.py文件中的SendMultiEmail函数(自己写的)

from MultiEmail import SendMultiEmail


MultiEmail.py

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标签后换行比较好。换行随意的话,邮件里偶尔会出现不可捉摸的乱码。

0 0