匿名用户

1级

2017-03-17 回答

首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。

本文主要介绍利用'smtplib','email'两个模块来实现邮件的发送,可以如下查看两个模块的函数和方法:

smtplib模块简介:

smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])

此为SMTP类构造函数,表示与SMTP服务器之间的连接,并根据这个连接向smtp服务器发送指令,执行相关操作(如:登陆、发送邮件),且每个参数都是可选的。

其中最重要的参数:

host:smtp服务器主机名

port:smtp服务的端口,默认是25;

如果在创建SMTP对象的时候提供了这两个参数,在初始化的时候会自动调用connect方法去连接服务器。

smtplib.SMTP还提供了如下方法:

SMTP.set_debuglevel(level):设置是否为调试模式

SMTP.connect([host[, port]]):连接到指定的smtp服务器。参数分别表示 smpt主机和端口。

SMTP.docmd(cmd[, argstring]):向smtp服务器发送指令。

SMTP.helo([hostname]) :使用"helo"指令向服务器确认身份。

SMTP.login(user, password):登陆到smtp服务器。现在几乎所有smtp服务器,都必须在验证用户信息合法之后才允许发送邮件。(重要!)

SMTP.sendmail(from_addr,to_addrs,msg[,mail_options,rcpt_options]):发送邮件。这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是smtp协议中定义的格式。SMTP.quit() :断开与smtp服务器的连接,相当于发送"quit"指令。(重要!)

常用的函数方法:

email模块

1.class email.message.Message

__getitem__,__setitem__实现obj[key]形式的访问。

Msg.attach(playload): 向当前Msg添加playload。

Msg.set_playload(playload):

Msg.add_header(_name, _value, **_params): 添加邮件头字段。

2.class email.mime.base.MIMEBase(_maintype, _subtype, **_params)

所有MIME类的基类,是email.message.Message类的子类。

3.class email.mime.multipart.MIMEMultipart()

在3.0版本的email模块 (Python 2.3-Python 2.5) 中,这个类位于email.MIMEMultipart.MIMEMult ipart。这个类是MIMEBase的直接子类,用来生成包含多个部分的邮件体的MIME对象。

4.class email.mime.text.MIMEText(_text)

使用字符串_text来生成MIME对象的主体文本。

获得所需要使用的邮箱的host地址和port端口号,(本文使用的是163邮箱,对应的smtp服务器地址:mail.163.com,端口号25)

常用邮箱的smtp服务器地址和端口号如图:

编写程序如下:

#! /usr/bin/env python

import smtpli

from email.mime.text import MIMEText

mailto_list=['xxxx@xxx.com'] #收件人(列表)

mail_host="smtp.163.com" #使用的邮箱的smtp服务器地址

mail_user="name" #用户名

mail_pass="pwd" #密码

mail_postfix="postfix" #邮箱的后缀

def send_mail(to_list,sub,content):

me="hello"+""

msg = MIMEText(content,_subtype='plain')

msg['Subject'] = sub

msg['From'] = me

msg['To'] = ";".join(to_list) #将收件人列表以‘;’分隔

try:

server = smtplib.SMTP()

server.connect(mail_host) #连接服务器

server.login(mail_user,mail_pass) #登录操作

server.sendmail(me, to_list, msg.as_string())

server.close()

return True

except Exception, e:

print str(e)

return False

for i in range(5): #发送五封,不过会被拦截的。。。

if send_mail(mailto_list,"hello","haha!"): #邮件主题和邮件内容

print "done!"

else:

print "failed!"

最后,可以运行编写的py文件,可以得到如图所是的结果,代表邮件发送成功。

这样,就能成功实现用Python发送邮件啦!

