Tự động hóa email và thông báo bằng Python với sự trợ giúp của AI

Thứ ba - 09/06/2026 22:20

Ôn tập: Trong bài học trước, bạn đã tích hợp với API REST — lấy dữ liệu, xử lý phân trang và xây dựng các pipeline dữ liệu. Bây giờ, hãy thêm lớp giao tiếp: Gửi email và thông báo từ các script tự động hóa của bạn.

Email và thông báo biến các script tự động hóa của bạn từ những công cụ bạn chạy thủ công thành các hệ thống truyền đạt kết quả, gửi cảnh báo và cung cấp báo cáo theo lịch trình.

Gửi email bằng Python

Thư viện smtplib của Python xử lý SMTP (gửi email). Đối với các tài khoản hiện đại, bạn thường cần mật khẩu dành riêng cho ứng dụng (không phải mật khẩu thông thường của bạn).

Thiết lập mật khẩu ứng dụng Gmail:

  1. Bật xác thực hai yếu tố trên tài khoản Google của bạn.

  2. Truy cập tài khoản Google → Security → App passwords.

  3. Tạo mật khẩu cho "Mail" trong mục "Other".

  4. Lưu mật khẩu này vào file .env của bạn.

Script 1: Gửi email cơ bản

Prompt AI:

 
Viết một script Python gửi email bằng smtplib: (1) Đọc thông tin đăng nhập SMTP từ các biến môi trường (SMTP_SERVER, SMTP_PORT, EMAIL_USER, EMAIL_PASSWORD), (2) Hỗ trợ cả nội dung plain text và HTML, (3) Hỗ trợ file đính kèm (CSV, Excel, PDF), (4) Chấp nhận người nhận, chủ đề và nội dung làm tham số hàm, (5) Bao gồm xử lý lỗi thích hợp cho các lỗi kết nối, lỗi xác thực và lỗi gửi. Tạo một hàm send_email() có thể tái sử dụng mà tôi có thể nhập từ các script khác.

Mẫu gửi email cốt lõi:

📍 Nơi dán: Mở ChatGPT (chat.openai.com), Claude (claude.ai) hoặc Gemini (gemini.google.com) và bắt đầu một cuộc trò chuyện mới.

📋 Cách sao chép prompt này: Nhấp vào bất kỳ đâu bên trong khối màu xám, nhấn Cmd+A rồi Cmd+C (Mac) hoặc Ctrl+A rồi Ctrl+C (Windows). Hoặc sử dụng biểu tượng sao chép xuất hiện.

 
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 1. Create message
msg = MIMEMultipart("alternative")
msg["Subject"] = "Daily Report"
msg["From"] = sender
msg["To"] = ", ".join(recipients)

# 2. Attach both plain text and HTML
msg.attach(MIMEText(plain_text, "plain"))
msg.attach(MIMEText(html_content, "html"))

# 3. Send
with smtplib.SMTP(smtp_server, port) as server:
    server.starttls()
    server.login(username, password)
    server.send_message(msg)

✏️ ​​Cách điền thông tin chi tiết của bạn: Thay thế mỗi [] và trình giữ chỗ trong ngoặc bằng thông tin cụ thể từ tình huống thực tế của bạn. Thông tin đầu vào mơ hồ sẽ tạo ra kết quả mơ hồ — hãy cụ thể hơn.

👀 Những gì bạn sẽ thấy: Trong vòng vài giây, AI sẽ trả về một phản hồi có cấu trúc dựa vào prompt ở trên. Hãy đọc kỹ và coi đó là bản nháp, không phải câu trả lời cuối cùng.

📌 Nên làm gì với kết quả: Lưu phản hồi vào file Notes. Chọn gợi ý có hiệu quả cao nhất và thực hiện nó trong tuần này — đừng cố gắng làm tất cả cùng một lúc.

⚠️ Nếu kết quả không ổn: Nếu các gợi ý có vẻ chung chung, hãy dán nội dung sau: "Hãy cụ thể hơn với ngữ cảnh thực tế của tôi. Bỏ qua những lời khuyên chung chung." Nếu nó bỏ qua các chi tiết quan trọng bạn đã cung cấp, hãy hỏi: "Bạn đã bỏ sót [X] trong ngữ cảnh của tôi — hãy thực hiện lại với điều đó làm ràng buộc chính."

Script 2: Email báo cáo HTML

Prompt AI:

 
Viết một hàm Python tạo báo cáo email HTML từ một DataFrame của pandas: (1) Chuyển đổi DataFrame thành bảng HTML với CSS nội tuyến: màu hàng xen kẽ, tiêu đề in đậm, số căn phải, (2) Thêm phần tóm tắt phía trên bảng: tổng số hàng, các chỉ số chính (tổng, trung bình của các cột số), (3) Bao gồm ngày báo cáo và tiêu đề ngắn gọn, (4) Cung cấp một phiên bản plain text định dạng cùng dữ liệu dưới dạng bảng văn bản căn chỉnh, (5) Đính kèm dữ liệu thô dưới dạng file CSV. Tôi muốn gọi hàm này từ các script xử lý dữ liệu của mình để tự động gửi kết quả qua email.

Script 3: Cảnh báo có điều kiện

