python通過(guò)SMTP發(fā)送郵件實(shí)例

直接上代碼

郵件信息類
#!/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

    '''發(fā)送郵件'''
    def send(self,rptType, msg, file):
        print('sending email...')
        # 創(chuàng)建一個(gè)帶附件的實(shí)例
        message = MIMEMultipart()
        message['From'] = Header(self.msgfrom, 'utf-8')
        message['To'] = Header(self.msgto, 'utf-8')
        message['Subject'] = Header(self.subject + rptType, 'utf-8')
        # 郵件正文內(nèi)容
        message.attach(MIMEText(msg, 'plain', 'utf-8'))
        # 構(gòu)造附件
        att1 = MIMEText(open(file, 'rb').read(), 'base64', 'utf-8')
        att1["Content-Type"] = 'application/octet-stream'
        # 這里的filename為郵件中附件名
        filename = file.split("/")[-1]
        # 附件名稱為中文時(shí)的寫(xiě)法
        att1.add_header("Content-Disposition", "attachment", filename=("gbk", "", filename))
        # 附件名稱非中文時(shí)的寫(xiě)法
        # att1["Content-Disposition"] = 'attachment; filename="%s"'% (filename)
        message.attach(att1)
        # 發(fā)送郵件
        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函數(shù)
if __name__ == '__main__':
    rptType = '周報(bào)SMTP測(cè)試'
    msg = '這是Python 郵件發(fā)送測(cè)試……'
    file = '../output/報(bào)表_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 = 報(bào)表服務(wù)
MSGFROM = 技術(shù)部
MSGTO = 運(yùn)營(yíng)部
SMTPHOST = localhost
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,307評(píng)論 0 17
  • 一菜一江湖!一味一人間! 正如蘇軾所說(shuō)“人間有味是清歡” 陳曉卿導(dǎo)演的《風(fēng)味人間》用幀幀美味、處處走心贏得了個(gè)平臺(tái)...
    青旅投資訊閱讀 602評(píng)論 0 4
  • 依賴相關(guān)api: /** * 依賴配置api */ buildscript {ScriptHandler scri...
    高斯巴閱讀 2,250評(píng)論 0 0
  • 在黎明與黑暗的交錯(cuò)中 我和陰影艱難跋涉 骨子里傳承的堅(jiān)強(qiáng) 在現(xiàn)實(shí)的昏暗里畏懼、閃躲 內(nèi)心躁動(dòng)著渴望 幻獸卻始終癡等...
    不惑而歌閱讀 323評(píng)論 0 4
  • 你相信命運(yùn)嗎? 命運(yùn),這個(gè)詞我們常常掛在嘴邊,似乎與生俱來(lái)的跟我們息息相關(guān),卻又玄乎其玄讓人琢磨不透。究竟何為命運(yùn)...
    沐風(fēng)子兮閱讀 2,169評(píng)論 0 3

友情鏈接更多精彩內(nèi)容