亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python辦公自動化實戰(zhàn)之打造智能郵件發(fā)送工具

 更新時間:2025年07月08日 15:33:25   作者:站大爺IP  
在數(shù)字化辦公場景中,郵件自動化是提升工作效率的關(guān)鍵技能,本文將演示如何使用Python的smtplib和email庫構(gòu)建一個支持圖文混排,多附件,多收件人的智能郵件系統(tǒng)

前言

在數(shù)字化辦公場景中,郵件自動化是提升工作效率的關(guān)鍵技能。本文將通過實際案例,演示如何使用Python的smtplib和email庫構(gòu)建一個支持圖文混排、多附件、多收件人的智能郵件系統(tǒng)。無需復(fù)雜配置,只需跟隨步驟操作,即可實現(xiàn)郵件自動化發(fā)送。

一、基礎(chǔ)配置:搭建郵件發(fā)送框架

1.1 郵箱服務(wù)準(zhǔn)備

以163郵箱為例,首先需要開啟SMTP服務(wù):

  • 登錄郵箱后進(jìn)入設(shè)置界面
  • 選擇"POP3/SMTP/IMAP"選項
  • 開啟SMTP服務(wù)并獲取授權(quán)碼(注意:授權(quán)碼將替代登錄密碼使用)

1.2 核心庫導(dǎo)入

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.header import Header

1.3 基礎(chǔ)發(fā)送函數(shù)

def send_email(config):
    msg = MIMEMultipart()
    msg['From'] = config['sender']
    msg['To'] = ', '.join(config['receivers'])
    msg['Subject'] = Header(config['subject'], 'utf-8')
    
    # 添加正文
    msg.attach(MIMEText(config['body'], 'html', 'utf-8'))
    
    try:
        with smtplib.SMTP_SSL(config['smtp_server'], config['port']) as server:
            server.login(config['sender'], config['password'])
            server.sendmail(config['sender'], config['receivers'], msg.as_string())
        print("郵件發(fā)送成功")
    except Exception as e:
        print(f"發(fā)送失敗: {str(e)}")

二、進(jìn)階功能實現(xiàn)

2.1 多附件處理

def add_attachments(msg, file_paths):
    for file_path in file_paths:
        with open(file_path, 'rb') as f:
            attachment = MIMEText(f.read(), 'base64', 'utf-8')
            attachment['Content-Type'] = 'application/octet-stream'
            attachment['Content-Disposition'] = f'attachment; filename="{file_path.split("/")[-1]}"'
            msg.attach(attachment)

2.2 圖文混排實現(xiàn)

def add_images(msg, image_paths):
    for img_path in image_paths:
        with open(img_path, 'rb') as f:
            img = MIMEImage(f.read())
            img.add_header('Content-ID', f'<{img_path.split("/")[-1]}>')
            msg.attach(img)

2.3 多收件人優(yōu)化

def validate_receivers(receivers):
    valid_emails = []
    for email in receivers:
        if '@' in email and '.' in email.split('@')[1]:
            valid_emails.append(email)
    return valid_emails

三、完整實戰(zhàn)案例

3.1 場景描述

某公司需要向全體員工發(fā)送季度工作報告,要求包含:

  • PDF格式的正式報告
  • 業(yè)績趨勢圖(PNG格式)
  • Excel格式的詳細(xì)數(shù)據(jù)
  • 郵件正文需要包含圖表引用

3.2 完整代碼實現(xiàn)

def main():
    # 配置參數(shù)
    config = {
        'sender': 'your_email@163.com',
        'password': '授權(quán)碼',
        'smtp_server': 'smtp.163.com',
        'port': 465,
        'receivers': ['test1@example.com', 'test2@example.com'],
        'subject': '2025年第二季度工作報告',
        'body': '''
        <h1>季度工作報告</h1>
        <p>附件包含詳細(xì)數(shù)據(jù),正文圖表如下:</p>
        <img src="cid:業(yè)績趨勢圖.png">
        '''
    }
 
    # 創(chuàng)建郵件對象
    msg = MIMEMultipart()
    msg['From'] = config['sender']
    msg['To'] = ', '.join(config['receivers'])
    msg['Subject'] = Header(config['subject'], 'utf-8')
 
    # 添加正文
    msg.attach(MIMEText(config['body'], 'html', 'utf-8'))
 
    # 添加附件
    add_attachments(msg, [
        './reports/季度數(shù)據(jù).xlsx',
        './reports/正式報告.pdf'
    ])
 
    # 添加圖片
    add_images(msg, [
        './charts/業(yè)績趨勢圖.png'
    ])
 
    # 發(fā)送郵件
    send_email(config, msg)
 
if __name__ == '__main__':
    main()

四、擴(kuò)展功能建議

4.1 定時發(fā)送

結(jié)合schedule庫實現(xiàn)定時任務(wù):

import schedule
import time
 
schedule.every().day.at("09:30").do(main)
 
while True:
    schedule.run_pending()
    time.sleep(60)

4.2 批量發(fā)送

從CSV讀取收件人信息:

import pandas as pd
 
def batch_send(csv_path):
    df = pd.read_csv(csv_path)
    for index, row in df.iterrows():
        config['receivers'] = [row['email']]
        config['body'] = f"尊敬的{row['name']},這是您的專屬報告"
        main()

4.3 異常處理

添加重試機(jī)制和日志記錄:

