网站首页 > 资源文章 正文
在Python中分别有两个库实现发送邮件,分别是smtplib和email。
smtplib是用来发送邮件用的,email是用来构建邮件内容的。
下面是具体使用:
import smtplib
server = smtplib.SMTP()
server.connect(host, port)
#连接(connect)指定的服务器,host是指定连接的邮箱服务器,通过搜索“xx邮箱服务器地址”,就可以找到
#例如QQ邮箱的SMTP服务器地址是:smtp.qq.com。port是端口,一般情况下SMTP默认端口号为25
server.login(username, password)
#username:登录邮箱的用户名
#password:授权码
server.sendmail(sender, to_addr, msg.as_string())
#from_addr:邮件发送地址,就是上面的username
#to_addr:邮件收件人地址
#msg.as_string():为一个字符串类型 ,as_string()是将发送的信息msg变为字符串类型。
server.quit()
#退出服务器,结束SMTP会话
备注:SMTP 协议是由源服务器到目的地服务器传送邮件的一组规则。
email 模块:也就是用来写邮件内容的模块。这个内容可以是纯文本、HTML内容、图片、附件等多种形式。
import email
from email.mime.text import MIMEText
#纯文本或HTML页面
fromemail.mime.image import MIMEImage
#内容形式为图片
fromemail.mime.multipart import MIMEMultipart
#多形式组合,可包含文本和附件
MIMEText方法:
MIMEText(msg,type,chartset)
# msg:文本内容,可自定义
# type:文本类型,默认为plain(纯文本)
# chartset:文本编码,中文为“utf-8”
测试Demo
这是我把自己的username和password省略了
# 测试
import smtplib
from email.mime.textimport MIMEText
username='你的@qq.com'
password='XXXXXXXXX'
sender='发给谁@qq.com'
to_addr='run24118cajie@163.com'
msg=MIMEText('你好这是用python发的一封邮件','plain','utf-8')
server =smtplib.SMTP()
server.connect('smtp.qq.com', 25)
server.login(username,password)
server.sendmail(sender,to_addr, msg.as_string())
server.quit()
发送成功
标准发邮件的格式
# 首先,主送、抄送就是两个用逗号分割的字符串,subject是标题,正文是context,支持html。
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
import smtplib
import os
from_addr = 'xxxxx@qq.com'
password = 'xxxxx'
smtp_server = 'smtp.qq.com'
def sendmail(to_addr, cc_addr, subject, content, attach_full_path):
# create a message
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Cc'] = cc_addr
msg['Subject'] = Header(subject, 'utf-8').encode()
# 正文:
msg.attach(MIMEText(content, 'html', 'utf-8'))
# 附件
(filepath, file) = os.path.split(attach_full_path)
with open(attach_full_path + '', 'rb') as f:
# 设置附件的MIME和文件名:
mime = MIMEBase('application', 'octet-stream', filename=file)
# 加上必要的头信息:
mime.add_header('Content-Disposition', 'attachment', filename=file)
# 把附件的内容读进来:
mime.set_payload(f.read())
# 用Base64编码:
encoders.encode_base64(mime)
# 添加到MIMEMultipart:
msg.attach(mime)
# 发送邮件
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)
server.starttls()
server.login(from_addr, password)
server.sendmail(from_addr, to_addr.split(',') + cc_addr.split(','), msg.as_string())
server.quit()
- 上一篇: 从腾讯QQ演化出一个新IP,它会变成什么样子?
- 下一篇: 家电企业开启速度之争(家电发展)
猜你喜欢
- 2025-01-26 socket连接数受端口号的限制?谬论
- 2025-01-26 学生欲哭无泪 手机QQ5.8评测体验(手机qq5.4.1官网)
- 2025-01-26 在移动互联网的冲击下WebQQ终将告别
- 2025-01-26 网络安全周|关于网络安全,这些要知道
- 2025-01-26 QQ邮箱绑定foxmail邮件客户端使用指南
- 2025-01-26 在昆40余万名大学生2018年消费109.1亿元
- 2025-01-26 QQ快速安全登录真的安全吗?(快速安全登录 请使用qq手机版扫描)
- 2025-01-26 (经验分享)多串口服务器与1200PLC进行TCP通讯实践
- 2025-01-26 《1小时爆刷2000万!QQ钱包周5约票日2亿红包,今天你领了吗?》
- 2025-01-26 开发一个QQ——最基础的demo(开发qq的人是谁)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)