Python读取Excel批量发送工资条邮件

编程 · 2023-08-03 · 174 人浏览

Excel文件格式

姓名部门基本工资提成邮箱
刘备首领3000300666@qq.com
张飞小兵1000100666@qq.com

代码

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

## Excel文件地址
wb = load_workbook('./000.xlsx')
sh = wb.active

## 修改自己的SMTP服务器信息
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
server.login("666@qq.com", "K0000000iFm")

title = '<tr>'
for i, row in enumerate(sh.rows):
    if i == 0:
        for ceil in row:
            title += f'<td>{ceil.value}</td>'
        title += '</tr>'
    else:
        info = '<tr>'
        for ceil in row:
            info += f'<td>{ceil.value}</td>'
        info += '</tr>'

        name = row[0].value
        to_email = row[4].value

        msg = f'''
        <h3>您好:{name}</h3>
        <p>请查收本月工资信息详情</p>
        <table border='1'>
        {title}
        {info}
        </table>
        '''

        msg_body = MIMEText(msg, 'html', 'utf-8')
        msg_body['From'] = formataddr(['人事部', '10086@qq.com'])
        msg_body['Subject'] = Header('工资条', 'utf-8')

        try:
            server.sendmail("666@qq.com", to_email, msg_body.as_string())
            print(f'成功发送工资条:{name}')

        except smtplib.SMTPException:
            print("Error: 无法发送邮件")

server.quit()

Zmail

使得在Python 3中发送和接收邮件变得更简单。安装命令:pip install zmail

import zmail

def base_use():
    server = zmail.server(
        "mail@qq.com",
        "123456",
        smtp_host="smtp.qq.com",
        smtp_port=587,
        smtp_tls=True,
        smtp_ssl=False,
    )

    info = {
        "subject": "主题",
        "from": "Aboss <mail@aboss.top>",
        "content_text": "邮件\n内容",
        "attachments": ["1.jpg", "2.jpg"],
    }

    server.send_mail("qq@qq.com", info)

if __name__ == "__main__":
    base_use()
Python
Theme Jasmine by Kent Liao