Gửi nhiều email từ tệp csv python

Python cho phép bạn tự động hóa tác vụ gửi email bằng cách sử dụng các mô-đun tích hợp sẵn của nó. Làm như vậy sẽ giải phóng bạn khỏi nhiệm vụ tẻ nhạt và tốn thời gian là gửi email theo cách thủ công tới hàng nghìn người dùng

Hướng dẫn này sẽ xem xét một số cách nhanh chóng, dễ dàng để gửi email và làm việc với các mô-đun email tích hợp của Python

 

Mục lục

1

 

Kiểm tra xem Email có tồn tại không

Thông thường, bạn có thể muốn kiểm tra xem email do người dùng nhập có phải là email hợp lệ hay không đúng về mặt cú pháp. Hơn nữa, bạn cũng có thể muốn kiểm tra xem địa chỉ email có thực sự tồn tại hay không. Điều này có thể được thực hiện nhanh chóng bằng Python

Địa chỉ email hợp lệ có định dạng cụ thể. Luôn tồn tại ký hiệu ‘@’. Tiền tố là phần trước dấu @ và hậu tố được theo sau dấu @

Hậu tố phải là một tên miền đã được xác minh. Địa chỉ email có thể chứa số, bảng chữ cái, dấu chấm, dấu gạch ngang và dấu gạch dưới

Nếu sử dụng dấu gạch ngang hoặc gạch dưới thì phải theo sau dấu gạch ngang hoặc chữ số. Đây là những quy tắc xác định một địa chỉ email chính xác

Mô-đun Python re có ích nếu bạn muốn kiểm tra cú pháp của địa chỉ email do người dùng nhập. 're' là dạng viết tắt của biểu thức chính quy

Bạn có thể tạo một biểu thức chính quy phù hợp với cú pháp của một email hợp lệ. Để làm được điều này, bạn cần hiểu cách biểu thức chính quy hoạt động. Dưới đây là một biểu thức chính quy kiểm tra cú pháp cho một địa chỉ email

import re
valid_regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
def check(email):
  if(re.fullmatch(valid_regex, email)):
    print("This is a valid email") 
  else:
    print("This is an invalid email")
email = "[email protected]"
check(email)

Gửi nhiều email từ tệp csv python

Sử dụng mô-đun re yêu cầu bạn phải có hiểu biết vững chắc về các biểu thức chính quy

Một cách thậm chí còn tốt hơn để kiểm tra xem email có tồn tại hay không là sử dụng gói của bên thứ ba có tên xác thực-email-địa chỉ. Bạn có thể cài đặt mô-đun này bằng trình quản lý gói, chẳng hạn như pip

$ pip install py3-validate-email
from validate_email import validate_email
valid_email = validate_email(email_address='[email protected]')

Gửi nhiều email từ tệp csv python

Điều tuyệt vời của gói này là nó kiểm tra cú pháp của một email và kiểm tra xem địa chỉ email đã cho có tồn tại hay không bằng cách mô phỏng một quá trình gửi email thực tế. Để làm điều này, bạn cần đặt cờ check_smtp thành true

from validate_email import validate_email
valid_email = validate_email(email_address='[email protected]', check_smtp = True)    

Gửi nhiều email từ tệp csv python

 

Máy chủ email Python

Để gửi email bằng Python, trước tiên bạn cần thiết lập máy chủ email. Cách phổ biến nhất và giao thức tiêu chuẩn ngành để gửi email là sử dụng giao thức SMTP

SMTP là viết tắt của Giao thức chuyển thư đơn giản. Các nhà cung cấp dịch vụ email sử dụng máy chủ SMTP và giao thức SMTP để gửi hoặc chuyển tiếp tin nhắn

Bạn có thể tạo máy chủ email SMTP của riêng mình bằng mô-đun smtplib của Python. Mô-đun cho phép bạn gửi tin nhắn đơn giản mà không cần dòng chủ đề hoặc đa phương tiện

Python cũng có gói email sẵn có cho phép bạn gửi các tệp đính kèm bổ sung cùng với tin nhắn văn bản của mình. Khi được sử dụng cùng với mô-đun smtplib, bạn có thể gửi các email phong phú có tệp đính kèm và dòng tiêu đề

Để tạo một máy chủ email bằng mô-đun smtplib, trước tiên bạn cần chạy câu lệnh nhập

import smtplib

Sau đó, bạn có thể tạo một phiên bản SMTP đóng gói một kết nối SMTP. Bạn có thể thiết lập các tham số tùy chọn máy chủ và cổng để chỉ định cổng và máy chủ, tùy thuộc vào nhà cung cấp dịch vụ email cụ thể của bạn

Để thiết lập kết nối tự động đóng, bạn cần sử dụng câu lệnh 'with'

from smtplib import SMTP
with SMTP(host= "exampledomain.com", port= 587) as smtp:
    smtp.starttls()
    smtp.noop()

Gửi nhiều email từ tệp csv python

Khi bạn sử dụng SMTP, kết nối bắt đầu không an toàn. Đây là lý do tại sao bạn cần mã hóa nó bằng starttls()

