人生苦短之Python发邮件
#coding=utf-8
import smtplib
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
'''
一些常用邮箱发件服务器及端口号
邮箱 发件服务器 非SSL协议端口 SSL协议端口
163 smtp.163.com 25 465/587
qq smtp.qq.com 25 465/587 发送邮件的几个错误:
1.550错误(smtplib.SMTPAuthenticationError: (550, b'User has no permission'))
535错误(smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed'))
邮箱一般是不开启客户端授权的,所以登录是拒绝的,需要去邮箱开启,然后会发送短信
获取授权码作为客户端登录的密码(login方法中的密码)
2.503错误(503 ‘Error: A secure connection is requiered(such as ssl)’之类)
例如我们使用QQ邮箱是需要SSL登录的,所以需要smtplib.SMTP()改成smtplib.SMTP_SSL() @from_addr 发送邮件的地址
@to_addr 接收邮件的地址(可以是列表)
@mail_host 邮箱的SMTP服务器地址
@mail_pass 邮箱开启smtp 需要的授权码
'''
from_addr = '331957324@qq.com'
to_addr = '252624008@qq.com'
mail_host = 'smtp.qq.com'
mail_pass = 'itrwvjhjxupgbhhc' #文本形式的邮件
def send_text_mail():
try:
'''
MIMETest(content, type, 编码) 创建邮件信息主体
msg['Subject'] 邮件主题
msg['From'] 邮件发送方
msg['To'] 收件方
'''
msg = MIMEText('hello send by python', 'plain', 'utf-8')
msg['From'] = from_addr
msg['To'] = ','.join(to_addr)
msg['Subject'] = '主题' server = smtplib.SMTP_SSL(mail_host, 465)
server.login(from_addr, mail_pass)
server.sendmail(from_addr, [to_addr, ], msg.as_string())
except Exception as e:
print e #HTML格式的邮件
def send_html_mail():
msg = MIMEText('<html><h1>你好</h1></html>', 'html', 'utf-8')
msg['Subject'] = 'html' smtp = smtplib.SMTP_SSL(mail_host, 465)
smtp.login(from_addr, mail_pass)
smtp.sendmail(from_addr, to_addr, msg
.as_string())
smtp.quit() #发送附件
def send_attachment_mail():
#创建邮件对象 MIMEMultipart 指定类型为 alternative可以支持同时发送html和plain,但是
# 不会都显示,html优先显示
msg = MIMEMultipart('alternative')
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = 'AttachmentMail' # 邮件的正文还是MIMEText
part1 = MIMEText('这是个带附件的邮件', 'plain', 'utf-8') # 添加附件(添加一个本地的图片)
att1 = MIMEText(open("C:\\6.jpg", 'rb').read(), 'base64', 'utf-8')
att1['Content-Type'] = 'application/octet-stream'
att1['Content-Disposition'] = 'attachment;filename="6.jpg"'
att1['Content-ID'] = '<0>' msg.attach(att1)
msg.attach(part1) smtp = smtplib.SMTP_SSL(mail_host, 465)
smtp.login(from_addr, mail_pass)
smtp.sendmail(from_addr, to_addr, msg
.as_string())
smtp.quit() #发送带图片的文本邮件
def send_imagetext_mail():
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = 'ImagMail' #创建展示图片的html
msg_html = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>good!',
'html', 'utf-8')
msg.attach(msg_html) #添加图片模块
fp = open('C:\\6.jpg', 'rb')
msg_image = MIMEImage(fp.read())
fp.close()
msg_image.add_header('Content-ID', '<image1>')
msg.attach(msg_image) smtp = smtplib.SMTP_SSL(mail_host, 465)
smtp.login(from_addr, mail_pass)
smtp.sendmail(from_addr, to_addr, msg
.as_string())
smtp.quit() send_imagetext_mail() '''
Message
+- MIMEBase
+- MIMEMultipart
+- MIMENonMultipart
+- MIMEMessage
+- MIMEText
+- MIMEImage 邮件信息的层级关系,详细见https://docs.python.org/2/library/email.mime.html
'''
人生苦短之Python发邮件的更多相关文章
- python发邮件遇到的端口号问题
在学习使用python发邮件的过程中, 遇到了一个问题:由于测试的时候使用的是QQ邮箱,要求必须使用SSL/TLS加密,所以有了下面的代码, from email.mime.text import M ...
- 使用python发邮件
使用python发邮件 网上有很多发邮件的例子,本人在网上找了一份,稍加修改后使用 上源码 # encoding=utf-8 from email.mime.image import MIMEImag ...
- 如何用python发邮件
python发送各类邮件的主要方法 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 1.smtplib模块 smtplib.SM ...
- Python 发邮件例子
Python 发邮件例子 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-04-23 16:12:33 # @Autho ...
- [转]简单三步,用 Python 发邮件
https://zhuanlan.zhihu.com/p/24180606 0. 前言 发送电子邮件是个很常见的开发需求.比如你写了个监控天气的脚本,发现第二天要下雨,或者网站上关注的某个商品降价了, ...
- Python—发邮件总结
来自: http://my.oschina.net/jhao104/blog/613774 1.登录SMTP服务器 首先使用网上的方法(这里使用163邮箱,smtp.163.com是smtp服务器地址 ...
- python 发邮件-带附件-文本-html
#!/usr/bin/python # encoding=utf-8 # Filename: send_email.py from email.mime.image import MIMEImage ...
- python 发邮件 utf-8
import smtplib from operator import itemgetter, attrgetter from email.mime.text import MIMEText from ...
- 用python发邮件实例
发QQ邮件 首先确认发件方是否打开了SMTP服务,去QQ邮箱的设置中查看,如果没有请自行开启. from email.header import Header from email.mime.text ...
随机推荐
- 第5章 Spring Boot 功能
Spring Boot 功能 本节将会介绍Spring Boot的一些细节. 在这里,您可以了解您将要使用和自定义的主要功能. 如果还没有准备好,您可能需要阅读第二部分“入门指南”和第三部分“使用 S ...
- Leanote 二进制版详细安装教程 Windows
https://github.com/leanote/leanote/wiki 本教程适合 Windows 用户的二进制版安装. Windows 用户的源码版安装,参见这里. Mac, Linux 用 ...
- C#中二进制,八进制,十六进制到十进制的相互转换
1.十进制数字向二进制,八进制,十六进制字符串的转换,使用函数 Convert.ToString(int value, int toBase): 它可以把一个数字转换为不同进制数值的字符串格式,其中t ...
- webstorm中使用java的块凝视
webstorm中使用java的块凝视 有图有真相 使用java中非常方便得/**+enter就能高速创建类凝视.可是webstrom中没有现成的,所以我们得自己去创建一个,详细方法例如以下: 博主w ...
- Laravel 设置语言不生效的问题
使用了validate 验证,提示错误默认是 英文的.将en 改为zh-CN 后 运行 composer require "overtrue/laravel-lang:~3.0"时 ...
- php如何读取ini文件
很多时候,我们使用配置文件来读取配置,那么php如何使用ini文件呢? 代码如下: 例如将:数据库信息存到ini文件中,进行读取. <?php header('content-type:text ...
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
首先要引用一下类库:using Ionic.Zip;这个类库可以到网上下载. 下面对类库使用的封装方法: 得到指定的输入流的ZIP压缩流对象 /// <summary> /// 得到指定的 ...
- Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。
Python3 与 C# 面向对象之-继承与多态 文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...
- 【每日Scrum】第五天(4.26) TD学生助手Sprint2站立会议
站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 今天增加了几个页面的子菜单,然后设计了几个要用的界面 今天和楠哥做了课程事件和日历表操作的例子,并尝试做时间表和日历表的数据库设计 安卓的数据 ...
- yum安装nginx+PHP+Mysql
#mkdir /var/www/yum_repo 1.nginx安装: 在http://nginx.org/en/linux_packages.html#stable中下载CentOSX对应版本的rp ...