Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Client giao thức SMTP trong Python (smtplib)


Thư viện chuẩn của Python có mô-đun smtplib định nghĩa một đối tượng phiên client SMTP có thể dùng để gửi email qua chương trình Python.

Máy chủ thư là một ứng dụng xử lý và phân phối email qua internet. Máy chủ thư đi ra triển khai SMTP (Simple Mail Transfer Protocol), một tiêu chuẩn Internet cho truyền thư điện tử.

Máy chủ thư đến có hai loại chính: POP3 (Post Office Protocol) và IMAP (Internet Message Access Protocol).

Hàm smtplib.SMTP()

Hàm này trả về một đối tượng của lớp SMTP. Nó đóng gói và quản lý kết nối đến máy chủ SMTP hoặc ESMTP. Các đối số sau được định nghĩa trong chữ ký của hàm này:

hostChuỗi là tên máy chủ từ xa để kết nối.
portSố chỉ định cổng để kết nối. Mặc định dùng smtplib.SMTP_PORT.
local_hostnameDùng làm FQDN của máy chủ cục bộ trong lệnh HELO/EHLO.
source_addressMột tuple 2 phần tử (host, port) để socket gán vào.

Nó có các phương thức sau hỗ trợ các thao tác SMTP:

connect() - Thiết lập kết nối đến máy chủ trên một cổng cho trước.

login() - Hàm này nhận đối số username và password để đăng nhập vào máy chủ SMTP.

quit() - Kết thúc phiên SMTP.

data() - Đối số message của hàm này được gửi đến máy chủ.

docmd() - Gửi một lệnh và trả về mã phản hồi.

ehlo() - Xác định máy chủ.

starttls() - Bật chế độ TLS.

getreply() - Nhận phản hồi từ máy chủ dưới dạng mã phản hồi.

putcmd() - Gửi một lệnh đến máy chủ.

send_message() - Chuyển đổi tin nhắn thành chuỗi byte và truyền cho gửi mail.

sendmail() - Thực hiện toàn bộ giao dịch gửi mail.

Các đối số là:

from_addrĐịa chỉ gửi thư này.
to_addrsDanh sách địa chỉ để gửi thư đến.
msgTin nhắn để gửi.

Mã dưới đây dùng máy chủ SMTP của Gmail để gửi email. Đối tượng SMTP dùng máy chủ SMTP của Gmail ở cổng 587. Lệnh ehlo() xác định máy chủ. Chúng ta cũng kích hoạt bảo mật lớp truyền tải (TLS) cho thư đi.

Tiếp theo, lệnh login() được gọi bằng cách truyền thông tin đăng nhập. Cuối cùng, thư được lắp ráp bằng cách gán tiêu đề theo định dạng quy định và gửi bằng phương thức sendmail(). Đối tượng SMTP được đóng sau đó.

import smtplib
content = "Hello World"
mail = smtplib.SMTP('smtp.gmail.com', 587)
mail.ehlo()
mail.starttls()
sender = 'pythonanytime@gmail.com'
recipient = 'mlathkar@gmail.com'
mail.login('pythonanytime@gmail.com', 'm15v5l61')
header = 'To:' + recipient + '\n' + 'From:' + sender + '\n' + 'subject:testmail\n'
content = header + content
mail.sendmail(sender, recipient, content)
mail.close()

Trước khi chạy script trên, đảm bảo tài khoản Gmail của người gửi được cấp quyền truy cập "less secure apps".

https://myaccount.google.com/lesssecureapps

Đặt nút bật/tắt hiển thị thành ON.

Client giao thức SMTP trong Python (smtplib)

Thực thi script sau khi thực hiện cài đặt trên. Tin nhắn sẽ được gửi đến hộp thư đến của người nhận.