Python 发送邮件:使用 smtplib 和 openpyxl 从 Excel 读取邮件信息

本文将介绍如何使用 Python 的 smtplibopenpyxl 库,从 Excel 文件中读取邮件信息,并发送邮件。

代码示例

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

import openpyxl


wb = openpyxl.load_workbook('mail_info.xlsx') # 打开Excel文件
ws = wb['Sheet1'] # 选择指定的表格

sender='PTCN.ETS@cn.bosch.com'  # 公邮
mail_user = ws['A2'].value # 读取指定单元格的值  nt 账号
mail_pwd = ws['B2'].value  # nt pwd


smtpObj = smtplib.SMTP('rb-smtp-auth.rbesz01.com','25')
smtpObj.starttls()
smtpObj.login(mail_user,mail_pwd)


receiverList=[]
cc=[]

import pandas as pd
df = pd.read_excel('Project manager email address_test.xlsx')
receiverList = df['Email address'].astype(str).tolist() # convert to string
cc = df['CC'].astype(str).tolist() # convert to string

msg = MIMEMultipart()
msg['Subject'] = 'Open ProNovia E-mail reminder'
msg['From'] = sender
msg['To'] = ','.join(receiverList) #need to be a string split by ','
msg['Cc'] = ','.join(cc)

receiverList.extend(cc) # add cclist to receiverlist

# ... 邮件内容、附件等

smtpObj.sendmail(sender, receiverList, msg.as_string())
smtpObj.quit()

代码解释

  1. import smtplib - 导入 smtplib 库,用于发送邮件。
  2. from email.mime.multipart import MIMEMultipart - 从 email 库中导入 MIMEMultipart 类,用于创建多部分邮件。
  3. from email.mime.text import MIMEText - 从 email 库中导入 MIMEText 类,用于创建纯文本邮件。
  4. from email.mime.application import MIMEApplication - 从 email 库中导入 MIMEApplication 类,用于创建包含附件的邮件。
  5. import openpyxl - 导入 openpyxl 库,用于处理 Excel 文件。
  6. wb = openpyxl.load_workbook('mail_info.xlsx') - 打开名为 'mail_info.xlsx' 的 Excel 文件,并返回一个工作簿对象。
  7. ws = wb['Sheet1'] - 选择 Excel 文件中的 Sheet1 表格。
  8. sender='PTCN.ETS@cn.bosch.com' - 设置发件人邮箱地址。
  9. mail_user = ws['A2'].value - 从 Excel 表格中读取指定单元格的值作为发件人的账号。
  10. mail_pwd = ws['B2'].value - 从 Excel 表格中读取指定单元格的值作为发件人的密码。
  11. smtpObj = smtplib.SMTP('rb-smtp-auth.rbesz01.com','25') - 创建 SMTP 对象,连接 SMTP 服务器。
  12. smtpObj.starttls() - 启用 TLS 加密。
  13. smtpObj.login(mail_user,mail_pwd) - 登录发件人账号。
  14. receiverList=[] - 创建一个空列表,用于存储收件人邮箱地址。
  15. cc=[] - 创建一个空列表,用于存储抄送邮箱地址。
  16. import pandas as pd - 导入 pandas 库,用于读取 Excel 文件。
  17. df = pd.read_excel('Project manager email address_test.xlsx') - 从 Excel 文件中读取数据,并返回一个 DataFrame 对象。
  18. receiverList = df['Email address'].astype(str).tolist() - 选择 DataFrame 对象中名为 'Email address' 的列,并将其转换为字符串列表,存储到 receiverList 中。
  19. cc = df['CC'].astype(str).tolist() - 选择 DataFrame 对象中名为 'CC' 的列,并将其转换为字符串列表,存储到 cc 中。
  20. msg = MIMEMultipart() - 创建一个 MIMEMultipart 对象,用于存储邮件内容。
  21. msg['Subject'] = 'Open ProNovia E-mail reminder' - 设置邮件主题。
  22. msg['From'] = sender - 设置发件人邮箱地址。
  23. msg['To'] = ','.join(receiverList) - 将收件人邮箱地址列表转换为以逗号分隔的字符串,并设置为邮件的收件人。
  24. msg['Cc'] = ','.join(cc) - 将抄送邮箱地址列表转换为以逗号分隔的字符串,并设置为邮件的抄送。
  25. receiverList.extend(cc) - 将抄送邮箱地址列表添加到收件人邮箱地址列表中。

总结

本示例展示了如何使用 Python 发送邮件,并从 Excel 文件中读取邮件信息。您可以根据自己的需求修改代码,例如添加邮件内容、附件等。


原文地址: https://www.cveoy.top/t/topic/oYGs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录