Python实现发送电子邮件功能

news/2024/11/16 17:33:51/

大家好,以编程方式发送电子邮件可以成为自动化通信过程的一种强大方式,本文将探讨如何使用Python发送电子邮件,介绍如何设置SMTP服务器、为Gmail生成应用程序密码,并提供使用smtplib库发送电子邮件的逐步指南。

在深入研究编码之前,需要满足以下几个先决条件:

  1. 为发件人创建一个Gmail帐户(例如test@gmail.com)。

  2. 为发件人的Gmail帐户生成应用程序密码。你可以按照谷歌提供的说明进行操作。

  3. 创建一个GitHub存储库来托管你的代码。该存储库将作为版本控制空间来存储你的电子邮件发送代码。

  4. 安装必要的库。在本例中,我们将使用smtplib库,该库已包含在Python的标准库中。

第一步:导入所需的库 

为了开始工作,需要导入smtplib库以及来自电子邮件库中的其他必要模块。在Python脚本的开头添加以下几行代码:

import smtplibfrom email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

第二步:收集电子邮件的详细信息

在运行该程序之前,收集所需的电子邮件详细信息,包括:

  • 发件人电子邮件地址(例如test@gmail.com)

  • 发件人应用程序密码(从上一步生成)

  • 收件人电子邮件地址(如果有多个收件人,则用逗号分隔)

  • 电子邮件内容(电子邮件的正文)

 第三步:创建SMTP服务器

接下来需要创建一个SMTP服务器,以与电子邮件服务器建立连接。在本示例中使用Gmail的SMTP服务器。添加以下代码:

sender_email = "sender+email@mail.com"
sender_password = "wabsqstlctgygoad"server = smtplib.SMTP_SSL('smtp.googlemail.com', 465)
server.login(sender_email, sender_password)

第四步:发送电子邮件

为了发送电子邮件,我们将使用循环遍历收件人电子邮件地址,并逐个发送电子邮件。代码如下所示:

receiver_emails = ["receiver+email1@mail.com","receiver+email2@mail.com"]
for receiver_email in receiver_emails:msg = MIMEMultipart('alternative')msg['Subject'] = "Test mail"msg['From'] = sender_emailmsg['To'] = receiver_emailhtml = """<h1>Hello world</h1>"""msg.attach(MIMEText(html, 'html'))server.sendmail(sender_email, receiver_email, msg.as_string())

上述代码创建了一个MIMEMultipart对象,并设置了主题、发件人和收件人字段,使用MIMEText 对象将HTML正文附加到电子邮件上。最后,使用SMTP服务器的sendmail方法发送电子邮件。

第五步:停止服务器

在发送所有电子邮件后,不要忘记通过添加以下代码来停止服务器:

server.quit()

第六步:测试代码

现在已经有完整的代码,可以对它进行测试,将占位符电子邮件地址(如发件人电子邮件、发件人应用程序密码和收件人电子邮件地址)替换为自己的电子邮件详细信息,还可以修改电子邮件内容以适应自己的需求。

在进行必要的更改后,运行代码并检查自己的电子邮件收件箱,会看到主题为“Test mail”的测试电子邮件,以及 HTML格式中的“Hello world”消息。

 

通过按照本文所述的步骤并参考GitHub存储库中的示例代码,将能够使用Python编程自动发送电子邮件。完整代码如下所示:

import smtplibfrom email.mime.multipart import MIMEMultipart
from email.mime.text import MIMETextsender_email = "sender+email@mail.com"
sender_password = "wabsqstlctgygoad"server = smtplib.SMTP_SSL('smtp.googlemail.com', 465)
server.login(sender_email, sender_password)receiver_emails = ["receiver+email1@mail.com","receiver+email2@mail.com"]
for receiver_email in receiver_emails:msg = MIMEMultipart('alternative')msg['Subject'] = "Test mail"msg['From'] = sender_emailmsg['To'] = receiver_emailhtml = """<h1>Hello world</h1>"""msg.attach(MIMEText(html, 'html'))server.sendmail(sender_email, receiver_email, msg.as_string())server.quit()

总结

本文介绍了使用Python发送电子邮件的过程,讨论了先决条件、导入所需的库、收集电子邮件详细信息、创建SMTP服务器以及使用smtplib库发送电子邮件。通过按照本文中概述的步骤,可以有效地自动化自己的电子邮件通讯。


http://www.ppmy.cn/news/675374.html

相关文章

maven-plugin的理解与定义

文章目录 一、plugin的定义与配置1. 自定义plugin2. 绑定goal到maven执行周期3. 定义goal默认的maven周期4. 命令执行当前pom定义的execution5. plugin运行时采用最新dependencies6. 插件配置不在子pom生效 二、扩展 一、plugin的定义与配置 1. 自定义plugin 参考: 官网 基本…

【Docker私有仓库】创建与配置

Docker私有仓库 一、 私有仓库搭建与配置 &#xff08;1&#xff09;拉取私有仓库镜像&#xff08;此步省略&#xff09; docker pull registry&#xff08;2&#xff09;启动私有仓库容器 docker run -di --nameregistry -p 5000:5000 registry&#xff08;3&#xff09;打…

【python】解决TypeError: ‘str‘ object cannot be interpreted as an integer

当用python的input输入一个数字时 其格式默认为string格式 所以要用int()转换为int格式 比如 import math def opgg(): # x input("请输入第一个数字") # y input("请输入第二个数字") x int(input("请输入第一个数字")) …

lol最克制诺手的英雄_LOL:62个上单英雄,竟只有3个能克制诺手?第1名很多人想不到!...

在英雄联盟中&#xff0c;诺克萨斯之手一直是个非常热门的英雄&#xff0c;以暴力的伤害能力&#xff0c;极强的对面能力和大招斩杀技能的快感&#xff0c;深受很多玩家的喜欢&#xff0c;无论是低分段还是高分段&#xff0c;使用诺手上单的玩家都很多。诺手在上路可以算是食物…

wegame饥荒一直登录中_WeGame到底有多难用?“LOL大神自己编写一个插件,完美代替WG”...

前言&#xff1a;英雄联盟作为一款已经运营了十年之久的游戏&#xff0c;已经有了非常多的玩家和粉丝&#xff0c;随时游戏的不断发展&#xff0c;比赛机制的不断完善&#xff0c;这款游戏正在逐渐的走向世界。电竞行业的越来越热门&#xff0c;导致腾讯官方加大了对游戏的监管…

SAP PP T-Code

事务码 描述(中英文) CNR1 Create Work Center 生成工作中心 CNR2 Change Work Center 更改工作中心 CNR3 Display Work Center 显示工作中心 CR00 Resource Planning Menu 资源计划菜单 CR01 Create Work Center 生成工作中心 CR02 Change Work Center 更改工作中心 CR03 Disp…

利用matlab爬虫整理云顶之弈英雄信息

问题描述 https://lolchess.gg是一个很权威的云顶之弈资料站。从这个网站上可以整理出云顶之弈所有英雄的详细资料。可惜是英文网站&#xff0c;且不像OPGG一样有中文版&#xff0c;所以我们爬取的数据只能是英文版的。真是感叹国内居然没有一家网站去认真地去做云顶之弈的资料…

Java 微信jsapi支付

spring boot微信jsapi支付 话不多说&#xff0c;撸起袖子就是干&#xff0c;下面上源码pom.xml配置文件 resources/wx.properties配置类service(WechatPayService)上impl(WechatPayServiceImpl)之前还是先上一个获取IP的工具类和返回工具类&#xff08; ResResult&#xff09;R…