Python如何基于smtplib发不同格式的邮件
作者:MilesMa 发布时间:2023-10-03 10:28:35
标签:Python,smtplib,邮件
这篇文章主要介绍了Python如何基于smtplib发不同格式的邮件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
常用邮箱SMTP、POP3域名及其端口号
发送普通文本内容的邮件
import smtplib
from email.header import Header
from email.mime.text import MIMEText
# smtp服务器信息
smtp_server = 'smtp.163.com'
server_port = 465
# 发送方信息
sender = '发送的邮箱地址'
password = '发送邮箱的smtp授权码'
# 收件人地址,列表可发给多人
receivers = ['123456@qq.com', '3123123@qq.com', '12312@qq.com']
# 邮箱的正文内容,参数分别为内容,格式(plain 为纯文本),编码
msg = MIMEText('Here is content.', 'plain', 'utf-8')
# 邮件头信息
msg['From'] = Header(sender) # 发件人
msg['To'] = Header(', '.join(receivers)) # 发到哪里,参数为字符串
msg['Subject'] = Header('This is subject') # 邮件标题
# 发送邮件的操作
try:
server = smtplib.SMTP_SSL() # SSL加密传输
server.connect(smtp_server, server_port) # 连接smtp,服务器和端口
server.login(sender, password) # 登录发信邮箱
server.sendmail(sender, receivers, msg.as_string()) # 发送邮件
server.quit() # 关闭服务器
print('发送成功')
except smtplib.SMTPException:
print('发送失败')
发送html格式的邮件
Python发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为html
发送带有附件的邮件
发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后利用smtplib.smtp发送。
import smtplib
from email.header import Header
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# smtp服务器信息
smtp_server = 'smtp.163.com'
server_port = 465
# 发送方信息
sender = '发送的邮箱地址'
password = '发送邮箱的smtp授权码'
# 收件人地址,列表可发给多人
receivers = ['969831239@qq.com', '124123989@qq.com']
# 实例化,先添加正文内容
msg = MIMEMultipart()
msg.attach(MIMEText('This is content.', 'plain', 'utf-8'))
# 添加附件1
att1 = MIMEApplication(open('tips.py', 'rb').read(), 'utf-8')
att1['Content-Disposition'] = 'attachment; filename="down.py"' # filename随便起,是接收到的附件显示名称
# att1["Content-Type"] = 'application/octet-stream' Content-Type默认为application/octet-stream
msg.attach(att1)
# 添加附件2
att2 = MIMEApplication(open('source.jpg', 'rb').read(), 'utf-8')
att2['Content-Disposition'] = 'attachment; filename="girl.jpg"'
msg.attach(att2)
# 邮件头信息
msg['From'] = Header(sender) # 发件人
msg['To'] = Header(', '.join(receivers)) # 发到哪里,参数为字符串
msg['Subject'] = Header('This is subject') # 邮件标题
# 发送邮件的操作
try:
server = smtplib.SMTP_SSL() # SSL加密传输
server.connect(smtp_server, server_port) # 连接smtp,服务器和端口
server.login(sender, password) # 登录发信邮箱
server.sendmail(sender, receivers, msg.as_string()) # 发送邮件
server.quit() # 关闭服务器
print('发送成功')
except smtplib.SMTPException:
print('发送失败')
发送正文带有图片的邮件
使用html格式的img标签指定图片cid显示图片,图片需要用MIMEImage上传并指定img Content-ID
import smtplib
from email.header import Header
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# smtp服务器信息
smtp_server = 'smtp.qq.com'
server_port = 465
# 发送方信息
sender = '发送的邮箱地址'
password = '发送邮箱的smtp授权码'
# 收件人地址,列表可发给多人
receivers = ['dsaisu@163.com', '76das23021@qq.com', '253das58570@qq.com']
# 实例化,添加正文内容,html格式,<img>标签 指定cid属性的值等于上传图片中Content-ID的值
msg = MIMEMultipart()
msg.attach(MIMEText('<img src="cid:demo" />', 'html', 'utf-8')) # 与下面的Content-ID的值相同
# 添加图片
img = MIMEImage(open('source.jpg', 'rb').read())
img.add_header('Content-ID', 'demo') # 与上面的cid相同
msg.attach(img)
# 邮件头信息
msg['From'] = Header(sender) # 发件人
msg['To'] = Header(', '.join(receivers)) # 发到哪里,参数为字符串
msg['Subject'] = Header('This is subject') # 邮件标题
# 发送邮件的操作
try:
server = smtplib.SMTP_SSL() # SSL加密传输
server.connect(smtp_server, server_port) # 连接smtp,服务器和端口
server.login(sender, password) # 登录发信邮箱
server.sendmail(sender, receivers, msg.as_string()) # 发送邮件
server.quit() # 关闭服务器
print('发送成功')
except smtplib.SMTPException:
print('发送失败')
来源:https://www.cnblogs.com/milesma/p/12085295.html


