使用python发送邮件可带附件

使用


python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

在python中,MIME的这些对象的继承关系如下。

MIMEBase

    |-- MIMENonMultipart

        |-- MIMEApplication

        |-- MIMEAudio

        |-- MIMEImage

        |-- MIMEMessage

        |-- MIMEText

    |-- MIMEMultipart

一般来说,不会用到MIMEBase,而是直接使用它的继承类。MIMEMultipart有attach方法,而MIMENonMultipart没有,只能被attach。

MIME有很多种类型,这个略麻烦,如果附件是图片格式,我要用MIMEImage,如果是音频,要用MIMEAudio,如果是word、excel,我都不知道该用哪种MIME类型了,得上google去查。

最懒的方法就是,不管什么类型的附件,都用MIMEApplication,MIMEApplication默认子类型是application/octet-stream。

以上内容出自原文,下方带有链接。


特别说明


想通过QQ邮箱来发送邮件,需开启QQ邮箱的设置-账户里POP3/SMTP服务,通过发送短信验证来获得授权码,有了授权码后就可以在代码里添加了。


开启pop/smtp


授权码


测试代码


#!/usr/bin/python

#!/usr/bin/python

# _*_ coding: utf-8 _*_

import os

import smtplib

from email.mime.text import MIMEText

from email.utils import formataddr

from email.header import Header

'''

函数说明:Send_email_text() 函数实现发送带有附件的邮件,可以群发,附件格式包括:xlsx,pdf,txt,jpg,png,mp3等都可以

参数说明:

    1. subject:邮件主题

    2. content:邮件正文

    3. filepath:附件的地址, 输入格式为["","",...]

    4. receive_email:收件人地址, 输入格式为["","",...]

'''

def Send_email_text(subject,content,filepath,receive_email):

    import smtplib

    from email.mime.multipart import MIMEMultipart

    from email.mime.text import MIMEText

    from email.mime.application import MIMEApplication

    sender = 'xxx@qq.com'             #发送方邮箱

    passwd = 'gmdfztzbinlvbiei'         #填入发送方邮箱的授权码

    receivers = receive_email            #收件人邮箱

    msgRoot = MIMEMultipart()

    msgRoot['Subject'] = subject

    msgRoot['From'] = sender

    if len(receivers)>1:

        msgRoot['To'] = ','.join(receivers)    #群发邮件

    else:

        msgRoot['To'] = receivers[0]

    part = MIMEText(content,_charset="utf-8")

    msgRoot.attach(part)

    ##添加附件部分

    for path in filepath:

        part = MIMEApplication(open(path,'rb').read())

        part.add_header('Content-Disposition', 'attachment', filename=path)

        msgRoot.attach(part)

    try:

        #s = smtplib.SMTP()

        #s.connect("smtp.mail.aliyun.com") #这里我使用的是阿里云邮箱,也可以使用163邮箱:smtp.163.com

        s = smtplib.SMTP_SSL('smtp.qq.com',465)    #邮件服务器及端口号,qq邮箱

        s.login(sender, passwd)

        s.sendmail(sender, receivers, msgRoot.as_string())

        print ("邮件发送成功")

    except smtplib.SMTPException as e:

        print("Error, 发送失败")

    finally:

        s.quit()

subject = "文件测试"

content = "Python 邮件测试"

#file_path = ["smtp.py","smtp_attach.py","smtpatt.py"]                  #发送三个文件到三个邮箱

file_path = os.listdir('./')

files.remove('smtp_attach.py')

receive_email = ["xxx@yamu.com","xxx@qq.com","xxx@qq.com"]

Send_email_text(subject,content,file_path,receive_email)


测试结果



相关参考

参考原文

简单的例子

一个附件例子

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,217评论 4 16
  • 网络 理论模型,分为七层物理层数据链路层传输层会话层表示层应用层 实际应用,分为四层链路层网络层传输层应用层 IP...
    FlyingLittlePG阅读 768评论 0 0
  • Django 官方文档 发送email 官网地址:[https://docs.djangoproject.com/...
    学以致用123阅读 2,260评论 0 2
  • 前言 在进行日常的自动化测试实践中,我们总是需要将测试过程中的记录、结果等等等相关信息通过自动的手段发送给相关人员...
    苦叶子阅读 644评论 0 5
  • 最近碰见一个大佬问我python发送邮件的问题, 之前用过, 但也忘了七七八八了,现在趁此机会, 重新整理之, 以...
    董小贱阅读 2,457评论 0 14