Python基础教程(二十):SMTP发送邮件

news2024/10/6 6:45:04

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
💝💝💝如有需要请大家订阅我的专栏【Python系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

文章目录

    • 引言
    • 一、SMTP简介
    • 二、设置SMTP服务器
    • 三、Python发送邮件的步骤
      • 步骤1:导入必要的库
      • 步骤2:创建SMTP对象并登录
      • 步骤3:构造邮件内容
      • 步骤4:发送邮件
    • 四、完整案例
    • 五、注意事项
    • 结束语

引言

Python的smtplib库提供了强大的功能,使得我们能够从脚本中直接发送电子邮件,这对于自动化工作流程、错误报告或是定期通知等场景极为有用。本文将详细介绍如何使用Python的smtplib库发送电子邮件,包括设置SMTP服务器、构造邮件内容、发送邮件等步骤,并通过具体案例加深理解。

一、SMTP简介

SMTP(Simple Mail Transfer Protocol)是用于发送电子邮件的互联网标准协议。它定义了邮件服务器之间或本地客户端与邮件服务器之间的邮件传输过程。在Python中,我们使用smtplib库来与SMTP服务器进行交互,发送邮件。

二、设置SMTP服务器

在发送邮件之前,我们需要配置SMTP服务器的详细信息,包括服务器地址、端口号、登录用户名和密码。这些信息通常由你的邮件提供商(如Gmail、Outlook等)提供。

三、Python发送邮件的步骤

步骤1:导入必要的库

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

步骤2:创建SMTP对象并登录

smtp_server = 'smtp.gmail.com'
smtp_port = 587
username = 'your_email@gmail.com'
password = 'your_password'

# 创建SMTP会话
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()  # 启用TLS加密
server.login(username, password)

步骤3:构造邮件内容

# 创建MIMEMultipart对象
msg = MIMEMultipart()

# 设置邮件头部信息
msg['From'] = username
msg['To'] = 'recipient_email@example.com'
msg['Subject'] = 'Python SMTP Email Test'

# 添加邮件正文
body = "This is a test email sent using Python's smtplib."
msg.attach(MIMEText(body, 'plain'))

# 添加附件(可选)
with open('attachment.pdf', 'rb') as file:
    attach = MIMEApplication(file.read(), _subtype="pdf")
    attach.add_header('Content-Disposition', 'attachment', filename='attachment.pdf')
    msg.attach(attach)

步骤4:发送邮件

# 发送邮件
server.send_message(msg)

# 关闭SMTP会话
server.quit()

四、完整案例

让我们将上述步骤整合成一个完整的脚本:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

# SMTP服务器信息
smtp_server = 'smtp.gmail.com'
smtp_port = 587
username = 'your_email@gmail.com'
password = 'your_password'

# 创建SMTP会话
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)

# 创建MIMEMultipart对象
msg = MIMEMultipart()
msg['From'] = username
msg['To'] = 'recipient_email@example.com'
msg['Subject'] = 'Python SMTP Email Test'

# 添加邮件正文
body = "This is a test email sent using Python's smtplib."
msg.attach(MIMEText(body, 'plain'))

# 添加附件
with open('attachment.pdf', 'rb') as file:
    attach = MIMEApplication(file.read(), _subtype="pdf")
    attach.add_header('Content-Disposition', 'attachment', filename='attachment.pdf')
    msg.attach(attach)

# 发送邮件
server.send_message(msg)

# 关闭SMTP会话
server.quit()

请确保替换上述脚本中的smtp_serversmtp_portusernamepasswordrecipient_email@example.com为你自己的详细信息。

五、注意事项

  • 安全: 不要在脚本中硬编码密码,考虑使用环境变量或配置文件来存储敏感信息。
  • 测试: 在正式使用前,先在测试环境中发送邮件,确保一切正常。
  • 频率限制: 邮件提供商可能对发送邮件的数量有限制,频繁发送可能会导致账户被暂时封锁。

通过本文的学习,你应该能够使用Python的smtplib库发送带有文本和附件的电子邮件了。这是一个强大的工具,可以应用于各种自动化任务中,提高工作效率。不断实践和探索,你将能够发掘更多邮件自动化带来的便利。


结束语

喜欢博主的同学,请给博主一丢丢打赏吧↓↓↓您的支持是我不断创作的最大动力哟!感谢您的支持哦😘😘😘
打赏下吧

💝💝💝如有需要请大家订阅我的专栏【Python系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

