Bài 32: Gửi email tự động bằng Python

yanyan

By yanyan

Đăng ngày Tháng 7 24, 2025

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:

  1. Truy cập: myaccount.google.com/apppasswords
  2. Tạo mật khẩu ứng dụng (App Password)
  3. 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

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

[global_subscribe_form]

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.