Dự án: gửi thành viên emails nhắc đến hạn sử dụng Python (tiếp tục)
Bước 3: Gửi email nhắc tùy chỉnh
Một khi bạn đã có một danh sách các thành viên chưa trả tiền, nó là lúc gửi họ các email nhắc. Thêm code sau vào
chương trình của bạn, ngoại trừ với địa chỉ email thực của bạn và thông tin nhà cung cấp:
#! python3
# sendDuesReminders.py – Sends emails based on payment status in spreadsheet.
–snip–
# Log in to email account.
smtpObj = smtplib.SMTP(‘smtp.example.com’, 587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(‘my_email_address@example.com’, sys.argv[1])
Tạo một SMTP object bằng cách gọi smtplib.SMTP() và truyền nó tên miền và cổng cho nhà cung cấp của bạn. Gọi
ehlo() và starttls(), và sau đó gọi login() và truyền nó địa chỉ email của bạn và ys.argv[1], cái sẽ lưu giữ
password string của bạn. Bạn sẽ nhập password như một đối số command line mỗi lần bạn chạy chương trình, để
tránh lưu password của bạn trong mã nguồn.
Một khi chương trình của bạn đã log vào tài khoản email của bạn, bạn nên đi qua unpaidMembers dictionary và
gửi một email cá nhân hóa tới mỗi địa chỉ email thành viên. Thêm cái sau vào sendDuesReminders.py:
Code này lặp qua các tên và emails trong unpaidMembers. Cho mỗi thành viên bạn chưa trả, chúng ta tùy chỉnh một
thông điệp với latest month và member s name, và lưu thông điệp trong body (1). Chúng ta in ra đầu ra nói rằng
chúng ta đang gửi một email tới địa chỉ email thành viên này (2). Sau đó chúng ta gọi sendmail(), truyền nó
from address và thông điệp tùy chỉnh (3). Sau đó chúng ta lưu giá trị trả về trong sendmailStatus.
Nhớ rằng phương thức sendmail() sẽ trả về một giá trị dictionary không rỗng nếu SMTP server báo cáo một lỗi
gửi email cụ thể đó. Phần cuối của for loop (4) check xem liệu dictionary trả về là không rỗng và, nếu nó là,
in ra địa chỉ email người nhận và dictionary trả về.
Sau khi chương trình được thực hiện gửi tất cả các emails, phương thức quit() được gọi để ngắt kết nối từ SMTP
server.
Khi bạn chạy chương trình, đầu ra sẽ trông là thứ giống cái này:
Sending email to alice@example.com…
Sending email to bob@example.com…
Sending email to eve@example.com…
Các người nhận sẽ nhận một email về thanh toán bị lỡ của họ cái trông chính như một email bạn sẽ gửi thủ công.

