如何在Excel中基于单元格值自动发送电子邮件?

如何在Excel中基于单元格值自动发送电子邮件?

我们平常在做数据处理和管理时,常常需要从Excel中读取一些关键信息,然后发送电子邮件进行通知或者提醒。如果手动一个一个地发送电子邮件,将会非常耗费时间和精力。 所以,我们需要学习如何在Excel中基于单元格值,自动发送电子邮件。

1. 准备工作

在学习具体操作之前,我们首先需要进行一些必要的准备工作:

  1. 确认Excel中的单元格。我们需要查找 Excel 表格中的关键单元格,例如,当销售数量超过了某个值时,发送提醒邮件。

  2. 电子邮件账号准备就绪。使用代码发送邮件时,我们需要输入正确的发送人和接收人的邮件地址,输入 SMTP 账号和密码来进行验证登录。

  3. 准备vspython和安装所依赖的库。

    使用Python代码操作Excel和发送邮件时,我们需要安装一些库。在此我们建议大家使用vspython作为Python运行环境。简单快速,内置大部分常用Python库。

接下来我们来学习如何使用所准备好的vspython和库来完成自动发送邮件的操作。

2. 发送邮件

Python中有一个非常优秀的库,名叫SMTP(Simple Mail Transfer Protocol),我们可以利用它来发送邮件。

下面是我们利用SMTP库发送邮件的代码(Python):

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 发件人和收件人
sender = 'test@qq.com'
receiver = 'test@163.com'

# 所使用的SMTP服务器
smtpServer = 'smtp.qq.com'

# 发送人账号密码(这里使用的是QQ邮箱账号)
username = 'test@qq.com'
password = 'testpassword'

# 邮件主题和正文
subject = 'Python SMTP 邮件测试'
content = '这是一封Python发出的测试邮件'

# 邮件内容,文字格式
message = MIMEText(content, 'plain', 'utf-8')
message['Subject'] = Header(subject, 'utf-8')

# 发送邮件
smtp = smtplib.SMTP(smtpServer, 25)
smtp.login(username, password)
smtp.sendmail(sender, receiver, message.as_string())
smtp.quit()

上述代码通过SMTP发出一封简单的文本邮件,其中包括了发件人(Sender)、收件人(Receiver)、SMTP服务器、账号密码、邮件主题和正文等信息。我们可以根据自己的信息进行替换。

3. 操作Excel读取单元格

接下来,我们需要学习如何操作Excel文件,以读取单元格的信息。

在Python的Excel库中,openpyxl是非常常用的一种,我们来看看如何使用它读取单元格信息

from openpyxl import load_workbook

# 打开指定的Excel文件
wb = load_workbook(r'C:\test.xlsx')

# 选择Sheet1工作表
ws = wb['Sheet1']

# 读取单元格中的数据
cellContent = ws.cell(1, 1).value

上面的代码打开了 “test.xlsx “文件,然后选择了第一个Sheet工作表,最后读取了第一个单元格中的数据。当然,你也可以选择自己所需的Sheet工作表,并指定所需读取的单元格。

4. 将Excel中的数据和SMTP结合起来

最后,我们将SMTP和openpyxl库结合在一起,以实现基于单元格值自动发送邮件的功能。

为了达到这个目的,我们需要在Excel单元格中设置一些规则。例如,当销售数量超过了某个值时,程序将自动发送提醒邮件给相关人员。

假设我们的Excel文件如下所示:

产品名 销售数量 发送邮件
产品A 10
产品B 20
产品C 30
产品D 40

想要自动发送邮件的行,在 “发送邮件” 列中的单元格填写 “是”;不需要发送邮件的行,则填写 “否”。

现在,我们来看看如何实现自动发送邮件的功能。

import smtplib
from openpyxl import load_workbook
from email.mime.text import MIMEText
from email.header import Header

# 打开指定的Excel文件
wb = load_workbook(r'C:\test.xlsx')

# 选择Sheet1工作表
ws = wb['Sheet1']

# 所使用的SMTP服务器
smtpServer = 'smtp.qq.com' # 这里使用QQ邮箱SMTP服务器

# 发送人账号密码(这里使用的是QQ邮箱账号)
username = 'test@qq.com'
password = 'testpassword'

# 遍历每个行
for row in ws.iter_rows(min_row=2, max_col=3, values_only=True):
    product_name = row[0]
    sales_qty = row[1]
    send_email = row[2]

    # 判断是否需要发送邮件
    if send_email.lower() == '是':
        # 判断是否销售数量超过20
        if sales_qty > 20:
            # 邮件主题和正文
            subject = '销售提醒'
            content = '{} 的销售数量已经超过了20个'.format(product_name)

            # 邮件内容,文字格式
            message = MIMEText(content, 'plain', 'utf-8')
            message['Subject'] = Header(subject, 'utf-8')

            # 选择收件人
            receiver = 'test@163.com'

            # 发送邮件
            smtp = smtplib.SMTP(smtpServer, 25)
            smtp.login(username, password)
            smtp.sendmail(username, receiver, message.as_string())
            smtp.quit()

上面的代码中,我们利用 openpyxl 库读取 Excel 中的数据,然后再利用 SMTP 库发送邮件。在循环中,我们判断哪些行需要发送邮件,并检查其销售数量是否超过阈值,如果符合条件,则发送邮件给指定收件人。

结论

在本文中,我们学习了如何基于单元格值,在 Excel 中自动发送邮件。我们使用 openpyxl 库读取 Excel 中的数据,使用 SMTP 库发出邮件。同时,我们还演示了如何添加一些规则,确保邮件仅发送给符合特定条件的人。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Excel 教程