猜你喜欢
- 现在网页设计师除了把页面做的漂亮以外,越来越注重“用户体验”,就是要做“别让用户思考”的网页,使网站真正做到“可用性”。望望结合几年的工作经
- 发现问题最近在将mysql升级到mysql 5.7后,进行一些group by 查询时,比如下面的SELECT *, count(id) a
- 目录实现加权轮询负载均衡思路加权轮询负载均衡代码测试代码实现加权轮询负载均衡思路代码实现一个加权负载均衡Weight
- 单例模式概念单例模式:“保证一个类仅有一个实例,并提供一个访问它的在这里插入代码片全局访问点。单例模式会阻止其他对象实例化其自己的单例对象的
- 本文实例讲述了Python实现读取邮箱中的邮件功能。分享给大家供大家参考,具体如下:#-*- encoding: utf-8 -*-impo
- 直接看代码using System;using System.Configuration;using MySql.Data.MySqlCli
- 见下面的代码:<html><head><title>精彩春风之月份查询</title><
- 背景golang版本:1.16之前遇到的问题,docker启动时禁用了oom-kill(kill后服务受损太大),导致golang内存使用接
- 小程序大功能对一批报文要处理要处理里面的得分,发现python linecache ,特记录如下。#!/usr/bin/env python
- 1.简要概述为什么要开通MySQL这个学习板块呢?因为这是一名数据分析师必要的一项技能。分析数据什么最重要?当然是数据,既然如此!在数据呈现
- 开发高质量软件的过程中,我们经常会为每个函数编写测试,这样在开发过程中运行这些测试的时候就比较方便,doctest是一个python标准库自
- 导读MySQL被运用于越来越多的业务中,在关键业务中对数据安全性的要求也更高,如何保证MySQL的数据安全?数据安全如果只靠MySQL应用层
- 面是我下载页面down.php 的php代码 现在我发现,用迅雷,谷歌浏览器直接打开,就能输出下载文件,一点不起防盗链作用。&nb
- template 概述最近在做脚手架相关的内容, 研究了一下 Go 的 text/template 包, 接下来跟大家分享下 templat
- 基于以下三个原因,我们选择Python作为实现机器学习算法的编程语言:(1) Python的语法清晰;(2) 易于操作纯文本文件;(3) 使
- Gittle是一个高级纯python git 库。构建在dulwich之上,提供了大部分的低层机制。Install itpip instal
- 在对Python中的闭包进行简单分析之前,我们先了解一下Python中的作用域规则。关于Python中作用域的详细知识,有很多的博文都进行了
- 通常我们在制作上图的时候,会分别给四个div加上不同的css属性,来实现中间间隔。但我们更希望的是不需要对html标签做标识,直接能通过cs
- 1. Express简介express是一个基于node.js平台的极简,灵活的web应用开发框架,它提供一系列强大的特征,帮助你创建各种w
- 或许马上,或许几年之后,但是有迹象显示IE浏览器占统治地位的时代即将结束。在数据分析公司Net Applications的排名中,IE的市场