Mã nguồn Python gửi email rất là hữu ích trong việc gửi các báo cáo tự động. Chúng ta có thể sử dụng để gửi các cảnh báo cá nhân. Hay sử dụng để gửi kết quả, báo cáo trong các chương trình web scraping, web automation mà được chạy trên server.
Table of Contents
Thiết lập Gmail cho phép gửi email
Để Gmail cho phép ứng dụng bên thứ 3 gửi email, thì anh em cần thiết lập Gmail cho phép ứng dụng không an toàn (Enabling less secure apps to access accounts). Anh em vào Google tìm với từ khóa “Enabling less secure apps” để làm theo nhé.
Mã nguồn Python gửi email cơ bản
Python hỗ trợ thư viện chuẩn để gửi mail là smtplib. Có nghĩa là, để chạy được mã nguồn này, chúng ta không cần cài thêm thư viện.
Để gửi email mà không có chủ đề (subject) bằng gmail của bạn thì code rất đơn giản như dưới đây.
1 2 3 4 5 6 7 |
import smtplib server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login("ĐỊA CHỈ EMAIL CỦA BẠN", "MẬT KHẨU") msg = "NỘI DUNG EMAIL" server.sendmail("ĐẠI CHỈ EMAIL CỦA BẠN", "ĐẠI CHỈ NHẬN MAIL", msg) server.quit() |
Các bạn cần thiết lập lại các chỗ là: “ĐỊA CHỈ EMAIL CỦA BẠN”, “MẬT KHẨU”, “ĐẠI CHỈ NHẬN MAIL”, “NỘI DUNG EMAIL”
Mã nguồn Python gửi email với đầy đủ thông tin
Dưới đây là mã nguồn gửi thông tin đầy đủ cho 1 email
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText fromaddr = "ĐỊA CHỈ EMAIL CỦA BẠN" toaddr = "ĐỊA CHỈ NHẬN MAIL" msg = MIMEMultipart() msg['From'] = fromaddr msg['To'] = toaddr msg['Subject'] = "TIÊU ĐỀ CỦA MAIL (SUBJECT)" body = "NỘI DUNG MAIL" msg.attach(MIMEText(body, 'plain')) server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(fromaddr, "MẬT KHẨU") text = msg.as_string() server.sendmail(fromaddr, toaddr, text) server.quit() |
Các bạn cần thiết lập lại các chỗ là: “ĐỊA CHỈ EMAIL CỦA BẠN”,”TIÊU ĐỀ CỦA MAIL (SUBJECT)”, “NỘI DUNG MAIL” “MẬT KHẨU”, “ĐỊA CHỈ NHẬN MAIL”
Mã nguồn Python gửi email với file đính kèm
Và cuối cùng là mã nguồn Python gửi mail với file đính kèm. Anh em lưu ý, sử dụng try-catch để biết được email có được gửi thành công hay không.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import smtplib from email.mime.base import MIMEBase from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText fromaddr = "ĐỊA CHỈ EMAIL CỦA BAN" toaddr = "ĐỊA CHỈ NHẬN MAIL" msg = MIMEMultipart() msg['From'] = fromaddr msg['To'] = toaddr msg['Subject'] = "TIÊU ĐỀ CỦA MAIL (SUBJECT)" body = "NỘI DUNG MAIL" try: msg.attach(MIMEText(body, 'plain')) filename = "ĐƯỜNG DẪN ĐẾN FILE ĐÍNH KÈM" 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= %s" % filename) msg.attach(part) server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(fromaddr, "MẬT KHẨU ") text = msg.as_string() server.sendmail(fromaddr, toaddr, text) server.quit() except Exception as e: print(str(e)) |
Các bạn cần thiết lập lại các chỗ là: “ĐỊA CHỈ EMAIL CỦA BẠN”,”TIÊU ĐỀ CỦA MAIL (SUBJECT)”, “NỘI DUNG MAIL” “MẬT KHẨU”, “ĐỊA CHỈ NHẬN MAIL”, “ĐƯỜNG DẪN ĐẾN FILE ĐÍNH KÈM”
Kinh nghiệm sử dụng Python gửi để gửi email
Mình thường sử dụng email để gửi các thông báo như: kết quả web scraping, scraping job hoàn thành, các dự án mới từ Freelancer.com,… Mình đăng kí 1 gmail khác () để chuyên gửi các email thông báo để đảm bảo an toàn cho email chính. Vì như các bạn thấy, trong đoạn code trên, chúng ta phải nhập mật khẩu Gmail dưới dạng bản rõ (plain-text). Nếu ai đó vô tình có được đoạn code này thì sẽ chiếm được Gmail của mình.
Anh em có ý kiến, xin comment chia sẻ. Chúc anh em sớm giật tiền Tây.
Mình là một lập trình viên tự do với hơn 10 năm kinh nghiệm. Mình chuyên về Web scraping, Web automation, Python, Django
Rất hay
Hay, mình muốn tự động gửi mail báo cáo, body là số liệu lấy từ dữ liệu của excel hoặc sql server thì làm sao a?
Hi,
Bạn có thể gửi báo cáo với đính kèm file excel luôn. Bạn xem mã nguồn ở đây: https://stackoverflow.com/questions/3362600/how-to-send-email-attachments
muốn gửi mail với nội dùng dài thì sao b, mình thử gửi những k được
Được chứ. Bạn chỉ cần sửa phần nội dung thư (msg) là ok mà.
Sao mình không gửi được nội dung tiếng Việt có dấu, chương trình báo lỗi. Tiếng việt không dấu thì gửi được.
buy oral viagra online viagra tablets in india viagra with dapoxetine us