Chào các bác, dạo này em đang tập tành tự động hóa mấy vụ báo cáo lặt vặt trên diễn đàn mình. Thấy nhiều bài viết hay về Python với Excel, VBA với Outlook, hôm nay em mạo muội chia sẻ một chút kinh nghiệm cá nhân về việc tự động hóa gửi email báo cáo hàng loạt bằng Outlook kết hợp với Python.
Cái này rất hữu ích khi các bác cần gửi cùng một báo cáo (có thể là file Excel, PDF...) cho nhiều người nhận khác nhau, hoặc gửi theo lịch trình định kỳ. Thay vì ngồi copy-paste từng cái email thì giờ đây chỉ cần chạy một script Python là xong.
Về cơ bản, chúng ta sẽ cần:
- Python: Cài đặt sẵn trên máy.
- Thư viện
pywin32: Dùng để tương tác với Outlook. Cài bằng lệnh:pip install pywin32 - Microsoft Outlook: Đã cài đặt và cấu hình tài khoản email.
Dưới đây là một đoạn code ví dụ đơn giản:
import win32com.client
# Khởi tạo đối tượng Outlook
outlook = win32com.client.Dispatch('Outlook.Application')
namespace = outlook.GetNamespace('MAPI')
# Thông tin email
subject = "Báo cáo hàng tháng"
body_content = "Kính gửi anh/chị, \n\nĐây là báo cáo tháng [Tháng] của quý công ty. \n\nTrân trọng,\n[Tên của bạn]"
recipient_email = "nguoi_nhan@example.com"
attachment_path = "C:\\Path\\To\\Your\\Report.xlsx"
# Tạo email mới
mail = outlook.CreateItem(0) # 0 Represents an Email item
mail.To = recipient_email
mail.Subject = subject
mail.Body = body_content
mail.Attachments.Add(attachment_path)
# Hiển thị email để xem trước trước khi gửi (hoặc dùng mail.Send() để gửi thẳng)
mail.Display()
Các bác có thể tùy biến thêm phần danh sách người nhận, nội dung email, đính kèm nhiều file, hoặc thậm chí là đọc danh sách người nhận và file đính kèm từ một file Excel khác. Cái này em thấy tiết kiệm được khối thời gian cho mấy vụ báo cáo lặp đi lặp lại.
Có bác nào đã từng làm hoặc có cách nào hay hơn thì chia sẻ thêm cho mọi người học hỏi với ạ!