教你怎么用Python实现自动生日祝福
在本文中,我们将介绍如何使用Python编写一个脚本,自动发送生日祝福邮件。下面是本攻略的步骤:
1. 准备工作
首先,我们需要准备以下几个工具:
- Python编程语言
- smtplib和email模块
如果你尚未安装Python,请先在官网下载并安装。smptlib和email模块已经在Python默认库中,无需额外安装。
2. 登录邮箱
在Python代码中,我们需要使用你的邮箱账号和密码来登录邮箱并发送邮件。请确保你已经正确配置了邮箱账号信息,包括邮箱地址和SMTP服务器信息。以下是基于腾讯企业邮箱(exmail.qq.com)的示例代码:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 邮箱服务器地址
mail_host = "smtp.exmail.qq.com"
# 邮箱服务器端口号
mail_port = 465
# 邮箱账号和密码
mail_user = "your_email_address"
mail_pass = "your_email_password"
# 登录邮箱
smtpObj = smtplib.SMTP_SSL(mail_host, mail_port)
smtpObj.login(mail_user, mail_pass)
3. 编写邮件正文
使用Python的email模块,我们可以非常方便地创建、发送邮件。以下是创建邮件正文的示例代码:
# 邮件正文内容
message = MIMEText("Happy Birthday!", "plain", "utf-8")
# 邮件正文标题
message["Subject"] = Header("生日祝福", "utf-8")
在上面的代码中,我们使用了MIMEText类创建了一个简单的纯文本邮件正文,并且指定了编码格式为UTF-8。然后,我们设置了邮件正文的标题为“生日祝福”。
4. 发送邮件
最后一步,我们可以使用smtplib的sendmail方法发送邮件。示例代码如下:
# 收件人邮箱地址
receiver = "recipient_email_address"
# 发送邮件
smtpObj.sendmail(mail_user, receiver, message.as_string())
# 关闭连接
smtpObj.quit()
在上面的代码中,我们指定了收件人的邮箱地址,并使用sendmail方法发送了邮件。最后,我们使用quit方法关闭了和邮箱服务器的连接。
示例说明
假设我们有一个名单,包含了某公司所有员工的生日日期和邮箱地址。我们可以编写一个Python脚本,根据名单中的生日日期,自动发送生日祝福邮件。示例代码如下:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import datetime
# 员工名单
employees = {
"Tom": {"dob": datetime.date(1986, 5, 12), "email": "tom@example.com"},
"Jerry": {"dob": datetime.date(1990, 1, 1), "email": "jerry@example.com"},
"Lucy": {"dob": datetime.date(1995, 10, 24), "email": "lucy@example.com"}
}
# 邮箱服务器地址
mail_host = "smtp.exmail.qq.com"
# 邮箱服务器端口号
mail_port = 465
# 邮箱账号和密码
mail_user = "your_email_address"
mail_pass = "your_email_password"
# 登录邮箱
smtpObj = smtplib.SMTP_SSL(mail_host, mail_port)
smtpObj.login(mail_user, mail_pass)
# 当前日期
today = datetime.date.today()
for name, info in employees.items():
# 生日日期
dob = info["dob"]
# 如果是生日,发送邮件
if dob.month == today.month and dob.day == today.day:
# 邮件正文内容
message = MIMEText("{},祝你生日快乐!".format(name), "plain", "utf-8")
# 邮件正文标题
message["Subject"] = Header("生日祝福", "utf-8")
# 收件人邮箱地址
receiver = info["email"]
# 发送邮件
smtpObj.sendmail(mail_user, receiver, message.as_string())
# 关闭连接
smtpObj.quit()
在上面的代码中,我们定义了一个名单,并检查每个员工的生日是否与当前日期相同。如果生日相同,则发送生日祝福邮件。要注意,我们需要将生日日期保存为datetime.date类型的对象。
另一个示例
我们还可以编写一个更加简单的Python脚本,从Excel表格中读取员工信息,并发送生日祝福邮件。示例代码如下:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import pandas as pd
import datetime
# 读取Excel表格
df = pd.read_excel("employees.xlsx")
# 邮箱服务器地址
mail_host = "smtp.exmail.qq.com"
# 邮箱服务器端口号
mail_port = 465
# 邮箱账号和密码
mail_user = "your_email_address"
mail_pass = "your_email_password"
# 登录邮箱
smtpObj = smtplib.SMTP_SSL(mail_host, mail_port)
smtpObj.login(mail_user, mail_pass)
# 当前日期
today = datetime.date.today()
for index, row in df.iterrows():
# 生日日期
dob = row["dob"].date()
# 如果是生日,发送邮件
if dob.month == today.month and dob.day == today.day:
# 邮件正文内容
message = MIMEText("{},祝你生日快乐!".format(row["name"]), "plain", "utf-8")
# 邮件正文标题
message["Subject"] = Header("生日祝福", "utf-8")
# 收件人邮箱地址
receiver = row["email"]
# 发送邮件
smtpObj.sendmail(mail_user, receiver, message.as_string())
# 关闭连接
smtpObj.quit()
在上面的代码中,我们使用pandas库从Excel表格中读取了员工信息。对于每个员工,我们检查生日日期是否与当前日期相同,并发送生日祝福邮件。要注意,我们需要将生日日期保存为datetime.date类型的对象,并从DataFrame中获取每个员工的信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:教你怎么用Python实现自动生日祝福 - Python技术站