Prompt AI:

 
Viết một hệ thống cảnh báo bằng Python để giám sát các điều kiện và gửi thông báo: (1) Chấp nhận danh sách các điều kiện cần kiểm tra (ví dụ: "giá dưới 50 USD", "hết hàng", "thời gian phản hồi API > 5 giây"), (2) Đối với mỗi điều kiện được kích hoạt, gửi một email cảnh báo kèm theo chi tiết, (3) Giới hạn cảnh báo: tối đa 1 cảnh báo cho mỗi điều kiện mỗi giờ (theo dõi trong file JSON cục bộ), (4) Giới hạn toàn cầu: tối đa 10 cảnh báo mỗi giờ, (5) Ghi nhật ký tất cả các cảnh báo (đã gửi và bị chặn) vào file CSV, (6) Hỗ trợ các mức độ khẩn cấp: "thông tin" (chỉ email), "cảnh báo" (email + console), "nghiêm trọng" (email + console + lặp lại sau 15 phút). Trả về bản tóm tắt các cảnh báo đã gửi và bị chặn.

Các kênh thông báo thay thế

Email không phải là lựa chọn duy nhất. Nhiều script tự động hóa được hưởng lợi từ tin nhắn tức thời:

KênhThư việnTốt nhất cho

Slack

slack_sdk

Thông báo nhóm, cảnh báo kênh

Discord

discord-webhook

Thông báo cá nhân, bot cộng đồng

Telegram

python-telegram-bot

Thông báo cá nhân thân thiện với thiết bị di động

Desktop

plyer

Thông báo pop-up cục bộ

Prompt AI cho thông báo Slack:

 
Viết một hàm Python gửi thông báo đến kênh Slack bằng URL webhook: (1) Chấp nhận văn bản tin nhắn, tiêu đề tùy chọn và mức độ khẩn cấp (thông tin/cảnh báo/nghiêm trọng), (2) Định dạng bằng Slack Block Kit để định dạng phong phú, (3) Bao gồm mã màu: xanh lá cây cho thông tin, vàng cho cảnh báo, đỏ cho nghiêm trọng, (4) Đọc URL webhook từ các biến môi trường.

Những thực tiễn tốt nhất về thông báo

Thực tiễnLý doTriển khai

Cảnh báo kiểm soát

Ngăn chặn các cơn bão cảnh báoThời gian hồi chiêu cho mỗi trạng thái + giới hạn toàn hệ thống

Bao gồm ngữ cảnh

Người nhận cần thông tin có thể sử dụng đượcNguyên nhân gây ra sự kiện, giá trị hiện tại, ngưỡng, liên kết đến thông tin chi tiết

Plain text dự phòng

Không phải tất cả các trình duyệt đều hiển thị HTMLMIME đa phần với cả hai định dạng

Tự mình thử nghiệm trước

Hãy phát hiện và khắc phục các lỗi định dạng trước khi nhóm của bạn nhìn thấy chúngGửi email đến địa chỉ của chính bạn trước khi thêm người nhận

Cơ chế hủy đăng ký

Người nhận được tôn trọngFile cấu hình cho tùy chọn thông báo

Kiểm tra nhanh: Script của bạn gửi email hàng ngày lúc 8 giờ sáng. Bạn muốn bỏ qua cuối tuần. Logic này nên được đặt ở đâu — trong script email hay trong bộ lập lịch?

Câu trả lời: Trong bộ lập lịch, không phải trong script email. Nhiệm vụ của script email là soạn thảo và gửi email khi được gọi. Nhiệm vụ của bộ lập lịch là quyết định khi nào gọi script email. Việc tách biệt các vấn đề này có nghĩa là bạn có thể sử dụng lại script email cho các lịch trình khác — chẳng hạn như tóm tắt hàng tuần vào thứ Sáu hoặc cảnh báo đột xuất bất cứ lúc nào. Prompt AI: “Thêm cấu hình lịch trình vào tự động hóa của tôi: chạy hàng ngày lúc 8 giờ sáng chỉ vào các ngày trong tuần, với một lịch trình riêng cho tóm tắt hàng tuần vào thứ Sáu lúc 5 giờ chiều.”

Những điểm chính cần ghi nhớ

  • Không bao giờ hardcode thông tin đăng nhập email — hãy sử dụng biến môi trường hoặc mật khẩu dành riêng cho ứng dụng có thể bị thu hồi độc lập; Các dịch vụ email giao dịch (SendGrid, Mailgun) với API key chỉ gửi thậm chí còn an toàn hơn SMTP với mật khẩu email cá nhân của bạn.

  • Xây dựng cơ chế điều tiết cảnh báo ngay từ đầu: thời gian chờ cho mỗi điều kiện, giới hạn cảnh báo toàn cầu và loại bỏ trùng lặp giúp ngăn chặn một lỗi làm ngập hộp thư đến của bạn với hàng trăm thông báo — điều này bảo vệ bạn khỏi các lỗi mà bạn chưa viết.

  • Email HTML với các bảng CSS nội tuyến đơn giản giúp báo cáo tự động có thể đọc ngay lập tức mà không cần mở file đính kèm — luôn bao gồm một bản sao lưu plain text vì một số trình duyệt email sẽ loại bỏ HTML.

Nguồn tin: Quantrimang.com

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

THỐNG KÊ TRUY CẬP
  • Đang truy cập86
  • Máy chủ tìm kiếm29
  • Khách viếng thăm57
  • Hôm nay12,913
  • Tháng hiện tại147,361
  • Tổng lượt truy cập16,122,832
QUẢNG CÁO
Phan Thanh Phú
Quảng cáo 2
Liên kết site
Đăng nhập Thành viên
Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Thăm dò ý kiến

Bạn thấy Website cần cải tiến những gì?

Lịch Âm dương
Máy tính
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây