Tạo đoạn mã gởi email báo cáo hằng ngày và cách thiết lập bằng Python
Tự động gửi báo cáo email hàng ngày bằng Python bao gồm một số bước:
- Thiết lập Môi trường: Cài đặt các thư viện cần thiết.
- Tạo Nội dung Email: Tạo hoặc thu thập dữ liệu để đưa vào báo cáo.
- Cấu hình Máy chủ Email: Sử dụng máy chủ SMTP để gửi email.
- Tự động hóa Kịch bản: Lên lịch chạy kịch bản hàng ngày.
Dưới đây là hướng dẫn từng bước với một ví dụ kịch bản để bạn bắt đầu.
Bước 1: Thiết lập Môi trường
Đầu tiên, cài đặt các thư viện Python cần thiết. Bạn sẽ cần smtplib
và email
để gửi email, và có thể cần pandas
nếu bạn cần tạo báo cáo từ dữ liệu.
pip install pandas
Bước 2: Tạo Nội dung Email
Tạo một hàm để tạo nội dung cho báo cáo hàng ngày của bạn. Điều này có thể là lấy dữ liệu từ cơ sở dữ liệu, xử lý tệp hoặc bất cứ điều gì khác. Đây là một ví dụ đơn giản tạo báo cáo cơ bản từ một DataFrame.
import pandas as pd
def generate_report():
# Dữ liệu mẫu
data = {
'Ngày': ['2024-07-21', '2024-07-22', '2024-07-23'],
'Doanh số': [100, 150, 200]
}
df = pd.DataFrame(data)
# Chuyển DataFrame sang HTML
report_html = df.to_html(index=False)
return report_html
Bước 3: Cấu hình Máy chủ Email
Thiết lập hàm để gửi email sử dụng các thư viện smtplib
và email
.
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def send_email(subject, body, to_email, from_email, smtp_server, smtp_port, login, password):
# Tạo thông điệp email
msg = MIMEMultipart()
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
# Đính kèm nội dung với HTML
msg.attach(MIMEText(body, 'html'))
# Gửi email
try:
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(login, password)
server.sendmail(from_email, to_email, msg.as_string())
print("Email gửi thành công")
except Exception as e:
print(f"Gửi email thất bại: {e}")
Bước 4: Kết hợp Tất cả
Bây giờ, kết hợp tất cả vào một kịch bản tạo báo cáo và gửi nó qua email.
def main():
# Tạo báo cáo
report = generate_report()
# Chi tiết email
subject = "Báo cáo Doanh số Hàng ngày"
to_email = "[email protected]"
from_email = "[email protected]"
smtp_server = "smtp.example.com"
smtp_port = 587
login = "[email protected]"
password = "your_password"
# Gửi email
send_email(subject, report, to_email, from_email, smtp_server, smtp_port, login, password)
if __name__ == "__main__":
main()
Bước 5: Tự động hóa Kịch bản
Để chạy kịch bản này hàng ngày, bạn có thể sử dụng bộ lập lịch. Trên Windows, bạn có thể sử dụng Task Scheduler, và trên Linux hoặc macOS, bạn có thể sử dụng cron jobs.
Sử dụng Cron trên Linux/macOS
- Mở trình chỉnh sửa crontab:
crontab -e
- Thêm dòng sau để chạy kịch bản hàng ngày lúc 8 giờ sáng:
0 8 * * * /usr/bin/python3 /path/to/your/script.py