import logging
from retrying import retry
 
logging.basicConfig(filename='email.log', level=logging.INFO)
 
@retry(stop_max_attempt_number=3)
def send_email_safe(config, msg):
    try:
        # 原有發(fā)送邏輯
        logging.info(f"成功發(fā)送至{config['receivers']}")
    except Exception as e:
        logging.error(f"發(fā)送失敗: {str(e)}")
        raise

五、注意事項

  • 授權(quán)碼安全:建議定期更換郵箱授權(quán)碼
  • 文件路徑:使用絕對路徑或相對路徑時注意工作目錄
  • 郵件大?。簡蝹€郵件附件建議不超過20MB
  • 測試驗證:發(fā)送測試郵件時建議使用自己的郵箱作為收件人
  • 服務(wù)器限制:部分郵箱服務(wù)器有每日發(fā)送量限制

通過本文介紹的方案,可以實現(xiàn)從簡單郵件到復(fù)雜郵件的自動化發(fā)送。實際使用中可根據(jù)需求添加模板引擎、數(shù)據(jù)庫集成等功能,構(gòu)建更完善的郵件自動化系統(tǒng)。

?以上就是Python辦公自動化實戰(zhàn)之打造智能郵件發(fā)送工具的詳細(xì)內(nèi)容,更多關(guān)于Python智能郵件發(fā)送的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 深入理解python Matplotlib庫的高級特性

    深入理解python Matplotlib庫的高級特性

    Matplotlib是一款極其強(qiáng)大的Python數(shù)據(jù)可視化庫,這篇文章中,我們將深入討論 Matplotlib 的一些高級特性,包括對象導(dǎo)向接口、自定義顏色映射和樣式、動態(tài)圖形等,感興趣的小伙伴跟著小編一起來探討吧
    2023-07-07
  • Python時間操作之pytz模塊使用詳解

    Python時間操作之pytz模塊使用詳解

    在學(xué)習(xí)Python過程中,我們已經(jīng)了解了一些關(guān)于時間操作的庫,如:Python內(nèi)置庫:time,datatime和第三方庫:dateutil,pytz等。本文將詳細(xì)講講pytz模塊的使用,需要的可以參考一下
    2022-06-06
  • Pandas數(shù)據(jù)如何讀取與導(dǎo)出

    Pandas數(shù)據(jù)如何讀取與導(dǎo)出

    Pandas是一個強(qiáng)大的Python庫,用于數(shù)據(jù)處理和分析,它提供了多種文件格式的數(shù)據(jù)讀取和導(dǎo)出方法,包括CSV、Excel、SQL數(shù)據(jù)庫、JSON等,常用的數(shù)據(jù)讀取方法為`pd.read_csv()`、`pd.read_excel()`等,導(dǎo)出方法為`to_csv()`、`to_excel()`等
    2025-01-01
  • 使用python調(diào)用zxing庫生成二維碼圖片詳解

    使用python調(diào)用zxing庫生成二維碼圖片詳解

    本篇文章主要介紹了使用python調(diào)用zxing庫生成二維碼圖片,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Jupyter Lab無法打開終端窗口的解決方法

    Jupyter Lab無法打開終端窗口的解決方法

    本文主要介紹了Jupyter Lab無法打開終端窗口的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python內(nèi)置函數(shù)—vars的具體使用方法

    Python內(nèi)置函數(shù)—vars的具體使用方法

    本篇文章主要介紹了Python內(nèi)置函數(shù)—vars的具體使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 解讀python基于netconf協(xié)議獲取網(wǎng)元的數(shù)據(jù)

    解讀python基于netconf協(xié)議獲取網(wǎng)元的數(shù)據(jù)

    大多數(shù)企業(yè)都需要網(wǎng)絡(luò)支撐企業(yè)的ICT運行,針對企業(yè)網(wǎng)絡(luò)中的網(wǎng)元設(shè)備(包括交換機(jī),路由器,防火墻等),很多企業(yè)希望根據(jù)自身的業(yè)務(wù)特點定制網(wǎng)絡(luò)管理,如下就以華為的NE40E網(wǎng)元為例,說明如何通過python基于netconf協(xié)議實現(xiàn)對于網(wǎng)元配置數(shù)據(jù)的獲取。
    2021-05-05
  • Python中Selenium的基本使用步驟

    Python中Selenium的基本使用步驟

    Selenium是一個用于自動化瀏覽器操作的Python庫,常用于Web應(yīng)用的測試和爬蟲等場景,本文給大家介紹Python中Selenium的基本使用教程,感興趣的朋友一起看看吧
    2023-11-11
  • pytorch下使用LSTM神經(jīng)網(wǎng)絡(luò)寫詩實例

    pytorch下使用LSTM神經(jīng)網(wǎng)絡(luò)寫詩實例

    今天小編就為大家分享一篇pytorch下使用LSTM神經(jīng)網(wǎng)絡(luò)寫詩實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python劃分?jǐn)?shù)組為連續(xù)數(shù)字集合的練習(xí)

    Python劃分?jǐn)?shù)組為連續(xù)數(shù)字集合的練習(xí)

    這篇文章主要給大家分享的是Python劃分?jǐn)?shù)組為連續(xù)數(shù)字集合的練習(xí),下面文章首先對問題進(jìn)行詳細(xì)描述,在根據(jù)問題提出解決方案,內(nèi)容詳細(xì),需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11

最新評論