python smtp邮件
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邮件的更多相关文章
- python SMTP邮件发送(转载)
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
- Python SMTP邮件模块
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件, ...
- Python SMTP邮件发送
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块: email负责构造邮件 ...
- selenium+python smtp邮件
#code:utf-8 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIM ...
- python大法好——Python SMTP发送邮件
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
- Python——SMTP发送邮件
一.定义 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.python的smtplib ...
- python QQ邮件发送邮件
# -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText from email.header import ...
- python学习笔记(SMTP邮件发送:带附件)
博主有段时间没有更新博客了 先整理一个之前整理过的SMTP邮件发送,这次是带附件的功能 #!/usr/bin/env python # -*- coding: utf_8 -*- from email ...
- python学习笔记(SMTP邮件发送)
想着给框架添加邮件发送功能.所以整理下python下邮件发送功能 首先python是支持邮件的发送.内置smtp库.支持发送纯文本.HTML及添加附件的邮件 之后是邮箱.像163.qq.新浪等邮箱默认 ...
随机推荐
- C语言:递归函数n!
#include <stdio.h> long recursion(int n); void main(){ int n; long result; printf("input ...
- 使用U盘为龙芯笔记本安装操作系统
摘要:在没有光驱的情况下,可以使用dd命令或者ultraISO软件制作Linux安装U盘,方法适合龙芯和X86.AMD64的设备. 前段时间,由于开发需要,拿到了一部龙芯3A3000的笔记本.出厂的安 ...
- C++算法之大数加法计算的代码
如下代码段是关于C++算法之大数加法计算的代码,希望对大家有用. { int length; int index; int smaller; int prefix = 0; if(NULL == sr ...
- centos 远程授权
centos 远程授权命令 ssh-copy-id root@192.168.15.70
- jS弹出新窗口被拦截的解决方法
使用ajax处理数据,在回调中跳转到或打开新页面,这时就会被浏览器拦截 解决方案:先用window.open打开一个窗口,然后修改该窗口地址 var w = window.open('about:bl ...
- ASP.NET 性能监控工具和优化技巧
转载自:http://blog.haoitsoft.com/index.php/archives/657 ASP.NET 性能监控工具和优化技巧 发表回复 为了阐明准确甄别性能问题的重要性,下面列举了 ...
- css实现标题左右横线
最近用到了记录一下 页面 <div class="subtitle"> 马上邀请好友得奖励 </div> 样式 .subtitle { position: ...
- jmeter测试计划元素执行顺序
jmeter测试计划元素执行顺序 测试计划的元素是有序的,通过以下方式执行: 1–配置节点 2–前置处理器 3–定时器 4–取样器 5–后置处理器(只在有结果可用情况下执行) 6–断言(只在有结果可用 ...
- 自学python之路(day6)
一 函数的定义与调用 现在需要一个程序来实现len()的功能. 计算字符串 s 长度 s='好好学习' #函数的定义def my_len(): i = for k in s: i += print(i ...
- 简单gitblit与Jenkins结合,持续集成
gitblit是当作git服务器,也就是作为私有的代码仓库,用法类似于Github Jenkins 是自动构建工具,帮忙将仓库中的代码更新到服务器上.可以设置为定时自动构建. 详细摸索了我现在公司的用 ...