Một cách khác là bắt đầu một kết nối an toàn ngay từ đầu thay vì mã hóa nó sau khi kết nối đã được bắt đầu. Phiên bản SMTP_SSL được sử dụng cho trường hợp này

from smtplib import SMTP
server = "smtp-mail.outlook.com"
port = 587
with smtplib.SMTP_SSL(server, port) as server:
    server.login("[email protected]", password="StrongPassword")

Gửi nhiều email từ tệp csv python

 

Gửi Email bằng Python

Khi bạn đã thiết lập máy chủ email của mình, bạn có thể chuyển tiếp email đến các địa chỉ hợp lệ. Hàm sendmail() thực hiện việc này. Nó yêu cầu bạn chỉ định địa chỉ email của người gửi và người nhận, cùng với tin nhắn

Nếu máy chủ SMTP của bạn yêu cầu xác thực để gửi thư, bạn sẽ cần nhập thông tin đăng nhập tài khoản email của mình

Bạn có thể chuyển tên người dùng và mật khẩu cho hàm login(), hàm này sẽ thực hiện xác thực

Khi sử dụng mô-đun smtplib, có hai cách bạn có thể thực hiện để gửi email. Cả hai đều đảm bảo rằng kết nối SMTP của bạn được bảo mật và mã hóa

 

Gửi Email qua SMTP

Như đã thấy trước đó, trước tiên bạn có thể bắt đầu một kết nối không được mã hóa qua TLS và sau đó mã hóa nó bằng starttls(). Trong trường hợp này, một thể hiện của lớp SMTP được tạo

import smtplib
import ssl
port = 587  
smtp_server = "smtp-mail.outlook.com"
sender = "[email protected]"
recipient = "[email protected]"
sender_password = "strongpassword"
message = """
Subject: This is a test message
Sent using Python."""
SSL_context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, port) as server:
    server.starttls(context=SSL_context)
    server.login(sender, sender_password)
    server.sendmail(sender, recipient, message)

Gửi nhiều email từ tệp csv python

 

Gửi bằng SMTP SSL

Cách thứ hai để gửi email là bắt đầu kết nối an toàn qua TLS. Đây là lựa chọn phù hợp trong trường hợp cần có SSL ngay từ đầu kết nối

________số 8_______

Gửi nhiều email từ tệp csv python

 

Gửi Email không cần máy chủ SMTP

Nếu bạn không muốn thiết lập máy chủ SMTP để gửi email, mô-đun chilkat sẽ là lựa chọn tốt nhất của bạn. Nó chứa lớp Chilkat MailMan, chịu trách nhiệm gửi và nhận email thông qua các máy chủ SMTP và POP3 tương ứng

Mô-đun này cung cấp phương thức MxLookup thực hiện tra cứu DNS MX để tìm máy chủ thư bằng địa chỉ email của người nhận. Bạn sẽ cần cài đặt mô-đun chilkat để thực hiện việc này

import sys
import chilkat
mailman = chilkat.CkMailMan()
receiver_address = "[email protected]"
smtpHost = mailman.mxLookup(receiver_address)
if (mailman.get_LastMethodSuccess() != True):
    print(mailman.lastErrorText())
    sys.exit()
mailman.put_SmtpHost(smtpHost)
mail = chilkat.CkEmail()
mail.put_Subject("A test subject")
mail.put_Body("Hello!")
mail.put_From("")
mail.AddTo("", receiver_address)
success = mailman.SendEmail(mail)
if (success != True):
    print(mailman.lastErrorText())
else:
    print("Sent!")

Gửi nhiều email từ tệp csv python

 

Email văn bản MIME

Nếu bạn muốn gửi email văn bản đơn giản mà không có chủ đề hoặc điểm nhấn (đậm, nghiêng hoặc gạch chân), mô-đun smtplib từ Python là đủ để hoàn thành công việc

Tuy nhiên, bạn thường muốn thêm tệp đính kèm (hình ảnh, siêu liên kết, v.v. ) hoặc nội dung phản hồi trong các tình huống thực tế bằng văn bản thuần túy của bạn. Mô-đun email tích hợp của Python rất hữu ích trong những tình huống như vậy

MIME, viết tắt của Multipurpose Internet Mail Extensions, là một loại email sử dụng HTML kết hợp với văn bản thuần túy

Nó mở rộng giao thức SMTP để hỗ trợ hình ảnh, video, âm thanh và các tệp đính kèm khác. email của Python. mô-đun mime cho phép bạn bao gồm HTML hoặc tệp đính kèm khi gửi email qua máy chủ SMTP

Để làm điều đó, bạn cần nhập các mô-đun bằng cách chạy câu lệnh sau

$ pip install py3-validate-email
0

Gửi nhiều email từ tệp csv python

 

Gửi email HTML

Bên cạnh việc gửi văn bản MIME qua máy chủ SMTP, email. mime cũng hoạt động tốt để gửi email HTML. Quá trình này hoàn toàn giống như trên, với một sự khác biệt nhỏ trong hàm MIMEText()

