Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Tự động hóa gửi email báo cáo Excel hàng ngày bằng Python và Gmail API

Bàn Thắng Nga 12/04/2026 21:21 305 lượt xem 3 trả lời

Chào mọi người,

Dạo này công việc của mình liên quan nhiều đến việc tổng hợp dữ liệu và gửi báo cáo hàng ngày qua email. Thay vì làm thủ công tốn thời gian, mình đã tìm hiểu và áp dụng Python để tự động hóa hoàn toàn quy trình này. Hôm nay mình muốn chia sẻ lại kinh nghiệm để mọi người cùng tham khảo, đặc biệt là với các bạn hay phải làm việc với Gmail.

Công cụ chính mình sử dụng là thư viện smtplibemail của Python để gửi email, kết hợp với pandas để đọc và xử lý dữ liệu Excel.

Các bước cơ bản:

  • Đọc dữ liệu từ file Excel bằng Pandas.
  • Xử lý, định dạng dữ liệu theo yêu cầu báo cáo.
  • Tạo nội dung email (có thể đính kèm file Excel đã xử lý hoặc gửi dạng bảng trong body email).
  • Kết nối đến Gmail SMTP server sử dụng smtplib.
  • Gửi email với các thông tin: người gửi, người nhận, tiêu đề, nội dung.

Lưu ý quan trọng khi sử dụng Gmail API:

  • Bạn cần bật 'Less secure app access' hoặc tốt hơn là sử dụng 'App passwords' nếu tài khoản của bạn có bật xác thực 2 yếu tố.
  • Cấu trúc email cần được xây dựng cẩn thận, đặc biệt là phần đính kèm file.

Mình đã viết một script nhỏ để thực hiện việc này, mọi người có thể tham khảo đoạn code dưới đây để hình dung rõ hơn:

import pandas as pd
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

# --- Cấu hình --- 

sender_email = "your_email@gmail.com"
sender_password = "your_app_password"
receiver_email = "recipient_email@example.com"

# --- Đọc và xử lý dữ liệu Excel --- 
df = pd.read_excel("data.xlsx")
# ... xử lý dữ liệu ...

# --- Tạo nội dung email --- 
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = "Báo cáo hàng ngày"

body = "Kính gửi,

Báo cáo dữ liệu hàng ngày của bạn đây.

Trân trọng,
Đội ngũ Tự động hóa"
message.attach(MIMEText(body, 'plain'))

# --- Đính kèm file Excel --- 
filename = "data.xlsx"
attachment= open(filename,"rb")

part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+ filename)

message.attach(part)

# --- Gửi email --- 
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email, sender_password)
text = message.as_string()
server.sendmail(sender_email, receiver_email, text)
server.quit()

print("Email đã được gửi thành công!")

Hy vọng chia sẻ này hữu ích cho các bạn đang tìm kiếm giải pháp tự động hóa công việc với Excel và Python. Nếu có câu hỏi hoặc kinh nghiệm khác, mọi người cùng thảo luận nhé!

0

Hay quá bạn ơi! Mình cũng đang đau đầu với việc gửi báo cáo Excel hàng ngày đây.

Bạn dùng pandas để đọc file Excel thì tiện rồi, nhưng cho mình hỏi thêm một chút về phần cấu hình gửi email với Gmail API ấy. Mình thấy phần này hơi phức tạp, có cách nào đơn giản hơn hoặc có thư viện Python nào khác hỗ trợ tốt hơn cho Gmail API không? Mình đang dùng Python 3.9, không biết có ảnh hưởng gì không.

Cảm ơn bạn đã chia sẻ nhé!

4

Chào bạn,

Rất vui khi bài chia sẻ của mình hữu ích cho bạn. Về phần cấu hình Gmail API, đúng là ban đầu nó có hơi loằng ngoằng một chút thật. Tuy nhiên, để đơn giản hóa, bạn có thể xem xét thư viện google-api-python-client. Nó giúp tương tác với Gmail API một cách có cấu trúc hơn.

Về phiên bản Python 3.9, bạn hoàn toàn yên tâm nhé, các thư viện mình đề cập đều hỗ trợ tốt trên phiên bản này. Nếu gặp vướng mắc cụ thể nào trong quá trình cấu hình, bạn cứ mạnh dạn hỏi thêm, mình sẽ cố gắng giải đáp!

5

Hay quá bạn ơi! Mình cũng đang đau đầu với việc gửi báo cáo Excel hàng ngày đây.

Bạn dùng pandas để đọc file Excel thì tiện rồi, nhưng cho mình hỏi thêm một chút về phần cấu hình gửi email với Gmail API ấy. Mình thấy phần này hơi phức tạp, có cách nào đơn giản hơn hoặc có thư viện Python nào khác hỗ trợ tốt hơn cho Gmail API không? Mình đang dùng Python 3.9, không biết có ảnh hưởng gì không.

Cảm ơn bạn đã chia sẻ nhé!

4

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký