#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发邮件的更多相关文章

  1. python发邮件遇到的端口号问题

    在学习使用python发邮件的过程中, 遇到了一个问题:由于测试的时候使用的是QQ邮箱,要求必须使用SSL/TLS加密,所以有了下面的代码, from email.mime.text import M ...

  2. 使用python发邮件

    使用python发邮件 网上有很多发邮件的例子,本人在网上找了一份,稍加修改后使用 上源码 # encoding=utf-8 from email.mime.image import MIMEImag ...

  3. 如何用python发邮件

    python发送各类邮件的主要方法 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:     1.smtplib模块 smtplib.SM ...

  4. Python 发邮件例子

    Python 发邮件例子 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-04-23 16:12:33 # @Autho ...

  5. [转]简单三步,用 Python 发邮件

    https://zhuanlan.zhihu.com/p/24180606 0. 前言 发送电子邮件是个很常见的开发需求.比如你写了个监控天气的脚本,发现第二天要下雨,或者网站上关注的某个商品降价了, ...

  6. Python—发邮件总结

    来自: http://my.oschina.net/jhao104/blog/613774 1.登录SMTP服务器 首先使用网上的方法(这里使用163邮箱,smtp.163.com是smtp服务器地址 ...

  7. python 发邮件-带附件-文本-html

    #!/usr/bin/python # encoding=utf-8 # Filename: send_email.py from email.mime.image import MIMEImage ...

  8. python 发邮件 utf-8

    import smtplib from operator import itemgetter, attrgetter from email.mime.text import MIMEText from ...

  9. 用python发邮件实例

    发QQ邮件 首先确认发件方是否打开了SMTP服务,去QQ邮箱的设置中查看,如果没有请自行开启. from email.header import Header from email.mime.text ...

随机推荐

  1. 第5章 Spring Boot 功能

    Spring Boot 功能 本节将会介绍Spring Boot的一些细节. 在这里,您可以了解您将要使用和自定义的主要功能. 如果还没有准备好,您可能需要阅读第二部分“入门指南”和第三部分“使用 S ...

  2. Leanote 二进制版详细安装教程 Windows

    https://github.com/leanote/leanote/wiki 本教程适合 Windows 用户的二进制版安装. Windows 用户的源码版安装,参见这里. Mac, Linux 用 ...

  3. C#中二进制,八进制,十六进制到十进制的相互转换

    1.十进制数字向二进制,八进制,十六进制字符串的转换,使用函数 Convert.ToString(int value, int toBase): 它可以把一个数字转换为不同进制数值的字符串格式,其中t ...

  4. webstorm中使用java的块凝视

    webstorm中使用java的块凝视 有图有真相 使用java中非常方便得/**+enter就能高速创建类凝视.可是webstrom中没有现成的,所以我们得自己去创建一个,详细方法例如以下: 博主w ...

  5. Laravel 设置语言不生效的问题

    使用了validate 验证,提示错误默认是 英文的.将en 改为zh-CN 后 运行 composer require "overtrue/laravel-lang:~3.0"时 ...

  6. php如何读取ini文件

    很多时候,我们使用配置文件来读取配置,那么php如何使用ini文件呢? 代码如下: 例如将:数据库信息存到ini文件中,进行读取. <?php header('content-type:text ...

  7. c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对

    首先要引用一下类库:using Ionic.Zip;这个类库可以到网上下载. 下面对类库使用的封装方法: 得到指定的输入流的ZIP压缩流对象 /// <summary> /// 得到指定的 ...

  8. 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.单继 ...

  9. 【每日Scrum】第五天(4.26) TD学生助手Sprint2站立会议

    站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 今天增加了几个页面的子菜单,然后设计了几个要用的界面 今天和楠哥做了课程事件和日历表操作的例子,并尝试做时间表和日历表的数据库设计 安卓的数据 ...

  10. yum安装nginx+PHP+Mysql

    #mkdir /var/www/yum_repo 1.nginx安装: 在http://nginx.org/en/linux_packages.html#stable中下载CentOSX对应版本的rp ...