Giả sử bạn đang tổ chức một số sự kiện và bạn có một danh sách gửi thư gồm các địa chỉ email và những người bạn cần gửi thư để thông báo cho họ biết họ sẽ ở phòng nào. Bạn muốn gửi một email được cá nhân hóa cho từng người và bạn không muốn gõ từng cái một bằng tay. Python có thể tự động hóa việc này cho bạn. Tất cả những gì bạn cần là danh sách gửi thư ở định dạng có cấu trúc nào đó, sau đó bạn có thể duyệt qua từng dòng để tạo và gửi email
Chúng tôi sẽ sử dụng một bảng tổ chức để lưu trữ dữ liệu trong
First nameLast nameemail addressSố phòngJaneDoejane-doe@gmail. com1JohnDoejohn-doe@gmail. com2JimmyJohnjimmy-john@gmail. com3Chúng tôi chuyển bảng đó vào một khối nguồn chế độ tổ chức dưới dạng một biến được gọi là dữ liệu, đây sẽ là một danh sách các danh sách, một danh sách cho mỗi hàng của bảng. Ngoài ra, bạn có thể đọc những thứ này từ bảng tính excel, tệp csv hoặc một số loại cấu trúc dữ liệu python
Chúng tôi không thực sự gửi email trong ví dụ này. Để làm điều đó, bạn cần có quyền truy cập vào máy chủ thư, máy chủ này có thể nằm trên máy của chính bạn hoặc có thể là máy chủ chuyển tiếp mà bạn có quyền truy cập
Chúng tôi tạo một chuỗi là một mẫu với một số trường được thay thế, e. g. tên và số phòng trong trường hợp này. Sau đó, chúng tôi lặp qua từng hàng của bảng và định dạng mẫu với các giá trị đó, đồng thời tạo thông báo email cho người đó. Đầu tiên, chúng tôi in từng tin nhắn để kiểm tra xem chúng có đúng không
Ví dụ này sẽ hướng dẫn bạn các bước để tạo email mẫu, cơ sở dữ liệu và cấu hình máy chủ STMP. Sau đó sẽ hướng dẫn cách test trước khi gửi mail thật
Tạo email, cơ sở dữ liệu và cấu hình mẫu mẫu
$ mailmerge --sample Created sample template email "mailmerge_template.txt" Created sample database "mailmerge_database.csv" Created sample config file "mailmerge_server.conf" Edit these files, then run mailmerge again.
Chỉnh sửa cấu hình máy chủ SMTP $ sudo pip install mailmerge
4
Các giá trị mặc định được thiết lập cho GMail. Hãy chắc chắn để thay đổi tên người dùng của bạn. Nếu bạn sử dụng xác thực 2 yếu tố, trước tiên hãy tạo mật khẩu ứng dụng. Các ví dụ cấu hình khác có trong phần bình luận của
$ sudo pip install mailmerge4
tiền boa. SSH hoặc VPN vào mạng của bạn trước. Chạy mailmerge từ cùng một mạng với máy chủ SMTP có thể giúp bạn tránh các bộ lọc thư rác và điều tiết máy chủ. Mẹo này không áp dụng cho Gmail
[smtp_server]
host = smtp.gmail.com
port = 465
security = SSL/TLS
username = YOUR_USERNAME_HERE
Chỉnh sửa thông báo email mẫu $ sudo pip install mailmerge
6
Các trường
$ sudo pip install mailmerge7,
$ sudo pip install mailmerge8 và
$ sudo pip install mailmerge9 là bắt buộc. Phần còn lại là nội dung của thông điệp. Sử dụng
$ sudo dnf install python3-mailmerge0 để chỉ ra các tham số tùy chỉnh sẽ được đọc từ cơ sở dữ liệu. Ví dụ,
$ sudo dnf install python3-mailmerge1 sẽ được điền từ cột
$ sudo dnf install python3-mailmerge2 của
$ sudo dnf install python3-mailmerge3
TO: {{email}}
SUBJECT: Testing mailmerge
FROM: My Self
Hi, {{name}},
Your number is {{number}}.
Chỉnh sửa cơ sở dữ liệu $ sudo dnf install python3-mailmerge
3
Lưu ý rằng dòng đầu tiên là tiêu đề khớp với các tham số trong ví dụ mẫu, ví dụ:
$ sudo dnf install python3-mailmerge1
tiền boa. Thêm chính bạn làm người nhận đầu tiên. Điều này hữu ích cho việc thử nghiệm
email,name,number
myself@mydomain.com,"Myself",17
bob@bobdomain.com,"Bob",42
chạy khô
Đầu tiên, chạy khô một email [_______1_______1 mặc định]. Thao tác này sẽ điền vào các trường mẫu của email đầu tiên và in nó ra thiết bị đầu cuối
$ mailmerge >>> message 1 TO: myself@mydomain.com SUBJECT: Testing mailmerge FROM: My Self MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Date: Thu, 19 Dec 2019 19:49:11 -0000 Hi, Myself, Your number is 17. >>> sent message 1 >>> Limit was 1 message. To remove the limit, use the --no-limit option. >>> This was a dry run. To send messages, use the --no-dry-run option.
Nếu điều này có vẻ chính xác, hãy thử chạy khô lần thứ hai, lần này với tất cả người nhận sử dụng tùy chọn
$ sudo dnf install python3-mailmerge7
$ mailmerge --no-limit >>> message 1 TO: myself@mydomain.com SUBJECT: Testing mailmerge FROM: My Self MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Date: Thu, 19 Dec 2019 19:49:33 -0000 Hi, Myself, Your number is 17. >>> sent message 1 >>> message 2 TO: bob@bobdomain.com SUBJECT: Testing mailmerge FROM: My Self MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Date: Thu, 19 Dec 2019 19:49:33 -0000 Hi, Bob, Your number is 42. >>> sent message 2 >>> This was a dry run. To send messages, use the --no-dry-run option.
Gửi email đầu tiên
Chúng tôi đang hết sức cẩn thận trong ví dụ này để tránh gửi thư rác, vì vậy, tiếp theo, chúng tôi sẽ chỉ gửi một email thực [_______1_______1 mặc định]. Nhớ lại rằng bạn đã tự thêm mình làm người nhận email đầu tiên
$ pip install mailmerge0
Bạn có thể phải nhập mật khẩu email của mình khi được nhắc. [Nếu bạn sử dụng Gmail có xác thực 2 yếu tố, đừng quên sử dụng mật khẩu ứng dụng bạn đã tạo trong khi. ]
Bây giờ, hãy kiểm tra email của bạn và đảm bảo rằng thư đã được gửi đi. Nếu mọi thứ đều ổn, thì đã đến lúc gửi tất cả các tin nhắn
Gửi tất cả email
$ pip install mailmerge1
Ví dụ mẫu nâng cao
Ví dụ này sẽ gửi báo cáo tiến độ cho học sinh. Mẫu sử dụng nhiều tính năng nâng cao hơn của tài liệu công cụ mẫu jinja2 để tùy chỉnh thông báo cho học viên
Mẫu $ sudo pip install mailmerge
6
$ pip install mailmerge2
Cơ sở dữ liệu $ sudo dnf install python3-mailmerge
3
Một lần nữa, chúng tôi sẽ sử dụng phương pháp hay nhất để biến bạn thành người nhận đầu tiên, điều này rất hữu ích cho việc thử nghiệm
$ pip install mailmerge3
định dạng HTML
Mailmerge hỗ trợ định dạng HTML
chỉ HTML
Ví dụ này sẽ sử dụng HTML để định dạng email. Thêm
$ mailmerge --sample Created sample template email "mailmerge_template.txt" Created sample database "mailmerge_database.csv" Created sample config file "mailmerge_server.conf" Edit these files, then run mailmerge again.1 ngay dưới tiêu đề email, sau đó bắt đầu tin nhắn của bạn bằng
Mẫu $ sudo pip install mailmerge
6
$ pip install mailmerge4
HTML và văn bản thuần túy
Ví dụ này cho thấy cách cung cấp cả phiên bản HTML và văn bản thuần túy trong cùng một thông báo. Trình đọc thư của người dùng có thể chọn một trong hai
Mẫu $ sudo pip install mailmerge
6
$ pip install mailmerge5
định dạng đánh dấu
Mailmerge hỗ trợ định dạng Markdown bằng cách bao gồm tiêu đề tùy chỉnh tùy chỉnh
$ mailmerge --sample Created sample template email "mailmerge_template.txt" Created sample database "mailmerge_database.csv" Created sample config file "mailmerge_server.conf" Edit these files, then run mailmerge again.4 trong thư. Mailmerge sẽ hiển thị phần đánh dấu thành HTML, sau đó bao gồm cả phiên bản HTML và văn bản thuần túy trong một thư nhiều phần. Trình đọc thư của người nhận sau đó có thể chọn một trong hai định dạng
Mẫu $ sudo pip install mailmerge
6
$ pip install mailmerge6
tệp đính kèm
Ví dụ này cho thấy cách thêm tệp đính kèm với tiêu đề
$ mailmerge --sample Created sample template email "mailmerge_template.txt" Created sample database "mailmerge_database.csv" Created sample config file "mailmerge_server.conf" Edit these files, then run mailmerge again.6 đặc biệt
Mẫu $ sudo pip install mailmerge
6
$ pip install mailmerge7
Chạy khô để xác minh tệp đính kèm tồn tại. Nếu tên tệp đính kèm bao gồm một mẫu, bạn nên chạy khô với cờ
$ sudo dnf install python3-mailmerge7
$ pip install mailmerge8
Tệp đính kèm hình ảnh nội tuyến
Ví dụ này cho thấy cách thêm tệp đính kèm hình ảnh nội tuyến để hình ảnh được hiển thị trực tiếp trong nội dung email. Bạn phải thêm hình ảnh nội tuyến dưới dạng tệp đính kèm trước khi tham chiếu nó trong nội dung
Ví dụ HTML. Mẫu $ sudo pip install mailmerge
6
$ pip install mailmerge9
Ví dụ đánh dấu. Mẫu $ sudo pip install mailmerge
6
$ sudo pip install mailmerge0
Đóng góp
Đóng góp từ cộng đồng được hoan nghênh. Xem hướng dẫn đóng góp
Sự nhìn nhận
Mailmerge được viết bởi Andrew DeOrio awdeorio@umich. giáo dục, http. //andre deorio. com. Sesh Sadasivam [@seshrs] đã đóng góp nhiều tính năng và sửa lỗi