Bạn đã chuyển "thuần túy" làm đối số thứ hai trong ví dụ mã trước đó vì thông báo là một văn bản thuần túy đơn giản. Khi bạn muốn gửi một văn bản HTML, bạn thay đổi văn bản của mình và đối số này thành “html. ”

$ pip install py3-validate-email
1

Gửi nhiều email từ tệp csv python

 

Chỉ định CC và BCC

Email. mô-đun mime cũng cho phép bạn chỉ định người nhận CC và BCC trong thông điệp email của mình. Để làm như vậy, bạn cần chỉ định các tiêu đề bổ sung trong tin nhắn Nhiều phần của mình

$ pip install py3-validate-email
2

Gửi nhiều email từ tệp csv python

 

Gửi Email có tệp đính kèm

Tệp đính kèm được gửi qua máy chủ SMTP dưới dạng tệp nhị phân. Để làm như vậy, bạn cần mã hóa các tệp đính kèm trong base64, một lược đồ mã hóa nhị phân thành văn bản phổ biến để mã hóa dữ liệu nhị phân thành các ký tự ASCII

Chẳng hạn, bạn có thể gửi tệp pdf bằng cách đọc tệp đó dưới dạng luồng octet với phiên bản MIMEBase và mã hóa tệp đó bằng mô-đun bộ mã hóa trong thư viện email của Python

$ pip install py3-validate-email
3

Gửi nhiều email từ tệp csv python

 

Gửi Email với hình ảnh nội tuyến

Đôi khi bạn có thể muốn nhúng hình ảnh bên trong văn bản HTML. Để làm điều đó, bạn có thể chuyển đổi hình ảnh của mình sang định dạng được mã hóa base64 và gửi nó qua

May mắn thay, Python có một thư viện để làm điều đó cho bạn. Bạn có thể nhập thư viện base64 và sử dụng hàm b64encode() để thực hiện việc này một cách liền mạch

$ pip install py3-validate-email
4

Gửi nhiều email từ tệp csv python

 

Gửi Email đến địa chỉ Email được quốc tế hóa (không phải ASCII)

Trước khi email được công nhận trên toàn thế giới, chúng chủ yếu bao gồm các ký tự ASCII và được biên dịch theo tiêu chuẩn RFC 822

Ngày nay, email được gửi đi quốc tế với nhiều bộ ký tự dành riêng cho ngôn ngữ. Để gửi email quốc tế hóa, bạn cần sử dụng email. mô-đun tiêu đề, mã hóa các ký tự không phải ASCII thành định dạng tuân thủ RFC 2822

Nếu các trường chủ đề hoặc người gửi của bạn chứa các ký tự không phải ASCII, bạn có thể sử dụng lớp Tiêu đề để tạo một thực thể Tiêu đề và chuyển bộ ký tự mà chuỗi đã được mã hóa trong

Hàm decode_header() tương ứng giải mã chuỗi được mã hóa thành bộ ký tự gốc

$ pip install py3-validate-email
5

Gửi nhiều email từ tệp csv python

 

Gửi thư đã ký DKIM

Sử dụng Python, bạn có thể gửi email được ký điện tử bằng khóa riêng của mình. Điều này cực kỳ hữu ích trong các tình huống cần xác thực người gửi

Để làm điều đó, bạn cần cài đặt gói của bên thứ ba có tên dkimpy. Bạn sẽ cần cài đặt gói bằng cách sử dụng thiết lập. tập tin py

Sau khi hoàn tất, bạn có thể nhập nó bằng cách chạy câu lệnh

$ pip install py3-validate-email
6

Giờ đây, bạn có thể tạo chữ ký cho tin nhắn của mình bằng khóa riêng (Bạn sẽ cần tạo cặp khóa công khai/riêng tư để thực hiện việc này). Sau đó, bạn sẽ phải đính kèm chữ ký số vào tin nhắn Nhiều phần của mình và bạn đã hoàn tất

$ pip install py3-validate-email
7

Gửi nhiều email từ tệp csv python

 

Gửi Email cho nhiều người nhận

Lợi ích thực sự của tự động hóa email được gặt hái khi bạn muốn gửi email được cá nhân hóa cho nhiều người nhận. Có lẽ bạn có tệp CSV chứa nhiều tên và địa chỉ email của người dùng

Bạn có thể đọc tệp CSV bằng Python và lặp qua từng dòng để truy xuất tên và email của người nhận

Khi bạn có thông tin của người nhận, bạn có thể làm cho tin nhắn của mình được cá nhân hóa hơn bằng cách sử dụng str. format() và trình giữ chỗ. Đây là cách bạn làm điều đó

$ pip install py3-validate-email
8

Gửi nhiều email từ tệp csv python

  • Chia sẻ trên facebook
  • Tweet trên Twitter

Mokhtar Ebrahim

Mokhtar là người sáng lập LikeGeek. com. Anh ấy làm quản trị viên hệ thống Linux từ năm 2010. Ông chịu trách nhiệm duy trì, bảo mật và khắc phục sự cố máy chủ Linux cho nhiều khách hàng trên khắp thế giới. Anh ấy thích viết các tập lệnh shell và Python để tự động hóa công việc của mình