python未读邮件_请问如何用python将某个邮箱未读邮件全部转发到另一个邮箱?相关推荐

  1. python 下载网页文件_『如何用python把网页上的文本内容保存下来』python爬取网页内容教程...

    python爬虫:如何爬网页数据并将其放在文本 用requests库 r=r.requests.get(url) r.concent 保存到文件里就行了 如何用python把网页上的文本内容保存下来 ...

  2. python的延时绘图_我是如何用python+小程序实现延时摄影的

    以下是详细步骤打开手机,使用下面图片小程序码"定时间隔拍照"拍照得到一大堆图片.手机每隔n秒拍一张图片,得到很多张图片(通过手机小程序可以实现,你也可以用其他软件)把这些图片拷贝到 ...

  3. python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?

    原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...

  4. python 备份交换机_干货 | 如何用python实现每天定时备份交换机配置文件? 真香~...

    网 工 圈 关注 当交换机配置发生变化,如何自动备份配置到FTP上?2条命令搞定! 上期分享了交换机配置发生变化时,自动备份配置到FTP上的文章,后面有网友私信来问,龙哥,龙哥能不能教一下每天自动备份 ...

  5. python一个图画两条曲线_烦恼如何用python同一图里画多数据曲线吗?教你6种解法...

    概要: python的matplotlib作图很强大,本文教你用6种不同方式解决将多种数据曲线画到一起. 问题: 今天,老板又要一个数据报表,小明选择用 python来实现."用matplo ...

  6. python数据分析就业前景_数据分析师找工作的秘诀,从读懂招聘 JD 开始

    JD(job description缩写),在招聘中,最常用到的意思是岗位介绍和工作职责描述. JD让无数求职者头痛,数据分析师更是其中的头疼之最.这份工作门槛尚可,薪资不错,行业发展前景好,因此吸引 ...

  7. python定义数组大小_请问在python数组要先定义长度吗?

    视情况而定 若数组是追加一个元素的可以不用定义长度: 若初始化一个列表然后要修改其中的值的话,就要定义长度了. 例: 拓展资料 设计定位 Python的设计哲学是"优雅".&quo ...

  8. python游戏开发步骤_【原创】python制作游戏脚本之网游寻址及64位程序的模块遍历(视频已安排)...

    本帖最后由 公孙秒秒 于 2019-4-2 18:11 编辑 前言 ------------------------------------------------- 这篇教程旨在网游的基址查找和如何 ...

  9. python zxing 识别条码_详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强...

    前言 这周和大家分享如何用python识别图像里的条码.用到的库可以是zbar.希望西瓜6辛苦码的代码不要被盗了.(zxing的话,我一直没有装好,等装好之后再写一篇) 具体步骤 前期准备 用open ...

最新文章

  1. 两台ubuntu虚拟机环境下hadoop安装配置
  2. 软件开发人员标准薪金 人月_软件产品测试周期
  3. 【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )
  4. SpringBoot使用@Transactional的类手动注入失败
  5. CI框架json无法Unicode转中文解决方案
  6. 不用安装Oracle Client如何使用PLSQL Developer
  7. transferto遇到的问题java.io.FileNotFoundException: C:\Users\Administrator\AppData\Local\Temp
  8. 软件工程学习进度第九周暨暑假学习进度之第九周汇总
  9. ktm390蓝牙连接安卓_车机蓝牙连接常见问题说明
  10. 崩坏学园2及大部分采用ETC1压缩格式的Unity3D游戏的拆包图处理
  11. Linux服务器的软件安装步骤
  12. 中国剩余定理证明及代码实现
  13. 4、基础理论-平衡软件项目的质量与时间、范围、成本
  14. 适合中学生看的英文电影
  15. python3中利用serial模块实现单片机与python上位机的通信(串口调试助手)
  16. 解决win7-win8 chcp命令无法使用
  17. echarts 添加百分号%
  18. 个人收款码不得用于经营收款
  19. python或c++编写一个文件传输工具
  20. 邻接矩阵,构造有向图、无向图、有向网、无向网,深度优先、广度优先遍历(C++图)

热门文章

  1. php 抽象工厂模式,PHP设计模式(三)抽象工厂模式(Abstract Factory)
  2. python3利用正则表达式爬取内涵段子
  3. 金立java微信_微信金立版下载-微信金立手机版v7.0.21 安卓版 - 极光下载站
  4. 子网掩码的作用是什么 两大作用详解
  5. 谷粒商城--订单服务--高级篇笔记十一
  6. 【UV打印机】理光喷头组合说明(5H)
  7. 数仓开发之DWD层(二)
  8. thinkphp5简介
  9. IT程序员的常见病:颈椎病、肩周炎 .
  10. LY系列之约会大作战 (10分)