Hướng dẫn cách tự động gửi email bằng Python để tạo báo cáo số liệu kinh doanh, vẽ biểu đồ và gửi định kỳ mỗi sáng cho ban quản lý.
1. Tại sao Data Analyst cần tự động hóa việc gửi email báo cáo?
Mỗi buổi sáng, các Data Analyst thường mất hàng giờ để tổng hợp dữ liệu, vẽ biểu đồ và gửi email báo cáo cho ban quản lý. Việc làm thủ công này tốn nhiều thời gian và dễ xảy ra sai sót.
Giải pháp tối ưu là viết script tự động gửi email bằng Python. Hệ thống sẽ tự động chạy ngầm, kết nối cơ sở dữ liệu, tạo biểu đồ trực quan và gửi báo cáo đúng 8 giờ sáng hằng ngày.
2. Chuẩn bị môi trường và vẽ biểu đồ báo cáo bằng Python
Trước tiên, bạn cần cài đặt các thư viện hỗ trợ xử lý dữ liệu và vẽ biểu đồ như pandas và matplotlib:
pip install pandas matplotlib yagmail
Đoạn code Python cơ bản để vẽ biểu đồ doanh thu và lưu thành file ảnh:
import matplotlib.pyplot as plt
import pandas as pd
# Dữ liệu mẫu
ngay telefon = ['Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6']
doanh_thu = [120, 150, 170, 130, 200]
# Vẽ biểu đồ
plt.figure(figsize=(8, 5))
plt.plot(ngay, doanh_thu, marker='o', color='b', linewidth=2)
plt.title('Bao Cao Doanh Thu Trong Tuan')
plt.xlabel('Ngay')
plt.ylabel('Doanh Thu (Trieu VND)')
plt.grid(True)
# Lưu file ảnh
plt.savefig('BaoCaoDoanhThu.png')
plt.close()
3. Cách tự động gửi email bằng Python với yagmail
yagmail là thư viện cực kỳ gọn nhẹ và dễ sử dụng khi tự động gửi email bằng Python thông qua Gmail. Thư viện này hỗ trợ xác thực bảo mật và đính kèm tệp rất nhanh chóng.
import yagmail
# Kết nối tài khoản Gmail của bạn (Nên dùng App Password)
yag = yagmail.SMTP('email_cua_ban@gmail.com', 'mat_khau_ung_dung')
# Nội dung và tệp đính kèm
to = 'banquanly@mcna.vn'
subject = 'Bao Cao Doanh Thu Tu Dong'
contents = [
'Chào ban quản lý,\n\nHệ thống gửi báo cáo doanh thu tự động ngày hôm nay.\nChi tiết biểu đồ đính kèm bên dưới.',
'BaoCaoDoanhThu.png',
]
# Gửi email
yag.send(to=to, subject=subject, contents=contents)
print('Đã gửi email thành công!')
4. Gửi email chuyên nghiệp với smtplib tiêu chuẩn
Nếu bạn không dùng Gmail hoặc muốn tùy chỉnh sâu hơn về HTML, thư viện smtplib và email.mime là lựa chọn chuẩn mực:
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
msg = MIMEMultipart()
msg['From'] = 'sender@gmail.com'
msg['To'] = 'manager@mcna.vn'
msg['Subject'] = 'Bao Cao Kinh Doanh Hang Ngay'
# Nội dung dạng HTML
body = '<h3>Báo cáo doanh thu</h3><p>Vui lòng xem biểu đồ đính kèm.</p>'
msg.attach(MIMEText(body, 'html'))
# Đính kèm ảnh biểu đồ
filename = 'BaoCaoDoanhThu.png'
with open(filename, 'rb') as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', f'attachment; filename= {filename}')
msg.attach(part)
# Kết nối Server SMTP và gửi
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login('sender@gmail.com', 'mat_khau_ung_dung')
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()
5. Lên lịch chạy tự động hằng ngày
Để quá trình tự động gửi email bằng Python diễn ra hoàn toàn tự động, bạn có thể kết hợp thư viện schedule hoặc sử dụng Task Scheduler (trên Windows) / Cron Job (trên Linux) để kích hoạt script vào 8 giờ sáng mỗi ngày.
6. Tổng kết
Việc ứng dụng kỹ thuật tự động gửi email bằng Python giúp Data Analyst giải phóng bản thân khỏi các tác vụ thủ công lặp đi lặp lại. Đây là kỹ năng thiết thực giúp tối ưu hóa hiệu suất làm việc và nâng tầm chuyên môn trong doanh nghiệp.
✍️ Tác giả: Phan Thị Như Phước – Data Analyst tại MCNA Technology School
📞 Hotline: 0939.866.825 (Mr. Minh Khang)
🌐 Website: mcna.vn
📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông
📍 TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

