使用python来进行发邮件

想做个可以发邮件的程序。。。。最好是自动发邮件。这就是我今晚的目的,所以我今晚上就来进行学习了。主要还是来参考大神的博客。

我主要是参考他的网站,小白一个没有经验算是现学现卖了,废话不多说现在进入主题

(1)发送纯文本文件

python对smtp支持有两个模块,一个是email和smtplib两个模块,email负责构造文件,smtplib负责发送文件,首先构造一个纯文本文件

1 from email.mime.text importMIMEText2

3 msg=MIMEText("hello world",'plain','utf-8')

这样我们使用email构造了一个纯文本的邮件内容,其中“helloworld是编码内容,plain表示的是纯文本内容,还有一种的html格式的,"utf-8"是编码方式

然后我们将使用smtp发送出去

#-*- coding: utf-8 -*-#练习使用发送邮件#Time:2018-8-24

from email.mime.text importMIMETextimportsmtplib

msg=MIMEText("hello world",'plain','utf-8')

from_addr=input("账号:")

password=input,("密码:")

to_addr=input("发送账号:")

smtp_server=input("服务器地址:")#导入smtplib,这是负责发送邮件模块

server=smtplib.SMTP(smtp_server,25) #端口号25

server.set_debuglevel(1)

server.login(from_addr,password)

server.sendmail(from_addr,[to_addr],msg.as_string())

server.quit()

这是因为邮件主题、如何显示发件人、收件人等信息并不是通过SMTP协议发给MTA,而是包含在发给MTA的文本中的,所以,我们必须把From、To和Subject添加到MIMEText中,才是一封完整的邮件:

这是一个纯文本文件,但是一般情况下是发送不成功的,我试过用网易的邮箱给qq的邮箱发送邮件,就没有成功,原因是服务器当作垃圾邮件拦截了,毕竟我们这个邮件没有标题,发送人等信息,这样的话会被拦截,所以接下来将一个可以发送成功的例子:

(2)可以发送带有标题的邮件

1 #-*- coding: utf-8 -*-

2 #练习使用发送邮件

3 #Time:2018-8-24

4 from email.mime.text importMIMEText5 from email.header importHeader6 from email.mime.text importMIMEText7 from email.utils importparseaddr,formataddr8 importsmtplib9 def_format_addr(s):10 #来解析地址

11 name,addr=parseaddr(s)12 return formataddr((Header(name,'utf-8').encode(),addr))13

14 from_addr=input("from_addr:")15 password=input("password")16 to_addr=input("to_addr")17 smtp_server=input("server_addr:like...")18 msg=MIMEText("hello world",'plain','utf-8')19 msg['From']=_format_addr("python初学者 <%s>" %from_addr)20 msg['To']=_format_addr("管理员 <%s>" %to_addr)21 msg['Subject']=Header('标题来自我的问候','utf-8').encode() #含有中文的涉及编码问题

22

23

24 #导入smtplib,这是负责发送邮件模块

25 server=smtplib.SMTP(smtp_server,25) #端口号25

26 server.set_debuglevel(1)27 server.login(from_addr,password)28 server.sendmail(from_addr,[to_addr],msg.as_string())29 server.quit()

理论上可以发送成功,这里需要注意一点,这个登陆密码不是你的邮箱的登陆密码,而是你邮箱的第三方授权码,这个要开通才可以登陆成功

(3)想做一个带附件的,好吧,继续努力

发送附件,如果想发送附件怎么办呢?带附件 的邮件可以看成,邮件本身,和附件。所以,我们构造一个MIMEMulitple对象,然后添加MIMEText最为邮件正文,然后再添加MIMEBase作为附件 。且看代码:

1 #-*- coding: utf-8 -*-

2 #练习使用发送邮件

3 #Time:2018-8-24

4 from email.mime.text importMIMEText5 from email.header importHeader6 from email.mime.text importMIMEText7 from email.mime.multipart importMIMEMultipart8 from email.mime.base importMIMEBase9 from email.utils importparseaddr,formataddr10 from email importencoders11 importsmtplib12 def_format_addr(s):13 #来解析地址

