Python寄信基礎-寄送檔案教學|用程式附檔Word、PDF、CSV、圖片都可以【附程式碼】

Ivan Yang
行銷搬進大程式
6 min readMay 22, 2024

點我看影片教學

👉【行銷搬進大程式】給您更多實用文章與免費教學影片,附贈Python程式碼!

Python寄信基礎-寄送檔案教學|用程式附檔Word、PDF、CSV、圖片都可以【附程式碼】

在前面的課「Python寄Gmail基礎-文字樣式教學|文字粗體、顏色通通可以改【附Python程式碼】」後,您可能會想問:那附件檔案的部分呢?的確,在企業中mail 除了拿來做訊息溝通外,也時常被拿來傳送一些較為正式的文件,因此本堂課程就來教您如何傳送word檔、PDF檔、圖片檔、CSV檔。

1.信件內容準備

這裡我們必須使用email.mime 套件,並且需要利用smtplib套件進行SMTP協定的寄送,因此需要先將所有套件載入。

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication
import smtplib
from pathlib import Path

首先,我們在寄信的時候,也是要打寄件者信箱、收件者信箱、標題等等,這些我們可以請Python程式幫我們自動帶入,但我們還是必須要給Python這些資料他們才能幫我們填入,因此這裡先行設定寄信相關參數。

sendFrom = "寄件者信箱"
senderPassword = "寄件者密碼"
content = MIMEMultipart() #建立MIMEMultipart物件
content["subject"] = "輸入您想要的郵件標題" #郵件標題
content["from"] = sendFrom #寄件者
content["to"] = "收件者信箱" #收件者
content.attach(MIMEText("Ivan的測試寄信,寄信處女作品~~")) #郵件內容

2.Gmail寄送圖片

寄送圖片必須要使用MIMEImage() 方法指定圖片,而圖片需要放在工作目錄下,若不知道Spyder 編輯器如何設定工作目錄的話,可以參考課程「Spyder使用教學」。

content.attach(MIMEImage(Path("夕陽.jpg").read_bytes()))  # 郵件圖片內容

3.Gmail寄送PDF檔案

首先使用MIMEApplication() 方法指定PDF檔案,並且需要利用add_header() 方法指定該檔案為attachment(附件),最後利用attach() 方法將整包檔案附加在信件中。

#寄送PDF檔案
fileName = 'test.pdf'
pdfload = MIMEApplication(open(fileName,'rb').read())
pdfload.add_header('Content-Disposition',
'attachment',
filename=fileName)
content.attach(pdfload)

4.Gmail寄送Word檔案

使用MIMEApplication() 方法指定word檔案,並且需要利用add_header() 方法指定該檔案為attachment(附件),最後利用attach() 方法將整包檔案附加在信件中。

#寄送Word檔案
fileName = 'test.docx'
pdfload = MIMEApplication(open(fileName,'rb').read())
pdfload.add_header('Content-Disposition',
'attachment',
filename=fileName)
content.attach(pdfload)

5.Gmail寄送CSV檔案

使用MIMEApplication() 方法指定CSV檔案,並且需要利用add_header() 方法指定該檔案為attachment(附件),最後利用attach() 方法將整包檔案附加在信件中。

#寄送csv檔案
fileName = '顧客訂單.csv'
pdfload = MIMEApplication(open(fileName,'rb').read())
pdfload.add_header('Content-Disposition', # 內容配置
'attachment', # 附件
filename=fileName)
content.attach(pdfload)

6.信件寄送

在信件內容確定後,執行以下程式碼,就會記送信件了。

with smtplib.SMTP(host="smtp.gmail.com", port="587") as smtp:  # 設定SMTP伺服器
try:
smtp.ehlo() # 驗證SMTP伺服器
smtp.starttls() # 建立加密傳輸
smtp.login( sendFrom, senderPassword) # 登入寄件者gmail
smtp.send_message(content) # 寄送郵件
print("成功傳送")
except Exception as e:
print("Error message: ", e)

👉【完整程式碼】👈

👉想看更多Python實作教學影片【免費】👈

📌Python基礎課程

📌Line Bot 聊天機器人

📌行銷人轉職爬蟲王實戰|5大社群+2大電商

📌Telegram Bot 聊天機器人

📌實用工具

▶ 點此:https://marketingliveincode.com/
查看更多Python工具技巧、商業分析、教學影片

滿意我們餐點嗎?給點 Claps 吧👏👏
1. 我學習到了新的概念與工具 1–10+
2. 我理解了這篇內容所講述的工具與技巧 20–30+
3. 我可以將這篇的內容運用到學習和工作上20–30+

作者:楊超霆(行銷搬進大程式 創辦人)

--

--

Ivan Yang
行銷搬進大程式

Marketing data analysis資深資料科學家。曾任中華電信AI專案講師、資策會AI講師、外貿協會講師、台科大行銷資料課程講師、就讀台科大資訊管理碩士班。著有《打造股市小秘書》《stp行銷策略之python商業應用實戰》。