Trong bài học này, bạn sẽ học cách để… Python gửi email thay bạn. Không cần mở Gmail, không cần copy dán – chỉ cần bấm chạy là thư tự bay đi.
Khi bạn muốn “thư từ” được tự động hóa
Bạn có từng:
- Gửi báo cáo mỗi ngày cho sếp?
- Muốn chương trình cảnh báo khi có lỗi xảy ra?
- Muốn tự động gửi thư cảm ơn sau khi khách hàng đăng ký?
Tất cả những điều đó – bạn hoàn toàn có thể tự động hóa bằng Python. Dù là file đính kèm, nội dung HTML, tiêu đề tùy biến, Python lo được hết.
Mục tiêu bài học
- Gửi email từ Gmail bằng thư viện
smtplib
- Tạo nội dung email bằng
email.message
- Tùy chỉnh tiêu đề, người nhận, nội dung
- Gửi file đính kèm
- Ứng dụng vào gửi báo cáo, thông báo, cảnh báo
1. Bật quyền gửi từ Gmail
Gmail mặc định chặn ứng dụng kém an toàn, nên bạn cần:
- Truy cập: myaccount.google.com/apppasswords
- Tạo mật khẩu ứng dụng (App Password)
- Dùng mật khẩu đó thay cho mật khẩu Gmail trong code
Bạn cần bật xác minh 2 bước để tạo được App Password
2. Gửi email đơn giản
import smtplib
from email.message import EmailMessage
email = EmailMessage()
email["From"] = "ban@gmail.com"
email["To"] = "nguoinhan@gmail.com"
email["Subject"] = "Thử gửi email từ Python"
email.set_content("Xin chào! Đây là email gửi tự động từ Python.")
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
smtp.login("ban@gmail.com", "MẬT_KHẨU_ỨNG_DỤNG")
smtp.send_message(email)
print("✅ Đã gửi email thành công.")
3. Gửi nội dung HTML
email.set_content("Trình duyệt không hỗ trợ HTML", subtype="plain")
email.add_alternative("""
<html>
<body>
<h2 style="color:blue;">Chào bạn!</h2>
<p>Đây là email có <b>HTML</b> từ Python.</p>
</body>
</html>
""", subtype="html")
4. Gửi kèm file đính kèm
with open("baocao.pdf", "rb") as f:
file_data = f.read()
file_name = f.name
email.add_attachment(file_data, maintype="application", subtype="octet-stream", filename=file_name)
5. Gửi cho nhiều người
email["To"] = ", ".join(["a@gmail.com", "b@yahoo.com", "c@outlook.com"])
6. Ứng dụng thực tế
- Gửi báo cáo Excel mỗi ngày (sau bài vẽ biểu đồ)
- Gửi thông báo kết quả thi cho học sinh
- Gửi cảnh báo khi website bị lỗi hoặc đơn hàng mới phát sinh
- Gửi mail marketing cơ bản đến danh sách từ Excel
7. Bài tập luyện tập
Bài 1: Tạo chương trình hỏi người dùng email → gửi thư cảm ơn tự động
Bài 2: Gửi email đính kèm file report.xlsx
(từ bài pandas)
Bài 3: Tạo hệ thống cảnh báo: nếu file log.txt
có từ “ERROR” → gửi email cho bạn ngay
Bạn đã học được
- Gửi email bằng Python cực dễ với
smtplib
+email.message
- Tạo nội dung phong phú: text, HTML, đính kèm
- Tự động hóa hoàn toàn việc báo cáo, thông báo
- Nền tảng để xây hệ thống: “Python biết báo cáo – biết trò chuyện – biết cảnh báo”
Bài tiếp theo:
👉 Bài 33: Tự động hóa công việc – Dùng Python làm trợ lý cá nhân: mở file, đổi tên, gửi báo cáo, lọc dữ liệu!
Bạn đã thấy Python “hữu dụng như nhân viên văn phòng rồi chứ?” 😄
Thảo luận