最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)發(fā)送帶有pdf附件的電子郵件

 更新時間:2023年02月20日 09:14:40   作者:IT里的交易員  
使用Python發(fā)郵件,是個簡單的話題,可是如何可以優(yōu)雅的輕松的群發(fā)郵件,并附加PDF附件,是很多小伙伴的日常工作。本文就來和大家分享一下實現(xiàn)方法,需要的可以參考一下

前言

使用Python發(fā)郵件,是個簡單的話題,可是如何可以優(yōu)雅的輕松的群發(fā)郵件,并附加PDF附件,是很多小伙伴的日常工作,卻也是很多小白需要費力才能解決的問題。為了方便理解和使用,本文對郵件發(fā)送進行了類的包裝。將連接服務器、生成郵件、發(fā)送郵件分開執(zhí)行??梢越鉀Q工作中遇到的絕大部分問題。

話不多說,上代碼。

提示:以下是本篇文章正文內容,郵箱配置參數(shù)需要自行修改方可使用

一、如何使用Python發(fā)送電子郵件

使用Python發(fā)送電子郵件我們可以借用smtplib模塊,smtplib是一個 Python 庫,用于使用簡單郵件傳輸協(xié)議(SMTP)發(fā)送電子郵件。 smtplib是內置模塊; 我們不需要安裝它。 它抽象了 SMTP 的所有復雜性。發(fā)送郵件只要設置好參數(shù)即可。

二、使用步驟

1. 配置郵箱參數(shù)

下面以常用的QQ郵箱舉例,需要自行修改相應參數(shù)配置。同樣也適用于其它郵箱。

請先確保SMTP服務已開啟,如下圖。

QQ郵箱的發(fā)送服務器為:smtp.qq.com,郵件發(fā)送服務器端口普通為25,使用SSL,端口為465或587。

    # 1、設置郵件服務器配置信息及登錄郵箱賬號
    config = {
        'stmpServer' : 'smtp.qq.com',# 郵件發(fā)送服務器地址
        'stmpPort' : 25,# 郵件發(fā)送服務器端口:普通為25,QQ郵箱SMTP服務器(端口465或587)
        'fromEmailAddr' : 'send@qq.com', # 郵件發(fā)送方郵箱地址
        'password' : 'password', # 郵箱密碼
    }

2.發(fā)送帶有pdf附件郵件完整源碼(含演示代碼)

# -*- coding: utf-8 -*-

import smtplib
# 發(fā)送字符串的郵件
from email.mime.text import MIMEText
# 引入MIMEMultipart MIMEApplication類
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

class SendMail:
    def __init__(self,config):
        self.server = self.connect_mailServer(config)
            
    def connect_mailServer(self,config):     
        # 登錄并發(fā)送郵件
        print('try login')
        try:
            server = smtplib.SMTP(config['stmpServer'], config['stmpPort'])
            server.login(config['fromEmailAddr'], config['password'])
        except smtplib.SMTPException as e:
            print("smtplib 連接服務器報錯:", e)
        else:
            print('login success')
            return server

    def generate_email(self, subject, text, file, fromEmailAddr, toEmailAddr):
        # 生成email主題、正文、附件信息
        # ---------------------------發(fā)送帶附件郵件-----------------------------
        # 郵件內容設置
        message = MIMEMultipart()
        # 郵件主題
        message['Subject'] = subject
        # 發(fā)送方信息
        message['From'] = fromEmailAddr
        # 接受方信息
        message['To'] = toEmailAddr
        # 郵件正文內容
        message.attach(MIMEText(text, 'plain', 'utf-8'))
        # 添加PDF附件
        with open(file, "rb") as f:
            attach = MIMEApplication(f.read(),_subtype="pdf")
            attach.add_header('Content-Disposition','attachment',filename=str(file.split('\\')[-1]))
            message.attach(attach)
        return message


if __name__ == '__main__':
	# from mailto import SendMail #將此文件保存為mailto.py 放在調用文件同目錄即可使用此語句調用,下面是調用所需代碼。
	
    # 1、設置郵件服務器配置信息及登錄郵箱賬號
    config = {
        'stmpServer' : 'smtp.qq.com',# 郵件發(fā)送服務器地址
        'stmpPort' : 25,# 郵件發(fā)送服務器端口:普通為25,QQ郵箱SMTP服務器(端口465或587)
        'fromEmailAddr' : 'send@qq.com', # 郵件發(fā)送方郵箱地址
        'password' : 'password', # 郵箱密碼
    }

    # 2、構造郵件基本內容
    subject = '這是一封測試郵件'
    text = '測試郵件,附件是pdf'
    # 構造附件,假設存在以下目錄,注意附件路徑為\\,因為在提取文件名時會用到。
    file = 'D:\\測試PDF.pdf'
    
   
    # 3、開始發(fā)送郵件
    # 3.1 發(fā)送單封郵件:
    if 1:
        #生成email主題、正文、附件信息
        fromEmailAddr = config['fromEmailAddr']
        toEmailAddr = 'fisrt@qq.com'
        mail = SendMail(config)
        message = mail.generate_email(subject, text, file, fromEmailAddr, toEmailAddr)
        mail.server.sendmail(fromEmailAddr, toEmailAddr, message.as_string())
        print('sendmail to '+toEmailAddr+' success')
        mail.server.quit()
    
    # 3.2 發(fā)送多封郵件,對方郵箱存為list
    if 1:
        fromEmailAddr = config['fromEmailAddr']
        toEmailAddr_list = ['fisrt@qq.com','second@qq.com']
        mail = SendMail(config)
        same = True #這里表示郵件內容一致
        message = None
        if isinstance(toEmailAddr_list,list):
            # 如果列表就是多地址,使用群發(fā)
            for toEmailAddr in toEmailAddr_list:
                if not same or message is None:
                    # 第一次需要生成新郵件。如果每次標題不一樣,請在循環(huán)內自行修改subject, text, file參數(shù)
                    message = mail.generate_email(subject, text, file, fromEmailAddr, toEmailAddr)
                try:
                    mail.server.sendmail(fromEmailAddr, toEmailAddr, message.as_string())
                except smtplib.SMTPException as e:
                    print("smtplib 發(fā)送郵件報錯:", e)
                else:
                    print('sendmail to '+toEmailAddr+' success')
        print('sendmail finished')
        mail.server.quit()
  

總結

此方法可以拓展后可以發(fā)送任何類型附件,可以根據(jù)需要對每個發(fā)送對象自定義郵件文本和附件。特別適合需要群發(fā)郵件的小伙伴,關鍵是通過自定義發(fā)送給不同的對象,如果使用Foxmail等工具需要一封一封的編寫郵件內容,使用這個工具就可以完全避免這個麻煩,省時省力!

到此這篇關于Python實現(xiàn)發(fā)送帶有pdf附件的電子郵件的文章就介紹到這了,更多相關Python發(fā)送帶pdf附件郵件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

易门县| 郯城县| 安新县| 濮阳县| 秭归县| 蓝山县| 德安县| 永新县| 渑池县| 栖霞市| 中阳县| 巧家县| 金昌市| 潮安县| 土默特右旗| 名山县| 延津县| 家居| 九寨沟县| 芒康县| 天全县| 曲周县| 枝江市| 沙田区| 宾阳县| 民乐县| 修水县| 慈利县| 白河县| 成都市| 嘉善县| 崇阳县| 三门峡市| 尖扎县| 东阳市| 龙门县| 新竹县| 伊春市| 卢氏县| 长治市| 丰宁|