SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

参考:https://www.cnblogs.com/ysocean/p/7653252.html

   https://blog.csdn.net/qq_42543250/article/details/81586663

   https://www.cnblogs.com/captainmeng/p/7683395.html

   http://www.cnblogs.com/yufeihlf/p/5726619.html

在第三方客户端使用stmp之前需要开启邮箱中的POP3/SMTP/IMAP服务,并获取到授权码。这里使用是163邮箱

纯文本邮件

 import smtplib
from email.header import Header
from email.mime.text import MIMEText # 第三方 SMTP 服务
mail_host = "smtp.163.com" # SMTP服务器
mail_user = "*******@163.com" # 用户名
mail_pass = "*******" # 授权密码,非登录密码 sender = '********@163.com' # 发件人邮箱(最好写全, 不然会失败)
receivers = ['********@163.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 content = '这里是测试文本!' #测试文本
title = 'smtp邮件测试' # 邮件主题 #内置参数执行
def sendEmail(): message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title try:
smtpObj = smtplib.SMTP_SSL(mail_host) # 启用SSL发信, 端口默认是25(可以不写)
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e) #参数传入执行
def send_email2(SMTP_host, from_account, from_passwd, to_account, subject, content):
email_client = smtplib.SMTP(SMTP_host)
email_client.login(from_account, from_passwd)
# create msg
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8') # subject
msg['From'] = from_account
msg['To'] = to_account
email_client.sendmail(from_account, to_account, msg.as_string()) email_client.quit() if __name__ == '__main__':
sendEmail()

插入图片(非附件形式)

 # coding: utf-8

 import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders mail_host = 'smtp.163.com'
receivers = ['******@163.com']
receiver = ','.join(receivers)
sender = '******@163.com'
password = '*****' msg = MIMEMultipart('alternative')
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = '主题'
#插入一个html格式
msg.attach(MIMEText('<html><body><h1>Hello</h1>' +
'<p><img src="cid:0"></p>' +
'</body></html>', 'html', 'utf-8')) file_path = r'E:\stmp_test\img.png'
with open(file_path, 'rb') as f:
mm = MIMEBase('image', 'png', filename='b.png')    # 设置附件的MIME和文件名,这里是png类型:
mm.add_header('Content-Disposition', 'attachment', filename='b.jpg')  #加上必要的头信息
mm.add_header('Content-ID', '<0>')       #头信息
mm.add_header('X-Attachment-Id', '')     #头信息
mm.set_payload(f.read())    # 把附件的内容读进来
encoders.encode_base64(mm)
msg.attach(mm) try:
server = smtplib.SMTP()
# 加上这句就可以打印出所有的log,更方便我们定位问题
server.set_debuglevel(1)
server.connect(mail_host, 25)
server.login(sender, password)
server.sendmail(sender, receiver,msg.as_string())
server.close()
print ('Success')
except smtplib.SMTPException:
print( 'Error')

直接在HTML邮件中链接图片地址是不行的。引文大部分邮件服务商都会自动屏蔽带有外链的图片,因为不知道这些链接是否指向恶意网站。
只需要在HTML中通过引用src="cid:0"就可以把附件作为图片嵌入了。如果有多个图片,给它们依次编号,然后引用不同的cid:x即可。

python smtp邮件的更多相关文章

  1. python SMTP邮件发送(转载)

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  2. Python SMTP邮件模块

    SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件, ...

  3. Python SMTP邮件发送

    SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块: email负责构造邮件 ...

  4. selenium+python smtp邮件

    #code:utf-8 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIM ...

  5. python大法好——Python SMTP发送邮件

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  6. Python——SMTP发送邮件

    一.定义 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.python的smtplib ...

  7. python QQ邮件发送邮件

    # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText from email.header import ...

  8. python学习笔记(SMTP邮件发送:带附件)

    博主有段时间没有更新博客了 先整理一个之前整理过的SMTP邮件发送,这次是带附件的功能 #!/usr/bin/env python # -*- coding: utf_8 -*- from email ...

  9. python学习笔记(SMTP邮件发送)

    想着给框架添加邮件发送功能.所以整理下python下邮件发送功能 首先python是支持邮件的发送.内置smtp库.支持发送纯文本.HTML及添加附件的邮件 之后是邮箱.像163.qq.新浪等邮箱默认 ...

随机推荐

  1. JS 清除DOM 中空白元素节点

    HTML中的空白节点会影响整体的HTML的版面排榜 例如: 制作百度首页时,两个input之间的空白节点将本来是要整合在一起的搜索栏硬是把按钮和搜索框分离出现好丑的间隙 这时我们就可以用js清除这个空 ...

  2. react native进一步学习(NavigatorIOS 学习)

    特别申明:本人代码不作为任何商业的用途,只是个人学习的一些心得,为了使得后来的更多的程序员少走一些弯路.*(如若侵犯你的版权还望见谅)*. 开发工具:WebStorm,xcode 1. rn的创建的时 ...

  3. CPU-bound(计算密集型) 和I/O bound(I/O密集型) 区别 与应用

    I/O密集型 (CPU-bound) I/O bound 指的是系统的CPU效能相对硬盘/内存的效能要好很多,此时,系统运作,大部分的状况是 CPU 在等 I/O (硬盘/内存) 的读/写,此时 CP ...

  4. 一个C++右值引用的问题

    暂时先不更新前一篇文章了,感觉那个文章要写好久.累死. 今天说一说C++右值引用的一个问题. 这个问题的发现也是很偶然的. 来一段毫无意义但是能证明问题的代码: std::string &&a ...

  5. admin 自定义字段颜色 并加以简单判断

    在model中class Books(models.Model): nid = models.AutoField(primary_key=True, ) title = models.CharFiel ...

  6. Codeforces Round #554 (Div. 2) C. Neko does Maths (简单推导)

    题目:http://codeforces.com/contest/1152/problem/C 题意:给你a,b, 你可以找任意一个k     算出a+k,b+k的最小公倍数,让最小公倍数尽量小,求出 ...

  7. 前端特效demo | 一起围观 10 种创意时钟

    时钟动画应用非常广泛,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享 10 款形态各异的超时尚时钟动画,其中有圆盘时钟.创意时钟.电子时钟等,希望大家会喜欢. 文内附有时钟效果代 ...

  8. PCF学习知识

    1. 去PCF官网注册一个免费账号,地址是: https://login.run.pivotal.io/login 2.安装PCF的命名,cf cli. 地址https://pivotal.io/pl ...

  9. zookeeper分布式服务中选主的应用

    通常zookeeper在分布式服务中作为注册中心,实际上它还可以办到很多事.比如分布式队列.分布式锁 由于公司服务中有很多定时任务,而这些定时任务由于一些历史原因暂时不能改造成框架调用 于是想到用zo ...

  10. bottle 0.5中的key-value数据库

    import anydbm as dbm import cPickle as pickle class BottleBucket(object): '''Memory-caching wrapper ...