Python實現Gmail客製化信件大量發送 — 【基礎篇】

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

email-g8fbc3b8fb_640.jpg

在mail中cc別人,是一個非常方便的功能,但有時候每個信件必須客製化,譬如在信件開頭必須打上「親愛的XXX小姐您好」,姓名的部分就必須要手動替換,非常麻煩,更別說會員還有上百,甚至上千個。其實用Python程式可以完全自動化這個過程,我們將以Gmail為範例帶領您走向自動化寄信的航道。

本文章會以以下流程來為各位命苦的小編、行銷人員、秘書解惑:
1. Gmail設定與申請
2. Python寄信基礎教學
3. 客製化寄件案例實戰,這會在「Python實現Gmail客製化信件大量發送 — 【案例實戰篇】」中詳細說明。

1. Gmail設定與申請

本文將使用Gmail為範例,因此我們必須先將Gmail帳號開通,許可Python可以使用自己的帳號發送信件。

1–1. 進入Google帳號管理:

請到Chrome中開啟分頁,點選您的帳號圖片,並點選「管理你的Google帳號」,即可進入帳號管理畫面。

進入Google帳號管理

1–2. 進入安全性管理:

在左邊的選單中,選擇「安全性」,並將兩步驟驗證打開,打開時會要求一些身分驗證。


進入安全性管理

1–3. 設定專案名稱:

完成後還必須設定一個專案密碼,您的Gmail就可以透過Python發送信件了。應用程式直接選取「其他」,然後輸入自己自訂的專案名稱。

設定專案名稱

1–4. 取得專案密碼:

完成後您就會得到一串密碼,為了保護作者資訊安全,這裡將密碼置換成範例「abcdefghijkalmno」。請將這組密碼保護好,否則有心人士就可以以您的名義濫發信件,進行非法用途。

取得專案密碼

2. Python寄信基礎教學

接下來的Python寄信基礎教學,會切分成「附件」與「文字」兩個區塊進行教學。「附件」是平時我們在信件中可以看到的附件檔案,通常都會是圖片、PDF、Word、Excel格式。另外「文字」則是分享如何客製化信中的文字樣式,譬如人名下方需要底線,重點需要粗體等等。

2–1. 寄送檔案:

完整程式碼

在程式碼中可以對照後方的註解,您便會了解該行程式碼在作什麼。首先先創建一個MIMEMultipart物件,您可以把他想成準備好一張信紙,當然一開始整張紙都是白的。

content = MIMEMultipart() #建立MIMEMultipart物件

設定信件的標題,身為小編的您,聳動的標題就下在這裡。

content["subject"] = "測試寄信"  #郵件標題

您必須將程式碼16行改成前個步驟,開啟Python可以控制的Gmail帳號。程式碼17行則改成要接收信的Email帳號。

content["from"] = "寄件者的信箱"  #寄件者
content["to"] = "收件者的信箱" #收件者
請不要輸入作者我的信箱

放置信件的內文,內文的客製化會在後面的文章詳細講解。

content.attach(MIMEText("Ivan的測試寄信,寄信處女作品~~"))  #郵件內容

增加一個圖片附件,只需要將圖片與執行的程式碼放在一起,便可以將圖片包入信件一並寄送。

content.attach(MIMEImage(Path("夕陽.jpg").read_bytes()))  # 郵件圖片內容
這張照片是在台南漁光島所拍下的美景

利用MIMEApplication這個方法,能包附非圖片的檔案。在Email中最常使用的PDF就可以利用這個方法進行傳送。

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

當然常見的word檔案也是可以進行傳送的,只需要設定好檔案名稱,其他程式碼內容都不需要修改。

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

為了示範各種格式檔案,這裡也將下一篇文章才會用到的「顧客訂單.csv」檔案,包進信件進行傳送了。

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

以上的動作都是在「寫信」,接下來要將寫好的信件,寄送到另一個自己的帳號進行測試(這個帳號就不需要開啟Google帳號安全性)。

這裡必須將程式碼49行的「寄件者信箱」,換成自己的寄件信箱,與程式碼16行的信箱相同。而密碼並不是登入該Gmail的密碼,是我們在第1–4步驟所取得的密碼。

with smtplib.SMTP(host="smtp.gmail.com", port="587") as smtp:  # 設定SMTP伺服器
    try:
        smtp.ehlo()  # 驗證SMTP伺服器
        smtp.starttls()  # 建立加密傳輸
        smtp.login("寄件者的信箱", "寄件者的寄件密碼")  # 登入寄件者gmail
        smtp.send_message(content)  # 寄送郵件
        print("成功傳送")
    except Exception as e:
        print("Error message: ", e)
請不要輸入作者的信箱及密碼,密碼也是假的

執行後在接收的信箱中,就會得到剛剛所寫的信了。到這裡若您對程式碼還是有些不了解,可以將程式碼與信件傳送的結果作對比,也可以了解那些程式碼控制信件的那些區域。

到Email檢查是否有收到信

2–2. 文字樣式客製化:

完整程式碼畫面

在程式碼的13、14、30行,也都需要如上方修改成自己的信箱與密碼,因此這裡不再重複。客製化的文字主要都在MIMEText這個方法內,而裡面的內容則是用HTML(網頁)的程式碼進行編寫。

content.attach(
                MIMEText("""
                        親愛的 <u>Ivan</u>您好:<br><br>
                        您寫這篇文章真是辛苦了,<b>不如您自己追蹤自己吧!</b> <br>
                        趕快手刀點擊<a href="https://medium.com/@ivanyang0606">Ivan的Medium文章</a>。
                        """
                        , "html"))  #郵件內容

每個標籤都有他的開始與結束,可以發現標籤的結束,都會有一個「/」來做為結尾,中間包附您想要呈現的文字。

HTML標籤是意圖

HTML的標籤其實有非常多種類,這裡列出比較常用的幾種供您作參考,這些標籤也在範例中都有實作。

一般常見的HTML標籤

可以看到呈現的結果,我們的期待,甚至超連結(<a>標籤)的按鈕進行點選,一樣可以連結到作者的文章部落格喔!

自動寄信可交付成果

如何每封信件進行客製化呢?

在下一篇文章「Python實現Gmail客製化信件大量發送 — 【案例實戰篇】」中,我們將以實戰的方式,將本篇文章所學的技能,成功應用到Email廣宣上,從此行銷人員只需要一鍵即可完成往日兩三個小時的工作了。

下載完整程式碼-請點我


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

📌Python基礎課程

📌Line Bot 聊天機器人

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

📌Telegram Bot 聊天機器人

📌實用工具

▶ 點此:https://marketingliveincode.com/

查看更多Python工具技巧、商業分析、教學影片

滿意我們餐點嗎?給點 Claps 吧👏👏

1. 我學習到了新的概念與工具 1–10+

2. 我理解了這篇內容所講述的工具與技巧 20–30+

3. 我可以將這篇的內容運用到學習和工作上20–30+

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容