Flask-mail 邮件带中文名称的附件

  1. 前提代码编码格式为UTF-8 设置方式是在文件第一行或第二行# -- coding:utf-8 --flask

  2. MIME格式服务器

MIME_TYPE = {
        '.xls':  'application/vnd.ms-excel',
        '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        '.txt':  'text/plain',
        '.pdf':  'application/pdf',
        '.doc':  'application/msword',
        '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
        '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
        '.ppt':  'application/vnd.ms-powerpoint',
        '.rar':  'application/rar',
        '.zip':  'application/zip',
        '.tar':  'application/x-tar',
        '.gz':   'application/x-gzip'
    }

根据自身的需求到w3school(http://www.w3school.com.cn/media/media_mimeref.asp) 查找 office 2007以后的版本Excel、word、ppt有的差别app

  1. 邮件服务器的配置参考flask-mail标准配置便可编码

  2. 发送邮件excel

from flask.ext.mail import Mail, Message
msg = Message(邮件标题,
                sender='发件人地址',
                recipients=['多个收件人地址']
            )
# 添加多个附件
for document in documents_path:
    # 文件的文件名
    file_name = os.path.basename(document)
    with current_app.open_resource(document) as fp:
        # file_name.encode("utf-8") 对文件名进行编码
        # current_app.config['MIME_TYPE'][os.path.splitext(file_name)[1]] 经过后缀名,获取MIME格式
        msg.attach(file_name.encode("utf-8"), current_app.config['MIME_TYPE'][os.path.splitext(file_name)[1]], fp.read())

    msg.body = 邮件正文
    # 发送邮件
    mail.send(msg)
相关文章
相关标签/搜索