14 name,addr=parseaddr(s)15 return formataddr((Header(name,'utf-8').encode(),addr))16

17 from_addr="111111@163.com"

18 password="111111S"

19 to_addr="11111@qq.com"

20 smtp_server="smtp.163.com"

21

22 msg=MIMEMultipart()23 #邮件正文

24 text=MIMEText("hello world",'plain','utf-8')25 msg.attach(text)26 msg['From']=_format_addr("python初学者 <%s>" %from_addr)27 msg['To']=_format_addr("管理员 <%s>" %to_addr)28 msg['Subject']=Header('标题来自我的问候','utf-8').encode() #含有中文的涉及编码问题

29 #邮件附件

30 #添加附件就是添加MIMEBase 从本地读取一个图片

31 pathName = "C:/Users/sunchongwei/Pictures/自然风景/1.jpg"

32 with open(pathName,'rb') as f:33 #设置附件和文件名

34 mime=MIMEBase('image','jpg',filename='1.jpg')35 #加上必要的头信息

36 mime.add_header('Content-Disposition', 'attachment', filename='1.jpg')37 mime.add_header('Content-ID','<0>')38 mime.add_header('X-Attachment-Id', '0')39 #把附件的内容读进来

40 mime.set_payload(f.read())41 encoders.encode_base64(mime)42 msg.attach(mime)43

44 #导入smtplib,这是负责发送邮件模块

45 server=smtplib.SMTP(smtp_server,25) #端口号25

46 server.set_debuglevel(1)47 server.login(from_addr,password)48 server.sendmail(from_addr,[to_addr],msg.as_string())49 server.quit()

(4)通过SSL加密发送

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

#练习使用发送邮件

#Time:2018-8-24

from email.mime.text import MIMEText

from email.header import Header

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.mime.base import MIMEBase

from email.utils import parseaddr,formataddr

from email import encoders

import smtplib

def _format_addr(s):

#来解析地址

name,addr=parseaddr(s)

return formataddr((Header(name,'utf-8').encode(),addr))

from_addr="@163.com"

password=""

to_addr=""

smtp_server="smtp.163.com"

msg=MIMEMultipart()

#邮件正文

text=MIMEText("hello world",'plain','utf-8')

msg.attach(text)

msg['From']=_format_addr("python初学者 <%s>" %from_addr)

msg['To']=_format_addr("管理员 <%s>" %to_addr)

msg['Subject']=Header('标题来自我的问候','utf-8').encode() #含有中文的涉及编码问题

#邮件附件

#添加附件就是添加MIMEBase 从本地读取一个图片

pathName = "C:/Users/sunchongwei/Pictures/自然风景/1.jpg"

with open(pathName,'rb') as f:

#设置附件和文件名

mime=MIMEBase('image','jpg',filename='1.jpg')

#加上必要的头信息

mime.add_header('Content-Disposition', 'attachment', filename='1.jpg')

mime.add_header('Content-ID','<0>')

mime.add_header('X-Attachment-Id', '0')

#把附件的内容读进来

mime.set_payload(f.read())

encoders.encode_base64(mime)

msg.attach(mime)

#导入smtplib,这是负责发送邮件模块

server=smtplib.SMTP_SSL(smtp_server,465) #端口号465

server.set_debuglevel(1)

server.login(from_addr,password)

server.sendmail(from_addr,[to_addr],msg.as_string())

server.quit()

网易的端口号

大家都知道的。。。

写下心情:好不容易哦