python相关文章索引文章链接
Python基础语法(一):标识符与保留字部分Python基础语法(一):标识符与保留字部分
Python基础语法(二):数据类型Python基础语法(二):数据类型
Python基础语法(三):运算符Python基础语法(三):运算符
Python基础语法(四):条件控制Python基础语法(四):条件控制
Python基础语法(五):循环语句Python基础语法(五):循环语句
Python基础语法(六):推导式编程Python基础语法(六):推导式编程
Python基础教程(七):函数编程-从基础到进阶Python基础教程(七):函数编程-从基础到进阶
Python基础教程(八):迭代器与生成器编程Python基础教程(八):迭代器与生成器编程
Python基础教程(九):Lambda 函数Python基础教程(九):Lambda 函数
Python基础教程(十):装饰器Python基础教程(十):装饰器
Python基础教程(十一):数据结构汇总梳理Python基础教程(十一):数据结构汇总梳理
Python基础教程(十二):模块Python基础教程(十二):模块
Python基础教程(十三):file文件及相关的函数Python基础教程(十三):file文件及相关的函数
Python基础教程(十四):OS 文件/目录方法Python基础教程(十四):OS 文件/目录方法
Python基础教程(十五):面向对象编程Python基础教程(十五):面向对象编程
Python基础教程(十六):正则表达式Python基础教程(十六):正则表达式
Python基础教程(十七):CGI编程Python基础教程(十七):CGI编程
Python基础教程(十八):MySQL - mysql-connector 驱动Python基础教程(十八):MySQL - mysql-connector 驱动
Python基础教程(十九):网络编程Python基础教程(十九):网络编程

❤️❤️❤️觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1826992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 小市值股票模型代码及回测分析

目录 一、模型介绍 二、代码详解 2.1 初始化函数 2.2 股票筛选过滤函数 2.3 止损函数 2.4 开盘时运行函数 2.5 调仓函数 三、回测结果分析 3.1 收益净值图与概述 3.2 模型收益概览 3.3 年度收益图 3.4 月度收益的时间序列 3.5 月度收益热力图 3.6 月度收益频次分…

CorelDraw 2024软件安装包下载 丨不限速下载丨亲测好用

​简介: CorelDRAW Graphics Suite 订阅版拥有配备齐全的专业设计工具包,可以通过非常高的效率提供令人惊艳的矢量插图、布局、照片编辑和排版项目。价格实惠的订阅就能获得令人难以置信的持续价值,即时、有保障地获得独家的新功能和内容、…

conda安装pytorch使用清华源

原命令,例: # CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorch使用清华源,例: # CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatool…

Qwen2——阿里巴巴最新的多语言模型挑战 Llama 3 等 SOTA

引言 经过几个月的期待, 阿里巴巴 Qwen 团队终于发布了 Qwen2 – 他们强大的语言模型系列的下一代发展。 Qwen2 代表了一次重大飞跃,拥有尖端的进步,有可能将其定位为 Meta 著名的最佳替代品 骆驼3 模型。在本次技术深入探讨中,我…

【redis的基本数据类型】

基本数据类型 Redis的基本数据类型有五种,分别是 StringListHashSetSortedSet 这些基本的数据类型构成了其他数据类型的基石,而这些基本数据类型又对应着不同的底层实现,不同的底层实现往往是针对不同的使用场景做的特殊的优化,…

探索档案未来,尽在ARCHE-2024

2024年第三届上海国际智慧档案展览会暨高峰论坛(ARCHE-2024)将于2024年6月19日至21日在上海跨国采购会展中心隆重举行。深圳市铨顺宏科技有限公司应邀参展,将以全新形象盛装亮相,展示其在档案管理领域的最新技术和解决方案。 ARC…

Linux系统脚本开机自启动,开机自启动jar包vue前台等

脚本内容jiaobenname.sh #!/bin/bash # 设置环境变量 export JAVA_HOME/usr/local/java/jdk-17.0.10 export CLASSPATH.:$JAVA_HOME/lib/ export PATH.:$JAVA_HOME/bin:$PATHwhile true; doif ps aux | grep -v grep | grep "tomcat" > /dev/null; thenecho &quo…

Vue42-vc与vm的原型对象

一、普通函数与其对象的原型对象 显示原型属性,只有函数才有!!! 实例对象只有隐式原型属性。 普通函数与其对象,指向同一个原型对象!!! 这么写不推荐,建议直接如下格式&a…

C++初学者指南第一步---2. Hello world

