发邮件的思路(借用第三方服务):

1、模拟服务器其中有:服务器地址,发送者地址、发送者的密码

2、创建一个带附件的实例:1、创建一个massage 2、massage包括发送者的地址、接受者的地址、标题

3、对正文转化为文本模式,MIMEText函数,它的参数有:邮件的内容或文件(文档、视频、图片这一些你都要读取文件才能发送)名)、邮件的格式、utf-8

4、添加正文:用attach函数,可以运用多个attach函数传递文件

5、发邮件:进入服务端(登录)login(登录函数)、发送sendmail(发送),需要的参数有:发送的地址、接收者、message.as_string()

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

#模拟服务器
#SMTP服务器
SMTPServer="smtp.163.com"
#发邮件的地址
Sender="xxxx@163.com"
#发送者邮件的授权密码
passwd="xxxxx"  

# 创建一个带附件的实例
message = MIMEMultipart()
message['From'] = Sender

message['To'] = "xxxx@qq.com"
subject = 'Python SMTP 邮件测试'
message['Subject'] = subject
# 邮件正文内容
message.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))

# 构造附件1

att1 = MIMEText(open('文件名', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1["Content-Disposition"] = 'attachment; filename="文件名"'
message.attach(att1)

# 构造附件2

att2 = MIMEText(open('文件名', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="文件名"'
message.attach(att2)

try:
       mailServer = smtplib.SMTP(SMTPServer, 25)  # 25为端口号(邮件),0-1024都被系统占用了
    # 登录邮箱
    mailServer.login(Sender, passwd)  # 需要的是,邮箱的地址和授权密码
    # 发送文件
    mailServer.sendmail(Sender, ["xxxx@qq.com"], message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException:
    print("Error: 无法发送邮件")

python之路:发附带文件的邮件的更多相关文章

  1. NO.3:自学python之路------集合、文件操作、函数

    引言 本来计划每周完成一篇Python的自学博客,由于上一篇到这一篇遇到了过年.开学等杂事,导致托更到现在.现在又是一个新的学期,春天也越来越近了(冷到感冒).好了,闲话就说这么多.开始本周的自学Py ...

  2. 【python之路19】文件操作

    一.打开文件 文件句柄 = open('文件路径', '模式') 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r ...

  3. 小白的python之路10/29 文件归档

    一打包解包文件 [root@localhost ~]# cd /test/[root@localhost test]# touch a.txt b.txt c.txt[root@localhost t ...

  4. python实现自动发邮件

    Python有两个内置库:smtplib和email,可以实现邮件功能,无需下载,直接import导入. smtplib库负责发送邮件 Email库负责构造邮件格式和内容 邮件发送需要遵守SMTP协议 ...

  5. python从任意文件读取邮件地址输出的代码

    如下的资料是关于python从任意文件读取邮件地址输出的代码. # This script takes whatever you throw at stdin and outputs email ad ...

  6. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

  7. Python之路-文件操作(py3)

    文件操作的基本步骤: 1.打开文件:f=open('filename'),with open('filename') as f 2.操作文件:增,删,改,查 3.关闭文件:f.close 打开文件 p ...

  8. Python之路【第三篇】:文件操作

    一.文件操作步骤 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 歌名:<大火> 演唱:李佳薇 作词:姚若龙 作曲:马奕强 歌词: 有座巨大的停了的时钟 倾倒在赶 ...

  9. Python之路-Python中文件和异常

    一.文件的操作 open函数 在python中,使用open函数,打开一个已经存在的文件,或者新建一个新文件. 函数语法 open(name[, mode[, buffering[,encoding] ...

随机推荐

  1. Android实战简易教程-第二十八枪(Uri转String型实例)

    接上一篇文章.我们能够轻易的获取所选图片的uri,那么我们考虑怎样将获取的uri转换成String型的地址呢? 接下来我们通过实例来研究.布局文件和上篇(二十七枪)一致,我们就不再列出,直接看Main ...

  2. c++ string类的完整实现!!!

    本文实现了c++ STL中的basic_string模板类,当然.通过typedef也就实现了string类和wstring类.限于篇幅,实现代码中用到了标准库的char_traits模板类,本人自己 ...

  3. C语言之基本算法38—格式化输出10000以内的全部完数

    //穷举法! /* ================================================================== 题目:求10000以内的全部完数,统计数量并以 ...

  4. ubuntu 各种窗体操作

    通用 ctrl+alt+0~9 改变窗体大小和是否显示 alt+F4 关闭窗体菜单键+相应启动器位置的编号打开程序 ctrl+pageup/pagedown 在tab间移动 ctrle+shift+p ...

  5. NUTCH2.3 hadoop2.7.1 hbase1.0.1.1 solr5.2.1部署(一)

     Precondition: hadoop 2.7.1 Nutch 2.3 hbase 1.0.1.1 / hbase 0.98.13 solr 4.8.1 Linux version 3.16. ...

  6. 熟悉了下HTTP协议

    HTML是一种用来定义网页的文本,会HTML,就可以编写网页: HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信.200表示一个成功的响应,后面的OK是说明.失败的响应有404 Not ...

  7. Lamp安装 php-v5.6【ZendGuardLoader】的问题

    Lamp安装 php-v5.6[ZendGuardLoader]的问题 标签(空格分隔):php,linux Apache日志: 就这个问题导致无法解析运行php文件.下面是网上找的解决方案 Zend ...

  8. HBase框架基础(三)

    * HBase框架基础(三) 本节我们继续讨论HBase的一些开发常识,以及HBase与其他框架协调使用的方式.在开始之前,为了框架之间更好的适配,以及复习之前HBase的配置操作,请使用cdh版本的 ...

  9. Oozie框架基础

    * Oozie框架基础 官方文档地址:http://oozie.apache.org/docs/4.0.0/DG_QuickStart.html 除Oozie之外,类似的框架还有: ** Zeus:h ...

  10. jsp输出金字塔

    <% String str = ""; for(int i = 1; i <= 5; i++){ for(int j = 1; j <= 5-i; j++){ s ...