利用Python收发邮件
一封电子邮件的发送过程:
1. 发件人 -> MUA MUA: 邮件用户代理 像Outlook或faxmail之类的软件就属于MUA
2. MUA -> MTA MTA:邮件传输代理 邮件服务提供商就属于MTA,比如网易、新浪等
3、MTA->MTA 由于收发邮件双方的服务提供商可能不同,比如有的是@sina.com, 有的是@163.com 所有这时就要涉及到
MTA之间的转发
4、MTA->MDA MDA:邮件投递代理 邮件到达MDA后,邮件会存放在目的信箱的某个服务器上。
5、MDA->MUA 收件人要取到邮件必须要通过MUA从MDA上把邮件取到电脑本地
所以编写程序来实现发送和接收邮件,本质上就是:
1. 编写MUA把邮件发到MTA 这个过程使用SMTP协议
2. 编写MUA从MDA上收邮件 这个过程使用POP3或者IMAP协议
假设我们现在有两个邮箱:xxx@163.com xxx@qq.com
大多数的邮件服务商都需要手动打开SMTP发信和POP收信功能,否则只允许在网页登录。
(一)从163邮箱发送邮件到qq邮箱
注意:当用程序模拟MUA发送邮件时,要保证163邮箱的SMTP服务开启,而qq邮箱没有特殊设置(前提是你用网页打开邮箱)
网易默认开启这些服务,但是要成功发送邮件还要开启“客户端授权码”
开启之后会让用户设置一个授权码
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件,可以发送纯文本邮件、HTML邮件和带附件的邮件。
#!/usr/bin/python
#coding=utf-8
from email.mime.text import MIMEText
import smtplib
send_str = '''
你好:
收到信息请回复,谢谢!
此致
敬礼
'''
msg = MIMEText(send_str, 'plain', 'utf-8') #构建发送的正文文本,’send_str‘就是邮件的正文,’plain‘代表纯文本
from_addr = 'xxx@163.com' #发件人信箱
password = 'xxxxx' #客户端授权密码
to_addr = '871990719@qq.com' #收件人信箱
smtp_server = 'smtp.163.com' #smtp地址
msg['subject'] = 'python' #邮件主题
msg['from'] = from_addr #收件人
msg['to'] = to_addr #发件人
server = smtplib.SMTP_SSL() #使用SSL方式
server.connect(smtp_server, '465') #注意端口号是465
#server.set_debuglevel(1) #设置debug模式 可以显示交互过程
server.login(from_addr, password) #登录SMTP服务器
server.sendmail(from_addr, [to_addr], msg.as_string()) #发送邮件 可以发送多人所以收件人地址是一个list
server.quit()
注意:通过实验发现 通过163信箱发送邮件时,“邮件主题” “收件人” “发件人”不能全空,否则发送会失败
(二)发送带附件的邮件
使用MIMEMutipart为邮件添加 “发送文本”和“附件”
send_str = '<h1 style="color:red">上岸报考祝您成功</h1>'
textApart = MIMEText(send_str, 'html', 'utf-8') #采用“html”格式发送文本,可以设置文本格式
pdfFileLocation = 'C:\\project\\io_file\\output\\'
pdfName = '报考 .pdf' #这里如果采用utf-8编码,发送邮件中的附件格式不正确
pdfFile = (pdfFileLocation+pdfName).decode('utf-8') #这里进行utf-8编码,以便正确查找文件位置
pdfApart = MIMEApplication(open(pdfFile, 'rb').read())
pdfApart.add_header('Content-Disposition', 'attachment', filename=pdfName)
msg = MIMEMultipart()
msg.attach(textApart)
msg.attach(pdfApart)
msg['subject'] = u'报考岗位分析'
msg['from'] = '上岸报考<exam_success@163.com>' #这种设置便于在收件人 的收件箱中显示发件人信息
msg['to'] = to_addr
后面发送邮件步骤同(一)
利用Python收发邮件相关推荐
- Python实战技巧(11)使用python收发邮件时需要的邮箱授权码如何获取
Python实战技巧(1)Python字典类型数据如何递归地通过点'.'的方式访问 Python实战技巧(2)Python的pdb调试代码方法详解 Python实战技巧(3)多版本兼容安装部署(py2 ...
- day21-办公自动化:利用Python发邮件
Excel中绘制图表 下载三方库openpyxl pip install openpyxl from datetime import datetimefrom openpyxl from openpy ...
- Python收发邮件
发送邮件使用SMTP协议,接受POP3或IMAP: 创建邮件内容email模块,发送邮件smtplib模块.发送邮件比较简单,只需先创建SMTP对象,登录服务器后根据发收邮箱地址发送即可: POP3接 ...
- python 收发邮件_python发送各类邮件的主要基本方法
利用python实现基本的邮件发送. 感谢以下博客的整理,本人在学习的同时也做了一些整理 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: ...
- 利用python发邮件
在搜索python教程的时候,碰巧遇到了"利用python发送电子邮件"的教程,觉得很实用,也比较有意思,所以就花了点时间学习发送邮件的脚本是怎样实现的. 我主要是利用SMTP(简 ...
- python 收发邮件_Python 【收发邮件】
发邮件 smtplib模块主要负责发送邮件 email模块主要负责构造邮件.这两个都是Python内置模块 smtplib.SMTP.方法 #按住Ctrl键并点击SMTP ,会看到对SMTP的解释(v ...
- 使用Python收发邮件
首先邮件发送采用的是SMTP协议,邮件接收采用POP协议. 对于发邮件:python对SMTP的支持有两个模块,分别是smtplib和email 这里以QQ邮箱为例,需要先设置账户中的POP3/SMT ...
- 利用SMTP收发邮件
邮件服务器: SMTP:发送.接收 POP3:分捡 测试:从shanghai向nanjing发送邮件 一.实验准备 1. shanghai IP:192.168.11.72 DNS:192.168.1 ...
- Python办公自动化之收发邮件--163和qq邮箱
利用Python发送接收邮件 1.邮件相关概念 POP3:Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子 ...
- python 接收邮件服务器地址_Python 用IMAP接收邮件
一.简介 IMAP(Internet Message Access Protocol),这个协议与POP一样,也是从邮件服务器上下载邮件到本机,不过IMAP比POP的功能要更加强大些,IMAP除支持P ...
最新文章
- 人工智能领域的未来和挑战
- sqlserver yml配置文件
- 什么是空中下载技术?学嵌入式必看!
- c#操作mysql数据库
- 公司怎么吸引和留住核心技术大牛
- Windows下C语言的Socket编程例子(TCP和UDP)
- 晶振为什么不封装进芯片内部?
- EXCEL表格-利用随机函数制作抽签工具(RAND)
- 第十三届“华中杯”大学生数学建模挑战赛题目 A 题 马赛克瓷砖选色问题
- 常用的第三方ui框架
- pdfjs转图片_PDF转图片,PDF转JPG/PNG,完全由JS实现-阿里云开发者社区
- AUTOSAR MCAL详解:FLS
- 学校学业水平测试软件,中小学生学业水平测试
- matlab 画渐近线,如何绘制渐近线?
- 使用python计算贝尔宾团队角色测评结果
- 复盘 | 产品经理晋级连胜的诀窍
- 【GEE笔记】有效像元(面积、数量)统计
- 彻底搞明白梯度下降算法1:方向导数与梯度概念理解
- Shell小技巧(一百三十一)服务器tcp连接数实时统计
- 传感器的灵敏度 分辨率与分辨力和精度 + 光纤光缆
热门文章
- PHP怎么获得斗鱼TV源地址,如何获取视频的直播源地址
- json离线解析格式化工具
- web制作、开发人员需知的Web缓存知识
- HTML网页设计:四、超链接
- java笔试题及答案
- 二次规划--积极集法(active set method)
- VBA 收集 Word关键字批量处理-Excel版
- 论【软件工程是不是教会不怎么会写程序的人软件开发】
- 使用C++实现克拉默法则(Cramer‘s law)
- linux下录音识别成文字软件下载,如何将录音转换成文字,这个方法你需要知道...