C初学者指南第一步—2. Hello world 目录 C初学者指南第一步---2. Hello world1.源文件 “Hello.cpp”2.编译hello.cpp3.术语4.编译器标志5.不要使用 “using namespace std;” &#xff01; 1.源文件 “Hello.cpp” #include <iostream> // our first program int main…

3.多层感知机

目录 1.感知机训练感知机XOR问题&#xff08;Minsky&Papert 1969&#xff09; AI的第一个寒冬总结 2.多层感知机(MLP)学习XOR单隐藏层&#xff08;全连接层&#xff09;激活函数&#xff1a;Sigmoid激活函数&#xff1a;Tanh激活函数&#xff1a;ReLu 最常用的 因为计算速度…

LLM 学习之「向量数据库」

LLM 学习之「向量数据库」 什么是向量数据库&#xff1f; 向量数据库是一种以向量或数据点的数学表示形式存储数据的数据库。 人工智能和机器学习使非结构化数据能够转换为捕获意义和上下文的数字表示&#xff08;向量&#xff09;&#xff0c;这得益于自然语言处理和计算机视…

VSCode格式化插件-prettier

VSCode格式化插件 1.安装插件&#xff1a;prettier 2.设置默认格式化工具 设置中&#xff0c;搜索 “Default Formatter”。 在编辑器设置中&#xff0c;将默认格式化工具设为 Prettier。 3.启用格式化选项&#xff1a; 在设置中搜索 “Format On Save”&#xff0c;并勾选…

git回滚项目至指定版本

用过两种方式 1.使用git命令 进入到项目目录地址&#xff0c;使用git log查看提交版本信息 按q退出 若非对应分支&#xff0c;使用git checkout 分支名 切换分支 这里回退至上一个版本 git reset --hard 版本号 再次推送即可 这里需要使用-f命令 强行推送 2.在pycharm中…

12.容器间的互联(--link 是单方向的!!!)

容器间的互联&#xff08;–link 是单方向的&#xff01;&#xff01;&#xff01;&#xff09; –link意思就是链接容器进行通信 用法&#xff1a;--link 容器名字:随意设置别名&#xff1b;例如&#xff1a;--link nginx:nginx 注释&#xff1a;同一个容器中&#xff0c;可…

C#的Switch语句(在C#中如何根据结果执行不同的代码)

文章目录 基本语法示例 注意使用goto跳转其他标签 基本语法 switch语句是一种选择结构&#xff0c;用于基于某个表达式的值执行不同的代码块。它提供了一种更简洁、更易读的方式来处理多路分支逻辑&#xff0c;相比于多个嵌套的if…else if…else语句。下面是switch语句的基本…

C++语法07 程序中的除法和求余

程序中的除法 int / int int double / int double int / double double double / double double 规律总结 只要除号任意一边出现了double类型&#xff0c;结果就是double类型 只有除号两边都是int类型&#xff0c;结果才是int类型 这个规律也适用于加法减法和乘法 …

Mybatis框架中结果映射resultMap标签方法属性收录

Mybatis框架中结果映射resultMap标签收录 在MyBatis框架中&#xff0c;resultMap 是一种强大的机制&#xff0c;用于将数据库结果集映射到Java对象上。它允许你定义如何将查询结果中的列映射到Java对象的属性上&#xff0c;尤其是当数据库表的字段名与Java对象的属性名不一致时…

python全栈开发《07.数据类型之数字类型的应用、初识字符串类型》

目录 一、数字类型的简单应用二、初识字符串 1.什么是字符串2.字符串的内置函数与定义方法3.字符串的重要思想 三、python的内置函数id和len 一、数字类型的简单应用 对int与float的简单应用练习–初中生春游&#xff0c;主人公小编。 1.起因 小编学校组织春游&#xff0c;…

智能驾驶时代:车联网需要怎样的智能网络底座?

2024年&#xff0c;智能驾驶市场火热&#xff0c;无论是造车新势力还是老牌车企纷纷发力智能驾驶&#xff0c;他们深知&#xff0c;新能源汽车的下半场已到&#xff0c;再不发力智能驾驶&#xff0c;可能真的有些来不及了。车企不断加码单车智能的同时&#xff0c;政府也在稳步…

关于BERT和embedding

embedding到一个低维向量&#xff0c;但是需要回到onehot高维表示&#xff0c;所以大部分填词游戏最后都需要加上一个MLP接头。 word2vec如此简单的结构&#xff0c;学习到的是embedding 基于计数的统计方法和word2vec融合就形成了glove词嵌入模型 总结&#xff1a;通过各种…