Giao thức truyền thư đơn giản [SMTP] là một giao thức xử lý việc gửi e-mail và định tuyến e-mail giữa các máy chủ thư
Python cung cấp mô-đun smtplib, mô-đun này xác định đối tượng phiên máy khách SMTP có thể được sử dụng để gửi thư đến bất kỳ máy Internet nào có trình nền trình nghe SMTP hoặc ESMTP
Đây là một cú pháp đơn giản để tạo một đối tượng SMTP, đối tượng này sau này có thể được sử dụng để gửi e-mail -
import smtplib smtpObj = smtplib.SMTP[ [host [, port [, local_hostname]]] ]
Đây là chi tiết của các tham số -
máy chủ - Đây là máy chủ chạy máy chủ SMTP của bạn. Bạn có thể chỉ định địa chỉ IP của máy chủ hoặc tên miền như hướng dẫn. com. Đây là đối số tùy chọn
cổng - Nếu bạn đang cung cấp đối số máy chủ, thì bạn cần chỉ định một cổng, nơi máy chủ SMTP đang lắng nghe. Thông thường cổng này sẽ là 25
local_hostname − Nếu máy chủ SMTP của bạn đang chạy trên máy cục bộ, thì bạn chỉ có thể chỉ định localhost cho tùy chọn này
Một đối tượng SMTP có một phương thức thể hiện được gọi là sendmail, phương thức này thường được sử dụng để thực hiện công việc gửi thư. Phải mất ba tham số -
Người gửi - Một chuỗi có địa chỉ của người gửi
Người nhận - Một danh sách các chuỗi, một chuỗi cho mỗi người nhận
Thông báo - Một thông báo dưới dạng chuỗi được định dạng như được chỉ định trong các RFC khác nhau
Ví dụ
Đây là một cách đơn giản để gửi một email bằng tập lệnh Python. Try it once −
#!/usr/bin/python import smtplib sender = 'from@fromdomain.com' receivers = ['to@todomain.com'] message = """From: From Person To: To Person Subject: SMTP e-mail test This is a test e-mail message. """ try: smtpObj = smtplib.SMTP['localhost'] smtpObj.sendmail[sender, receivers, message] print "Successfully sent email" except SMTPException: print "Error: unable to send email"
Tại đây, bạn đã đặt một e-mail cơ bản trong thư, sử dụng ba trích dẫn, chú ý định dạng tiêu đề chính xác. Một e-mail yêu cầu tiêu đề Từ, Đến và Chủ đề, được phân tách khỏi phần thân của e-mail bằng một dòng trống
Để gửi thư, bạn sử dụng smtpObj để kết nối với máy chủ SMTP trên máy cục bộ, sau đó sử dụng phương thức sendmail cùng với thư, địa chỉ gửi và địa chỉ đích làm tham số [mặc dù địa chỉ gửi và đến nằm trong thư điện tử].
Nếu bạn không chạy máy chủ SMTP trên máy cục bộ của mình, bạn có thể sử dụng ứng dụng khách smtplib để giao tiếp với máy chủ SMTP từ xa. Trừ khi bạn đang sử dụng dịch vụ webmail [chẳng hạn như Hotmail hoặc Yahoo. Mail], nhà cung cấp dịch vụ e-mail của bạn phải cung cấp cho bạn thông tin chi tiết về máy chủ thư gửi đi mà bạn có thể cung cấp chúng, như sau –
smtplib.SMTP['mail.your-domain.com', 25]
Gửi email HTML bằng Python
Khi bạn gửi tin nhắn văn bản bằng Python, thì tất cả nội dung được coi là văn bản đơn giản. Ngay cả khi bạn bao gồm các thẻ HTML trong một tin nhắn văn bản, nó sẽ được hiển thị dưới dạng văn bản đơn giản và các thẻ HTML sẽ không được định dạng theo cú pháp HTML. Nhưng Python cung cấp tùy chọn để gửi tin nhắn HTML dưới dạng tin nhắn HTML thực tế
Trong khi gửi e-mail, bạn có thể chỉ định phiên bản Mime, loại nội dung và bộ ký tự để gửi e-mail HTML
Ví dụ
Sau đây là ví dụ để gửi nội dung HTML dưới dạng e-mail. Hãy thử một lần -
#!/usr/bin/python import smtplib message = """From: From Person To: To Person MIME-Version: 1.0 Content-type: text/html Subject: SMTP HTML e-mail test This is an e-mail message to be sent in HTML format This is HTML message. This is headline. """ try: smtpObj = smtplib.SMTP['localhost'] smtpObj.sendmail[sender, receivers, message] print "Successfully sent email" except SMTPException: print "Error: unable to send email"
Gửi tệp đính kèm dưới dạng e-mail
Để gửi e-mail có nội dung hỗn hợp, yêu cầu đặt tiêu đề Kiểu nội dung thành nhiều phần/hỗn hợp. Sau đó, các phần văn bản và tệp đính kèm có thể được chỉ định trong các ranh giới
Một ranh giới được bắt đầu bằng hai dấu gạch ngang, theo sau là một số duy nhất, không thể xuất hiện trong phần thông báo của e-mail. Ranh giới cuối cùng biểu thị phần cuối cùng của e-mail cũng phải kết thúc bằng hai dấu gạch nối
Các tệp đính kèm phải được mã hóa bằng hàm pack["m"] để có mã hóa base64 trước khi truyền
python-emailThư viện python hiện đại cho email
Xây dựng thông điệp
>>> import emails >>> message = emails.html[html="Hi!
, subject="Your receipt No. 567098123", mail_from=['Some Store', 'store@somestore.com']] >>> message.attach[data=open['bill.pdf', 'rb'], filename='bill.pdf']
Here is your receipt..."
gửi tin nhắn và nhận phản hồi từ máy chủ smtp
>>> r = message.send[to='s@lavr.me', smtp={'host': 'aspmx.l.google.com', 'timeout': 5}] >>> assert r.status_code == 250
và hơn thế nữa
- chữ ký DKIM
- Kết xuất nội dung từ mẫu
- Tiện ích mở rộng Flask và tích hợp Django
- Các phương thức chuyển đổi nội dung thư
- Tải tin nhắn từ url hoặc từ tập tin
Tài liệu. python-email. đọcthedocs. tổ chức
mở rộng bình. bình-email