Skip to main content

Gửi Email Hàng Loạt Bằng Python và SMTP

· 3 min read

Giới Thiệu

Bài viết này hướng dẫn cách gửi email hàng loạt từ file Excel bằng Python. Chúng ta sẽ sử dụng thư viện pandas để đọc danh sách email và smtplib để gửi email thông qua SMTP.

Cảnh Báo Bảo Mật ⚠️

Không bao giờ lưu trữ mật khẩu trực tiếp trong mã nguồn. Thay vào đó, bạn nên sử dụng:

  • Biến môi trường (os.environ)
  • Tệp cấu hình (config.ini, .env)
  • OAuth2 thay vì đăng nhập bằng tài khoản thông thường

Cài Đặt Thư Viện

Trước tiên, hãy cài đặt các thư viện cần thiết:

pip install pandas openpyxl

Cấu Trúc File Excel

File Excel cần có hai cột như sau:

NameEmail
Tuantuan@email.com
Anan@email.com

Lưu file với tên email_list.xlsx để chương trình có thể đọc dữ liệu.

Mã Python Gửi Email Hàng Loạt

import pandas as pd
import smtplib
import os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# Đọc dữ liệu từ file Excel
file_path = 'email_list.xlsx' # Đảm bảo tệp có cột "Email" và "Name"
df = pd.read_excel(file_path)

# Cấu hình SMTP server
smtp_server = 'smtp.gmail.com'
smtp_port = 587
smtp_username = os.getenv("SMTP_USER") # Lấy từ biến môi trường
smtp_password = os.getenv("SMTP_PASS") # Lấy từ biến môi trường

# Kiểm tra thông tin đăng nhập
if not smtp_username or not smtp_password:
raise ValueError("Chưa cấu hình thông tin đăng nhập SMTP")

# Thiết lập kết nối SMTP
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(smtp_username, smtp_password)

# Gửi email cho từng hàng trong file Excel
for index, row in df.iterrows():
recipient_email = row['Email']
recipient_name = row['Name']

# Tạo email
msg = MIMEMultipart()
msg['From'] = smtp_username
msg['To'] = recipient_email
msg['Subject'] = 'Cách Gửi Email Hàng Loạt Bằng Python'

body = f"""
Xin chào {recipient_name},

Đây là email thông báo quan trọng.

Trân trọng,
Nhóm hỗ trợ
"""
msg.attach(MIMEText(body, 'plain'))

# Gửi email
server.sendmail(smtp_username, recipient_email, msg.as_string())
print(f"Đã gửi email đến {recipient_email}")

# Đóng kết nối
server.quit()

Lưu Ý

  • Bạn cần bật Less Secure Apps hoặc sử dụng OAuth2 khi làm việc với Gmail.
  • Không chia sẻ mật khẩu SMTP trên mã nguồn công khai.
  • Thử nghiệm trên tài khoản test trước khi gửi email hàng loạt.

Gửi email hàng loạt bằng Python, Python gửi email tự động

SMTP Gmail Python, gửi email với pandas, smtplib Python

Học cách gửi email hàng loạt bằng Python với pandas và smtplib. Hướng dẫn chi tiết từng bước kèm mã nguồn dễ hiểu.

Liên Kết Hữu Ích

Chúc bạn thành công! 🚀