python发送excel表格的邮件,python发送电子邮件

本篇文章给大家谈谈python邮件正文表格怎么编辑,以及python发送excel表格的邮件,希望对各位有所帮助,不要忘了收藏本站喔。

#邮件发送方,收件方,数据为数据[[1,2],[1,3]]这种数组格式的,邮件主题,发送方密码
    # sendAddr = ''
    # recipientAddrs = ''
    # email_subject = ''
    # password = ''
def send_mail_excel(sendAddr,recipientAddrs,alarm_nodes,email_subject,password):
    pd.set_option('display.max_colwidth', -1)
    columns = ['节点id','节点名称','最后重跑时间','失败次数']

    filter_merge_data = pd.DataFrame(alarm_nodes,
                                     columns=columns)

    df_html = filter_merge_data.to_html(escape=False)  # DataFrame数据转化为HTML表格形式
    head = \
        """
        <head>
            <meta charset="utf-8">
            <STYLE TYPE="text/css" MEDIA=screen>

                table.dataframe {
                    border-collapse: collapse;
                    border: 2px solid #a19da2;
                    /*居中显示整个表格*/
                    margin: auto;
                }

                table.dataframe thead {
                    border: 2px solid #91c6e1;
                    background: #f1f1f1;
                    padding: 10px 10px 10px 10px;
                    color: #333333;
                }

                table.dataframe tbody {
                    border: 2px solid #91c6e1;
                    padding: 10px 10px 10px 10px;
                }

                table.dataframe tr {

                }

                table.dataframe th {
                    vertical-align: top;
                    font-size: 14px;
                    padding: 10px 10px 10px 10px;
                    color: #105de3;
                    font-family: arial;
                    text-align: center;
                }

                table.dataframe td {
                    text-align: center;
                    padding: 10px 10px 10px 10px;
                }

                body {
                    font-family: 宋体;
                }

                h1 {
                    color: #5db446
                }

                div.header h2 {
                    color: #0002e3;
                    font-family: 黑体;
                }

                div.content h2 {
                    text-align: center;
                    font-size: 28px;
                    text-shadow: 2px 2px 1px #de4040;
                    color: #fff;
                    font-weight: bold;
                    background-color: #008eb7;
                    line-height: 1.5;
                    margin: 20px 0;
                    box-shadow: 10px 10px 5px #888888;
                    border-radius: 5px;
                }

                h3 {
                    font-size: 22px;
                    background-color: rgba(0, 2, 227, 0.71);
                    text-shadow: 2px 2px 1px #de4040;
                    color: rgba(239, 241, 234, 0.99);
                    line-height: 1.5;
                }

                h4 {
                    color: #e10092;
                    font-family: 楷体;
                    font-size: 20px;
                    text-align: center;
                }

                td img {
                    /*width: 60px;*/
                    max-width: 300px;
                    max-height: 300px;
                }

            </STYLE>
        </head>
        """
    body = \
        """
        <body>

        <div align="center" class="header">
            <!--标题部分的信息-->
            <h1 align="center">表格中的数据为当天运行失败超过6次的节点,请查看运维中心处理</h1>
        </div>

        <hr>

        <div class="content">
            <!--正文内容-->
            <h2> </h2>

            <div>
                <h4></h4>
                {df_html}

            </div>
            <hr>

            <p style="text-align: center">

            </p>
        </div>
        </body>
        """.format(yesterday='20211012', df_html=df_html)

    html_msg = "<html>" + head + body + "</html>"
    html_msg = html_msg.replace('\n', '').encode("utf-8")

    msg = email.mime.multipart.MIMEMultipart()
    msg['from'] = sendAddr
    msg['to'] = recipientAddrs  # 多个收件人的邮箱应该放在字符串中,用字符分隔, 然后用split()分开,不能放在列表中, 因为要使用encode属性
    msg['subject'] = email_subject
    msg.attach(MIMEText(html_msg, "html", "utf-8"))
    smtpHost = 'smtp.exmail.qq.com'
    port = 465
    smtp = smtplib.SMTP_SSL(smtpHost, port)  # 需要一个安全的连接,用SSL的方式去登录得用SMTP_SSL,之前用的是SMTP().端口号465或587
    smtp.login(sendAddr, password)  # 发送方的邮箱,和授权码(不是邮箱登录密码)
    smtp.sendmail(sendAddr, recipientAddrs.split(";"), str(msg))  # 注意, 这里的收件方可以是多个邮箱,用";"分开, 也可以用其他符号
    smtp.quit()

