[Python cơ bản thường dùng trong công việc] Phần 14 : Gửi email với SMTP
SMTP là giao thức gởi mail thông dụng hiện nay. Python hỗ trợ mặc định thư viện smtplib
dùng để kết nối đến một SMTP Server và gởi email. Tuy nhiên, việc sử dụng thư viện này sẽ gây khó khăn cho việc định dạng và sử dụng nên chúng ta sẽ sử dụng thư viện sender
, là một thư viện giúp định dạng và gởi email đơn giản hơn.
14.1. Cài đặt sender
Cài đặt từ pip
như sau:
$ sudo pip install sender
14.2. Gởi email đơn giản
Để gởi 1 email với sender
, bạn cần có tài khoản và một số thông tin của SMTP Server trước khi gởi. Ví dụ đoạn code để gởi 1 email từ SMTP Server của Amazon.
from sender import Mail, Message mail = Mail( "smtp.gmail.com", port = 465, username = "[email protected]", password = "yourpassword", use_tls = False, use_ssl = True, debug_level = False ) msg = Message("msg subject") msg.fromaddr = ("Vo Duy Tuan", "[email protected]") msg.to = "[email protected]" msg.body = "this is a msg plain text body" msg.html = "<b>this is a msg text body</b>" msg.reply_to = "[email protected]" msg.charset = "utf-8" msg.extra_headers = {} msg.mail_options = [] msg.rcpt_options = [] # Send message mail.send(msg)
14.3. Gởi email có đính kèm file
Bạn cần sử dụng thêm class Attachment để tạo attachment.
from sender import Mail, Message, Attachment mail = Main(...) msg = Message(..) ... # Open attached file and create Attachment object with open("photo01.jpg") as f: file01 = Attachment("photo01.jpg", "image/jpeg", f.read()) msg.attach(file01) # Send message mail.send(msg)
14.4. Tìm hiểu thêm
Bạn có thể tìm hiểu thêm về thư viện sender tại website chính thức tại địa chỉ http://sender.readthedocs.org/
- V Vì sao lập trình viên BE cần phải biết Figma?
- N Nên học Front-end hay Back-end trước?
- H Học back end cần học những gì? Lộ trình cho người mới bắt đầu
- T Tầm quan trọng của Loose Coupling trong hệ thống Backend
- L Lập trình Web nên học ngôn ngữ nào là phù hợp?
- N Nên học Front-end hay Back-end? Sự khác biệt là gì?
- P Phân biệt Front End và Back End, điểm khác nhau là gì?
- T Top 7 câu hỏi phỏng vấn Backend Developer
- L Lộ trình học MySQL từ A đến Z
- Q Quản lý realm database theo hướng micro-service trong iOS