python通过SMTP发送邮件实例

直接上代码

邮件信息类
#!/usr/bin/env python
# encoding: utf-8
'''
@author: fengtao.xue
@license: (C) Copyright 2016-2019, GAUSSCODE.
@contact: fengtao.xue@gausscode.com
@software: 
@file: mailUtils.py
@time: 2019/4/11 15:33
@desc:
'''
import configparser
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
class MailInfo:
    sender = ''
    recivers = ''
    subject = ''
    msgfrom = ''
    msgto = ''
    smtphost = ''

    def __init__(self, sender, recivers, subject, msgfrom, msgto, smtphost):
        self.sender = sender
        self.recivers = recivers
        self.subject = subject
        self.msgfrom = msgfrom
        self.msgto = msgto
        self.smtphost = smtphost

    '''发送邮件'''
    def send(self,rptType, msg, file):
        print('sending email...')
        # 创建一个带附件的实例
        message = MIMEMultipart()
        message['From'] = Header(self.msgfrom, 'utf-8')
        message['To'] = Header(self.msgto, 'utf-8')
        message['Subject'] = Header(self.subject + rptType, 'utf-8')
        # 邮件正文内容
        message.attach(MIMEText(msg, 'plain', 'utf-8'))
        # 构造附件
        att1 = MIMEText(open(file, 'rb').read(), 'base64', 'utf-8')
        att1["Content-Type"] = 'application/octet-stream'
        # 这里的filename为邮件中附件名
        filename = file.split("/")[-1]
        # 附件名称为中文时的写法
        att1.add_header("Content-Disposition", "attachment", filename=("gbk", "", filename))
        # 附件名称非中文时的写法
        # att1["Content-Disposition"] = 'attachment; filename="%s"'% (filename)
        message.attach(att1)
        # 发送邮件
        try:
            smtpObj = smtplib.SMTP(self.smtphost)
            smtpObj.sendmail(self.sender, self.recivers, message.as_string())
            print("Info: send email successfully")
        except smtplib.SMTPException:
            print("Error: send email failed")
初始化邮件信息
def init():
    print('init MailInfo...')
    cf = configparser.ConfigParser()
    cf.read('./config.ini',encoding="utf-8-sig")
    sender = cf.get("mail-info", "SEMDER")
    recivers = cf.get("mail-info", "RECEIVERS").split(',')
    subject = cf.get("mail-info", "SUBJECT")
    msgfrom = cf.get("mail-info", "MSGFROM")
    msgto = cf.get("mail-info", "MSGTO")
    smtphost = cf.get("mail-info", "SMTPHOST")
    return MailInfo(sender, recivers, subject, msgfrom, msgto, smtphost)
mian函数
if __name__ == '__main__':
    rptType = '周报SMTP测试'
    msg = '这是Python 邮件发送测试……'
    file = '../output/报表_2019-01-01_2019-01-31.xls'
    mailInfo = init()
    mailInfo.send(rptType, msg, file)
config.ini文件
[mail-info]
SEMDER=xft0809@163.com
RECEIVERS=fengtao.xue@gausscode.com
SUBJECT = 报表服务
MSGFROM = 技术部
MSGTO = 运营部
SMTPHOST = localhost
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,935评论 0 17
  • 一菜一江湖!一味一人间! 正如苏轼所说“人间有味是清欢” 陈晓卿导演的《风味人间》用帧帧美味、处处走心赢得了个平台...
    青旅投资讯阅读 3,584评论 0 4
  • 依赖相关api: /** * 依赖配置api */ buildscript {ScriptHandler scri...
    高斯巴阅读 6,537评论 0 0
  • 在黎明与黑暗的交错中 我和阴影艰难跋涉 骨子里传承的坚强 在现实的昏暗里畏惧、闪躲 内心躁动着渴望 幻兽却始终痴等...
    不惑而歌阅读 2,405评论 0 4
  • 你相信命运吗? 命运,这个词我们常常挂在嘴边,似乎与生俱来的跟我们息息相关,却又玄乎其玄让人琢磨不透。究竟何为命运...
    沐风子兮阅读 6,343评论 0 3

友情链接更多精彩内容