成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Mailmerge發送定制郵件

系統
Mailmerge 是一個可以定制群發郵件的命令行程序,它可以處理簡單和復雜的郵件。

[[335175]]

Mailmerge 是一個可以定制群發郵件的命令行程序,它可以處理簡單和復雜的郵件。

電子郵件還是生活的一部分,盡管有種種不足,它仍然是大多數人發送信息的最佳方式,尤其是在按隊列將郵件發送給收件人的自動化方式中。

作為 Fedora 社區行動和影響協調員,我的工作之一就是給人們發送資助旅行相關的好消息,我經常通過電子郵件做這些事。這里,我將給你展示如何使用 Mailmerge 向一群人發送定制郵件的,Mailmerge 是一個可以處理簡單和復雜的郵件的命令行程序。

安裝 Mailmerge

在 Fedora 中,Mailmerge 已經打包可用,你可以通過在命令行中運行 sudo dnf install python3-mailmerge 來安裝它。你還可以使用 pip 命令從 PyPi 中安裝,具體可以參閱該項目的 README

配置 Mailmerge

三個配置文件控制著 Mailmerge 的工作模式。運行 mailmerge --sample,將生成配置文件模板。這些文件包括:

  • mailmerge_server.conf: 這里保存著 SMTP 服務端郵件發送相關詳細配置,但你的密碼  在這里保存。
  • mailmerge_database.csv: 這里保存每封郵件的定制數據,包括收件人的電子郵件地址。
  • mailmerge_template.txt: 這里保存電子郵件的文本,文本中包含占位符,這些占位符會使用 mailmerge_database.csv 中的數據替換。

Server.conf

配置模板文件 mailmerge_server.conf 包含幾個大家應該很熟悉的例子。如果你曾經往手機上添加過電子郵件或者設置過桌面電子郵件客戶端,那你就應該看到過這些數據。需要提醒的是要記得把你的用戶名更新到這個文件中,尤其是在你使用模板所提供的配置時。

Database.csv

mailmerge_database.csv 這個配置文件稍微有點復雜。最起碼要將郵件接收者的電子郵件地址保存在這里,其它在電子郵件中任何需要替換的定制信息也要保存在這里。推薦在創建本文件的占位符列表時,同步編輯 mailmerge_template.txt 文件。我發現一個有效的做法是,使用電子表格軟件錄入這些數據,完成后導出為 CSV 文件。使用下面的示例文件:

  1. email,name,number
  2. myself@mydomain.com,"Myself",17
  3. bob@bobdomain.com,"Bob",42

可以你向這兩個人發送電子郵件,使用他們的名字并告訴他們一個數字。這個示例文件雖然不是特別有趣,但應用了一個重要的原則,那就是:始終讓自己處于郵件接收列表的首位。這樣你可以在向列表全員發送郵件之前,先給自己發送一個測試郵件,以驗證郵件的效果是否如你預期。