python发送邮件廖雪峰_使用python发送邮件(一)相关推荐

  1. python发送邮件廖雪峰_利用Python的smtplib和email发送邮件

    原理 网上已经有了很多的教程讲解相关的发送邮件的原理,在这里还是推荐一下廖雪峰老师的Python教程,讲解通俗易懂.简要来说,SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本 ...

  2. python发送邮件廖雪峰_【Python】利用邮件远程控制自己电脑

    下载W3Cschool手机App,0基础随时随地学编程 导语 最近经常需要简单地远程控制一下电脑,比如远程查看一下电脑上模型训练的情况,模型训练完之后远程关闭电脑等等,于是就想着利用python来简单 ...

  3. python廖雪峰_【Python】python中实现多进程与多线程

    进程与线程 进程(process)就是任务,是计算机系统进行资源分配和调度的基本单位[1].比如,打开一个word文件就是启动了一个word进程. 线程(thread)是进程内的子任务.比如word中 ...

  4. python发送邮件廖雪峰_电子邮件

    Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务. 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互 ...

  5. python迭代廖雪峰_廖雪峰python教程:迭代

    请使用迭代查找一个list中最小和最大值,并返回一个tuple: #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Donna5126 # 自 ...

  6. python django廖雪峰_如何用Django从零开始搭建一个网站(0)

    python,django等安装就直接略过了.下面直接奔如主题,搭建网站. Step1:新建一个django project,运行命令:'django-admin startproject myPit ...

  7. python 基础 廖雪峰_廖雪峰在官网自学python基本类型,基础

    没啥好说的直接上代码 # -*- coding:utf-8 -*- height = 1.72 weight = 88 BMI = weight/(height*height) if BMI < ...

  8. python商业爬虫教程_廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程...

    廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程 1.JPG (53.51 KB, 下载次数: 1) 2019-8-9 08:15 上传 2.JPG ...

  9. 《python(廖雪峰课程)》学习笔记

    <python(廖雪峰课程)>学习笔记(个人检索) 1. 第一个python程序 input & output print输出字符串可以用""or'' prin ...

  10. python课程开课吧怎么样-廖雪峰总结的Python商业爬虫教程,请查收!

    原标题:廖雪峰总结的Python商业爬虫教程,请查收! 2018 IEEE最热门48种编程语言榜,Python雄踞四项第一! 据介绍,IEEE Spectrum 的排序是综合 10 个精选线上数据源, ...

最新文章

  1. Centos 7 安装LAMP环境
  2. 艾弗森、穆大叔遭“姚式幽默”调侃 全场爆笑
  3. boot gwt_带Spring Boot的GWT
  4. mysql 事实表 维度表_数据库的事实表与维度表
  5. 【32位win7一键扫雷】32位win7系统自带扫雷游戏逆向分析之一键扫雷(附VS代码工程文件、可执行文件和OD分析缓存文件)
  6. 脱机下载至校验成功的脚本
  7. linux重新启动某一个项目,Linux运维知识之supervisor更改某项目配置后 需要重新启动才有效...
  8. 【华为大咖分享】5.交付在云端-全云DevOps研发实践(后附PPT下载地址)
  9. ffmpeg打开音频设备
  10. java在dos命令_JAVA中如何执行DOS命令
  11. 陈强老师公开课笔记1——如何区别中介效应、调节效应与交互效应?
  12. micro/微店API接口(item_search-根据关键词取商品列表)
  13. 每日一课 | python烤地瓜案例
  14. 【时间之外】面向监狱的编程?该学学网络安全法了(2)
  15. php程序检测不到vc9,XAMPP2016中文精简版启动失败 缺少运行库解决办法
  16. 《世界是数字的》读书笔记第一部分_硬件篇
  17. UE4 Socket多线程非阻塞通信【1】
  18. android查ip地址,Android 查看IP地址
  19. 务虚:大局观、方法与关键点
  20. YzmCMS采集之如何利于Python爬虫采集全网文章

热门文章

  1. OpenStack云计算快速入门之三:OpenStack镜像管理
  2. CSS实现段落首行缩进
  3. C++编程语言中类对象的赋值与复制介绍(一)
  4. Django2.1简介及安装
  5. 理解Fragment生命周期(一)
  6. Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
  7. Transformer的中年危机
  8. 震惊!华为对大数据又出新动作!
  9. 【ACL2020】五篇与文本理解相关的论文
  10. 笔记 | 如何在Python下调用Linux的Shell命令?