效果图

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要发送邮件给一列中的多个邮箱地址,可以使用 Python 中的 smtplib 和 email 库。以下是一个示例代码,可以发送邮件Excel 表格中的所有收件人。 首先,需要安装 openpyxl 库来读取 Excel 文件。可以使用以下命令进行安装: ``` pip install openpyxl ``` 然后,可以使用以下代码来发送邮件: ```python import openpyxl import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication # 邮件参数 smtp_server = 'smtp.xxx.com' # 邮箱SMTP服务器地址 smtp_port = 25 # SMTP服务器端口 email_from = '[email protected]' # 发件人邮箱地址 email_pwd = 'password' # 发件人邮箱密码 email_subject = '邮件主题' # 邮件主题 # 读取Excel文件 wb = openpyxl.load_workbook('file.xlsx') ws = wb.active # 遍历Excel表格中的邮箱地址列 for row in ws.iter_rows(min_row=2, max_col=1, values_only=True): email_to = row[0] # 收件人邮箱地址 email_content = '邮件内容' # 邮件内容 # 创建邮件对象 msg = MIMEMultipart() msg['From'] = email_from msg['To'] = email_to msg['Subject'] = email_subject # 添加邮件正文 text = MIMEText(email_content, 'html', 'utf-8') msg.attach(text) # 添加附件 filename = 'attachment.pdf' # 附件文件名 with open(filename, 'rb') as f: attachment = MIMEApplication(f.read(), _subtype='pdf') attachment.add_header('Content-Disposition', 'attachment', filename=filename) msg.attach(attachment) # 发送邮件 server = smtplib.SMTP(smtp_server, smtp_port) server.login(email_from, email_pwd) server.sendmail(email_from, email_to, msg.as_string()) server.quit() ``` 在上面的代码中,将邮件参数替换为实际值,然后将文件名和附件名替换为实际文件名。遍历 Excel 表格中的邮箱地址列时,可以根据需要修改行号和列号。 ### 回答2: 根据Excel中的一列邮箱地址,我们可以借助电子邮件客户端或编程语言的邮件发送功能来发送邮件给对应的收件人。 首先,我们需要访问Excel文件并提取邮箱地址列的数据。可以使用Python的pandas库来读取Excel文件并获取对应列的数据。使用pandas库的read_excel函数可以读取Excel文件并将其转换为DataFrame格式进行进一步操作。 接下来,我们需要使用SMTP协议来发送邮件。SMTP(Simple Mail Transfer Protocol)是用于在网络上发送电子邮件的标准协议。可以使用Python的smtplib库来实现邮件发送功能。 首先,我们需要连接到邮箱的SMTP服务器。这可以通过指定SMTP服务器的主机名和端口号来实现。一般情况下,常用的SMTP服务器是Gmail、Outlook、163等。根据所选SMTP服务器,您需要提供SMTP服务器的主机名和端口号,并使用smtplib库的SMTP函数建立与服务器的连接。 接下来,在连接成功之后,我们需要登录到邮箱账户。您需要提供用于登录的邮箱地址和密码,并使用SMTP对象的login函数进行登录验证。 然后,我们可以通过使用SMTP对象的sendmail函数来发送邮件。我们需要提供发件人、收件人、主题和正文信息。收件人的邮箱地址可以从Excel中获取。 最后,我们需要关闭与SMTP服务器的连接。使用smtplib库的quit函数即可关闭连接。 综上所述,根据Excel其中一列邮箱地址发送邮件给对应人的步骤是:读取Excel文件,提取邮箱地址列数据;连接到SMTP服务器;登录到邮箱账户;使用sendmail发送邮件;关闭与SMTP服务器的连接。 ### 回答3: 根据Excel中的一列邮箱地址发送邮件给对应人是一个常见的应用需求。在Excel中,我们可以通过以下步骤来实现这个目标。 第一步,确保Excel中的邮箱地址列是完整且正确的。如果有任何错误或缺失,需要先进行修正或补全。 第二步,打开一个电子邮件客户端,如Outlook或Gmail。确保你拥有一个有效的发件邮箱。在电子邮件客户端中创建一个新的邮件。 第三步,回到Excel中,选中邮箱地址列的第一个单元格(发件人的邮箱地址)。然后,将该单元格中的邮箱地址复制到剪贴板中。 第四步,回到电子邮件客户端中的新邮件页面,将刚刚复制的邮箱地址粘贴到收件人字段中。 第五步,编写邮件的内容,可以根据需要添加附件或格式化文本。确保邮件的内容与收件人相关,并以礼貌和明确的方式表达。 第六步,点击发送按钮,将邮件发送给当前的收件人。 第七步,回到Excel中,选中邮箱地址列的下一个单元格(下一个收件人的邮箱地址)。重复第三至第六步,将邮件依次发送给每个收件人。直到所有邮箱地址都发送邮件。 最后,确认所有的邮件都已发送成功。在Excel中,可以标记已发送的邮箱地址或记录已发送的日期和时间,以便于日后追踪和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值