任何包含半角逗號的值,都 必須 以半角雙引號(")封閉。如果恰好在半角雙引號封閉的區域需要有一個半角雙引號,那就在同一行中連續使用兩個半角雙引號。引號的規則比較有趣,去 Python 3 中關于 CSV 的內容中 一探究竟吧。

Template.txt

我的工作之一,就是為我們 Fedora 貢獻者會議 Flock 發送與旅行基金有關的信息。通過簡單的郵件告訴有關的人,他被選中為旅行基金支持的幸運者,以及相應基金支持的詳細信息。與接收者相關的具體信息之一就是我們可以為他的旅行提供多少資助。下面是一份我的節略后的模板文件(為了簡潔,已經移除大量的文本):

  1. $ cat mailmerge_template.txt
  2. TO: {{Email}}
  3. SUBJECT: Flock 2019 Funding Offer
  4. FROM: Brian Exelbierd <bexelbie@redhat.com>
  5.  
  6.  
  7. Hi {{Name}},
  8.  
  9.  
  10. I am writing you on behalf of the Flock funding committee. You requested funding for your attendance at Flock. After careful consideration we are able to offer you the following funding:
  11.  
  12.  
  13. Travel Budget: {{Travel_Budget}}
  14.  
  15.  
  16. <<snip>>

模板的起頭定義了郵件的接收者、發送者和主題。在空行之后,是郵件的內容。該郵件需要從 database.csv 文件中獲取接收者的 Email 、Name 和 Travel_Budget 。注意,上述這些占位符是由雙大括弧( {{}} )封閉的。相應的 mailmerge_database.csv 如下:

  1. $ cat mailmerge_database.csv
  2. Name,Email,Travel_Budget
  3. Brian,bexelbie@redhat.com,1000
  4. PersonA,persona@fedoraproject.org,1500
  5. PèrsonB,personb@fedoraproject.org,500

注意,我把自己的信息放在了首條,這是為了測試方便。除了我,還有另外兩個人的信息在文檔中。列表中的第二個人 PèrsonB,他的名字中有一個包含變音符號的字母,Mailmerge 會對這類字母自動編碼。

以上包含了模板的全部知識點:寫上你自己的電子郵件信息,并編寫好以雙大括弧封閉的占位符。接下來創建用來提供前述占位符具體值的數據文件。現在測試一下電子郵件的效果。

測試并發送簡單郵件

試運行

測試從郵件的試運行開始,試運行就是講郵件內容顯示出來,所有的占位符都會被具體值取代。默認情況下,如果你運行不帶參數的命令 mailmerge,它將對收件列表中的第一個人進行試運行:

  1. $ mailmerge
  2. >>> encoding ascii
  3. >>> message 0
  4. TO: bexelbie@redhat.com
  5. SUBJECT: Flock 2019 Funding Offer
  6. FROM: Brian Exelbierd <bexelbie@redhat.com>
  7. MIME-Version: 1.0
  8. Content-Type: text/plain; charset="us-ascii"
  9. Content-Transfer-Encoding: 7bit
  10. Date: Sat, 20 Jul 2019 18:17:15 -0000
  11.  
  12.  
  13. Hi Brian,
  14.  
  15.  
  16. I am writing you on behalf of the Flock funding committee. You requested funding for your attendance at Flock. After careful consideration we are able to offer you the following funding:
  17.  
  18.  
  19. Travel Budget: 1000
  20.  
  21.  
  22. <<snip>>
  23.  
  24.  
  25. >>> sent message 0 DRY RUN
  26. >>> No attachments were sent with the emails.
  27. >>> Limit was 1 messages. To remove the limit, use the --no-limit option.
  28. >>> This was a dry run. To send messages, use the --no-dry-run option.

從試運行生成的郵件中(列表中的 message 0 ,和計算機中很多計數場景一樣,計數從 0 開始),可以看到我的名字及旅行預算是正確的。如果你想檢視所有的郵件,運行 mailmerge --no-limit,告訴 Mailmerge 不要僅僅處理第一個收件人的信息。下面是第三個收件人郵件的試運行結果,用來測試特殊字符的編碼:

  1. >>> message 2
  2. TO: personb@fedoraproject.org
  3. SUBJECT: Flock 2019 Funding Offer
  4. FROM: Brian Exelbierd <bexelbie@redhat.com>
  5. MIME-Version: 1.0
  6. Content-Type: text/plain; charset="iso-8859-1"
  7. Content-Transfer-Encoding: quoted-printable
  8. Date: Sat, 20 Jul 2019 18:22:48 -0000
  9.  
  10.  
  11. Hi P=E8rsonB,

沒有問題,P=E8rsonB 是 PèrsonB 的編碼形式。

發送測試信息

現在,運行 mailmerge --no-dry-run,Mailmerge 將向收件人列表中的第一個人發送電子郵件:

  1. $ mailmerge --no-dry-run
  2. >>> encoding ascii
  3. >>> message 0
  4. TO: bexelbie@redhat.com
  5. SUBJECT: Flock 2019 Funding Offer
  6. FROM: Brian Exelbierd <bexelbie@redhat.com>
  7. MIME-Version: 1.0
  8. Content-Type: text/plain; charset="us-ascii"
  9. Content-Transfer-Encoding: 7bit
  10. Date: Sat, 20 Jul 2019 18:25:45 -0000
  11.  
  12.  
  13. Hi Brian,
  14.  
  15.  
  16. I am writing you on behalf of the Flock funding committee. You requested funding for your attendance at Flock. After careful consideration we are able to offer you the following funding:
  17.  
  18.  
  19. Travel Budget: 1000
  20.  
  21.  
  22. <<snip>>
  23.  
  24.  
  25. >>> Read SMTP server configuration from mailmerge_server.conf
  26. >>> host = smtp.gmail.com
  27. >>> port = 587
  28. >>> username = bexelbie@redhat.com
  29. >>> security = STARTTLS
  30. >>> password for bexelbie@redhat.com on smtp.gmail.com:
  31. >>> sent message 0
  32. >>> No attachments were sent with the emails.
  33. >>> Limit was 1 messages. To remove the limit, use the --no-limit option.

在倒數第 4 行,它將要求你輸入你的密碼。如果你使用的是雙因素認證或者域控制登錄,那就需要創建應用密碼來繞過這些控制。如果你使用的是 Gmail 或者類似的系統,可以直接在界面上完成密碼驗證。如果不行的話,聯系你的郵件系統管理員。上述這些操作不會影響郵件系統的安全性,但是仍然有必要采用復雜的安全性好的密碼。

我在我的郵件收件箱中,看到了這封格式美觀的測試郵件。如果測試郵件看起來沒有問題,那就可以運行 mailmerge --no-dry-run --no-limit 發送所有的郵件了。

發送復雜郵件

只有充分了解了 Jinja2 模板 ,你才可能充分領略 Mailmerge 真正的威力。在郵件模板中使用條件語句及附帶附件,是很有用的。下面就是一個復雜郵件的模板及對應的數據文件:

  1. $ cat mailmerge_template.txt
  2. TO: {{Email}}
  3. SUBJECT: Flock 2019 Funding Offer
  4. FROM: Brian Exelbierd <bexelbie@redhat.com>
  5. ATTACHMENT: attachments/{{File}}
  6.  
  7.  
  8. Hi {{Name}},
  9.  
  10.  
  11. I am writing you on behalf of the Flock funding committee. You requested funding for your attendance at Flock. After careful consideration we are able to offer you the following funding:
  12.  
  13.  
  14. Travel Budget: {{Travel_Budget}}
  15. {% if Hotel == "Yes" -%}
  16. Lodging: Lodging in the hotel Wednesday-Sunday (4 nights)
  17. {%- endif %}
  18.  
  19.  
  20. <<snip>>
  21.  
  22.  
  23. $ cat mailmerge_database.csv
  24. Name,Email,Travel_Budget,Hotel,File
  25. Brian,bexelbie@redhat.com,1000,Yes,visa_bex.pdf
  26. PersonA,persona@fedoraproject.org,1500,No,visa_person_a.pdf
  27. PèrsonB,personb@fedoraproject.org,500,Yes,visa_person_b.pdf

在這個郵件中有兩項新內容。首先是附件,我需要向參加國際旅行的人發送簽證邀請信,幫助他們來 Flock,文件頭的 ATTACHMENT 部分說明了要包含什么文件;為了保持我的文檔目錄清晰,我將所有需要作為附件的文檔保存于附件子目錄下。其次是包含了關于賓館的條件信息,因為有些人的旅行資金包含了住宿費用,我需要對涉及住宿的人員訴及相關信息,而這是通過 if 判斷實現的:

  1. {% if Hotel == "Yes" -%}
  2. Lodging: Lodging in the hotel Wednesday-Sunday (4 nights)
  3. {%- endif %}

這和大多數編程語言中的 if 判斷是一樣的。Jinja2 實力非凡,可以實現多級判斷。通過包含數據元素控制郵件內容,能大大簡化相關的日常工作。空格的正確使用對郵件的易讀性很重要。if 和 endif 語句中的短線( - )是 Jinja2 控制 空白字符 的一部分。這里面選項很多,所以還是要通過試驗找到最適合自己的方式。

在上面的例子中,我在數據文件擴充了 Hotel 和 File 兩個字段,這些字段的值控制著賓館信息和附件文件名。另外,在上例中,我和 PèrsonB 有住宿資助,但 PersonA 沒有。

對于簡單郵件和復雜郵件而言,試運行及正式發送郵件的操作都是相同的。快去試試吧!

你還可以嘗試在郵件頭中使用條件判斷( if … endif ),比如你可以使發送給在數據庫中的某人的郵件包含附件,或者改變對部分人改變發送人的信息。

Mailmerge 的優點

Mailmerge 是用來批量發送定制郵件的簡潔而高效的工具。每個人只接受到他需要的信息,其它額外的操作和細節都是透明的。

我還發現,即使是在發送簡單的集團郵件時,相對于使用 CC 或者 BCC 向一組受眾發送一封郵件,采用 Mailmerge 也是非常高效的。很多人使用了郵件過濾,那些不是直接發給他們的郵件,他們一律不會立刻處理。使用 Mailmerge 保證了每名接收者收到的就是自己的郵件。所有的信息會對接收者進行正確過濾,再也不會有人無意間回復到整個郵件組。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2023-12-06 11:10:08

2020-02-20 14:40:53

Vim郵件開源

2009-08-04 09:39:11

2017-04-26 09:00:23

Python發送郵件腳本

2011-08-22 15:50:05

Linuxmailsendmail

2021-02-18 07:20:51

Nodejs前端開發

2022-01-28 15:04:57

Python日志郵件

2022-09-02 15:08:02

Python郵件發送

2020-02-26 13:47:57

Emacs電子郵件開源

2021-07-30 16:34:31

前端Nodejs開發

2009-02-05 14:02:46

SmtpMail發送郵件ASP.NET

2017-03-02 09:05:56

CentOS 7Sendmail郵件

2009-12-14 17:23:31

2023-12-31 16:29:31

GoGoroutinesChannels

2021-06-11 06:54:34

程序郵件Django

2009-12-02 16:38:26

PHP發送郵件函數

2011-08-02 11:30:41

iOS開發 郵件發送

2020-07-14 09:58:01

Python開發工具

2011-01-19 14:32:17

Thunderbird設置

2024-09-05 08:58:37

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 瑞克和莫蒂第五季在线观看 | 成人性视频免费网站 | 日本精品视频一区二区三区四区 | 国产农村妇女毛片精品久久麻豆 | 大伊人久久 | 91麻豆精品国产91久久久更新资源速度超快 | 亚州av| 精品视频一区二区 | 成人欧美一区二区三区黑人孕妇 | 九九热国产精品视频 | 日韩成人| 欧美精品一区三区 | 日本久久久久久久久 | 视频一区在线观看 | 亚洲 欧美 另类 日韩 | 在线三级电影 | 亚洲一区视频在线 | 欧美专区在线 | 久草福利| 亚洲国产精品久久久久婷婷老年 | 亚洲天堂av网 | 亚洲一区国产精品 | 911网站大全在线观看 | 精品国产一区二区三区免费 | 欧美精品在线一区 | 97精品国产97久久久久久免费 | 亚洲欧美综合 | 中文字幕亚洲免费 | 久久久精品综合 | 国产欧美一区二区三区在线看 | 欧美日韩成人一区二区 | 精品欧美一区免费观看α√ | 欧美日韩电影一区 | 美女三区| 精品动漫一区 | 亚洲av毛片成人精品 | 亚洲精彩免费视频 | 一级一级一级毛片 | 91精品国产高清一区二区三区 | 国产传媒毛片精品视频第一次 | 天天操精品视频 |