django发送带附件email

 开发环境:

  • python:3.6
  • django:1.11.8

settings.py配置:

# settings.py

# qq邮件
## IMAP/SMTP
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.qq.com'  # 如果是 163 改成 smtp.163.com
EMAIL_PORT = 465   #qq smtp 端口号
EMAIL_HOST_USER = '********@qq.com' # 帐号
EMAIL_HOST_PASSWORD = '**********'  # qq授权码
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER


## 网易邮件
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.163.com'  # 如果是 163 改成 smtp.163.com
EMAIL_PORT = 25   # 网易 smtp 端口号
EMAIL_HOST_USER = '*****@163.com' # 帐号  # [email protected]
EMAIL_HOST_PASSWORD = '********'  # 授权码
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

发送邮件函数:

from django.conf import settings
from django.core.mail import EmailMultiAlternatives
from email.header import make_header
import os

def send_mail(receive_email_addr,file_path):
    '''
        发送带附件邮件函数
        parameter:
            receive_email_addr: 邮箱地址list    ['***@163.com','***@qq.com',...]
            file_path:          附件绝对路径地址
    '''
    print('**************开始生成消息*********************')
    subject = '报告邮件'
    text_content = '这是一封重要的报告邮件.'
    html_content = '<p>这是一封<strong>重要的报告邮件</strong>.</p>'
    from_email = settings.DEFAULT_FROM_EMAIL
    msg = EmailMultiAlternatives(subject, text_content, from_email, receive_email_addr)
    msg.attach_alternative(html_content, "text/html")
    # 发送附件
    print('********************发送附件********************')
    text = open(file_path, 'rb').read()
    file_name = os.path.basename(file_path)
    # 对文件进行编码处理
    b = make_header([(file_name, 'utf-8')]).encode('utf-8')
    msg.attach(b, text)
    # msg.attach_file(file_path)
    msg.send()
    if msg.send():
        print('******************发送成功*********************')
    else:
        print('******************发送失败*********************')
    print('********************发送完成********************')

猜你喜欢

转载自blog.csdn.net/Suger999/article/details/84566604
今日推荐