python邮件处理
SMTP
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
Python创建 SMTP 对象语法如下:
- smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
参数说明:
- port: 如果你提供了
host 参数, 你需要指定
SMTP 服务使用的端口号,一般情况下
SMTP 端口号为25。
local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。
Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:
- SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
参数说明:
- from_addr: 邮件发送者地址。
- to_addrs: 字符串列表,邮件发送地址。
- msg: 发送消息
- 这里要注意一下第三个参数,msg 是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意 msg 的格式。这个格式就是 smtp 协议中定义的格式。
通过python发邮件步骤
前提:开通了第三方授权,可以使用smtp服务
1.创建smtp对象
2.连接smtp服务器,默认端口号都是25
3.登陆自己的邮箱账号
4.调用发送消息函数,参数:发件人、收件人、消息内容
5.关闭连接
发送邮件的例子
- import email.mime.multipart
- import email.mime.text
- import smtplib
- msg = email.mime.multipart.MIMEMultipart() #通过这个类创建消息
- msg['from'] = '97001@qq.com' # 邮件发件人
- msg['to'] = '14148@qq.com' # 邮件收件人
- msg['subject'] = 'It's a test mail' # 邮件主题
- context = ''' # 邮件正文
- <h1>老师好</h1>
- 你好,
- 这是一封自动发送的邮件。
- www.ustchacker.com hello
- '''
- text = email.mime.text.MIMEText(_text=context, _subtype="html") # 定义文本以后,标明将context指定成什么格式,html,txt
- msg.attach(text) # 邮件消息注册
- em = smtplib.SMTP_SSL()
- em.connect("smtp.qq.com", 465)
- em.login("97001@qq.com", '')
- em.sendmail(from_addr='97001@qq.com', to_addrs='14148@qq.com', msg=msg.as_string())
- em.quit() # 关闭连接
发送带附件的邮件
- import smtplib
- import email.mime.multipart
- import email.mime.text
- import os
- from email import encoders
- msg = email.mime.multipart.MIMEMultipart()
- msg['from'] = '18910148469@163.com'
- msg['to'] = '97001@qq.com;14148@qq.com'
- msg['subject'] = 'mail'
- context = ''' # 邮件正文
- <h1>老师好</h1>
- 你好,
- 这是一封自动发送的邮件。
- www.ustchacker.com hello
- '''
- txt = email.mime.text.MIMEText(_text=content, _subtype="html")
- msg.attach(txt)
- #############
- attfile = 'test.py'
- basename = os.path.basename(attfile)
- fp = open(attfile, 'rb') #打开文件,读出文件字符串
- att = email.mime.text.MIMEText(fp.read(), 'html', 'utf-8') #通过MIMT ext()类来创建一个对象att,传入文件读出内容
- att["Content-Type"] = 'application/octet-stream'
- # 增加att的头部信息,并指定文件名字
- att.add_header('Content-Disposition', 'attachment',filename=('utf-8', '', basename)) #three-tuple of (charset, language, value),encoders.encode_base64(att)
- msg.attach(att) #添加到msg消息中msg.attach(att)
- ##########
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com', '')
- smtp.login('3456346@163.com', '')
- smtp.sendmail(from_addr='18910148469@163.com', to_addrs=['97001@qq.com', '14148@qq.com'], msg=msg.as_string())
- smtp.quit()
使用第三方模块
yagmail库的源代码只有几百行代码,它是对SMTP以及email模块的一个智能封装。
安装
- pip install yagmail
官方例子
- import yagmail
- yag = yagmail.SMTP()
- contents = [
- "This is the body, and here is just text http://somedomain/image.png",
- "You can find an audio file attached.", '/local/path/to/song.mp3'
- ]
- yag.send('to@someone.com', 'subject', contents)
- # Alternatively, with a simple one-liner:
- yagmail.SMTP('mygmailusername').send('to@someone.com', 'subject', contents)
我们自己写一个
- import yagmail
- args={
- "user": "12123123@163.com", # 邮箱账号
- "password": "", # 邮箱密码
- "host": "smtp.163.com", # SMTP服务器
- "port": "" # SMTP服务器端口
- }
- emailList=["13300000@qq.com","217400007@qq.com", "97400001@qq.com"] # 可以一次性发送邮件给多个人
- email = yagmail.SMTP(**args)
- email.send(to='971010101@qq.com',subject="mail",contents="test mail",cc="97460001@qq.com")
详解:
to 发送给谁
subject 主题
content 内容 它传递的是一个列表,这里还可以带附件 contents=[body, 'imag.png', 'test.pdf'] 其中body是正文
cc 抄送给谁
python邮件处理的更多相关文章
- python邮件发送脚本
转自:http://phinecos.cnblogs.com/ #!/usr/bin/python #coding=utf-8 #@author:dengyike #@date:2010-09-28 ...
- centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本)
centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本) ##################### sendmail.py begin ######## ...
- python 邮件基础篇
python 操作邮件,不是很方便,说实话还不是理解的特别透彻,这次想把自己碰到的东西总结下来 邮件有imap,pop,imap协议,这次使用的是imap4协议,主要用了imap4和mail类, 代码 ...
- python 邮件
1:文件形式的邮件 01.#!/usr/bin/env python3 02.#coding: utf-8 03.import smtplib 04.from email.mime.text impo ...
- python 邮件发送 脚本
import smtplib from email.header import Header from email.mime.text import MIMEText from_addr = 'XXX ...
- Python 邮件发送
python发送各类邮件的主要方法 python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点. 一.相关模块介绍 ...
- python邮件SMTP的GUI编程
写的是python中smtp的gui编程,用的163邮箱给qq邮箱发送邮件做测试,如果你发现你的发送失败,试着用以下方法解决: 1.网页登陆你的邮箱,设置中查看smtp是否开启,比如163邮箱的smt ...
- Python邮件发送脚本(Linux,Windows)通用
脚本 #!/usr/bin/python #-*- coding:utf-8 -*- #Python Mail for chenglee #if fileformat=dos, update file ...
- python邮件
解读Python发送邮件 Python发送邮件需要smtplib和email两个模块.也正是由于我们在实际工作中可以导入这些模块,才使得处理工作中的任务变得更加的简单.今天,就来好好学习一下使用Pyt ...
随机推荐
- UA 用户代理
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等.被广泛用来标识 ...
- WCF DEMO1 创建自托管宿主
using System; using System.ServiceModel; using System.ServiceModel.Channels; //注意:需要引用程序集 System.Ser ...
- nc63 树管理型单据的开发
<?xml version="1.0" encoding="gbk"?><beans xmlns="http://www.sprin ...
- Session和Cookie的区别与联系
一. 概念理解 你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为 你浏览某个网页的时候,W ...
- 穿过代理获取真正的IP
/// <summary> /// 获取真ip /// </summary> /// <returns></returns> public string ...
- 【学习笔记】--- 老男孩学Python,day18 面向对象------ 属性,类方法,静态方法
属性 属性: 将方法伪装成一个属性,代码上没有什么提升,只是更合理. 应用场景: 类中 要用名词时候可以用@property 比如,求面积,周长,平方,体脂 等运算时候 例如: bmi是名词,最 ...
- python学习之老男孩python全栈第九期_数据库day004知识点总结 —— MySQL数据库day4
复习: 1. MySQL:文件管理的软件 2. 三部分: - 服务端 - SQL语句 - 客户端 3. 客户端: - MySQL - navicat 4. 授权操作: - 用户操作 - 授权操作 5. ...
- 简洁php的MVC框架
一.文件结构 建立3个文件夹 controller文件夹存放控制器文件 view文件夹存放视图文件 model文件夹存放数据文件 建立1个index.php 作为唯一入口 二.控制器 我们在contr ...
- java.lang.IllegalStateException: Mapped class was not specified
错误如下:java.lang.IllegalStateException: Mapped class was not specifiedat org.springframework.util.Asse ...
- ifconfig命令无法找到,提示bash: ifconfig: command not found
问题就是题目那样,具体解决方法截图如下: 分析问题 1.whereis ifconfig 看一下这个命令在哪个目录下 2.echo $PATH 看一下该目录是否在路经下,注意lunux下是完全区分大小 ...