Python smtplib

Giao thức truyền thư đơn giản [SMTP] được sử dụng làm giao thức để xử lý việc chuyển email bằng Python. Nó được sử dụng để định tuyến email giữa các máy chủ email. Nó là một giao thức lớp ứng dụng cho phép người dùng gửi thư đến người khác. Người nhận truy xuất email bằng các giao thức POP [Giao thức Bưu điện] và IMAP [Giao thức Truy cập Thư Internet]

Khi máy chủ lắng nghe kết nối TCP từ máy khách, nó sẽ bắt đầu kết nối trên cổng 587

Python cung cấp một mô-đun smtplib, mô-đun này xác định một đối tượng phiên máy khách SMTP được sử dụng để gửi email đến một máy internet. Với mục đích này, chúng ta phải nhập mô-đun smtplib bằng câu lệnh nhập

Đối tượng SMTP được sử dụng để chuyển email. Cú pháp sau được sử dụng để tạo đối tượng smtplib

Nó chấp nhận các tham số sau

  • chủ nhà. Đó là tên máy chủ của máy đang chạy máy chủ SMTP của bạn. Tại đây, chúng ta có thể chỉ định địa chỉ IP của máy chủ như [https. //www. javatpoint. com] hoặc máy chủ cục bộ. Nó là một tham số tùy chọn
  • Hải cảng. Đó là số cổng mà máy chủ đang lắng nghe các kết nối SMTP. Nó là 25 theo mặc định
  • local_hostname. Nếu máy chủ SMTP đang chạy trên máy cục bộ của bạn, chúng tôi có thể đề cập đến tên máy chủ của máy cục bộ

Phương thức sendmail[] của đối tượng SMTP được sử dụng để gửi thư đến máy mong muốn. Cú pháp được đưa ra dưới đây

Thí dụ

Gửi thư từ gmail

Có những trường hợp email được gửi bằng máy chủ Gmail SMTP. Trong trường hợp này, chúng ta có thể chuyển Gmail làm máy chủ SMTP thay vì sử dụng localhost với cổng 587

Sử dụng cú pháp sau

Tại đây, chúng ta cần đăng nhập vào tài khoản Gmail bằng tên người dùng và mật khẩu Gmail. Với mục đích này, smtplib cung cấp phương thức login[] chấp nhận tên người dùng và mật khẩu của người gửi

Điều này có thể khiến Gmail của bạn yêu cầu bạn cấp quyền truy cập vào các ứng dụng kém an toàn hơn nếu bạn đang sử dụng Gmail. Bạn sẽ cần BẬT tính năng này tạm thời để tính năng này hoạt động

Xem xét ví dụ sau

Thí dụ

Gửi HTML trong email

Chúng tôi có thể định dạng HTML trong tin nhắn bằng cách chỉ định phiên bản MIME, loại nội dung và bộ ký tự để gửi HTML

Hướng dẫn này sẽ giới thiệu về SMTP, một mô-đun Python được sử dụng để gửi thư. Nó cũng sẽ trình bày cách gửi các loại email khác nhau như email văn bản đơn giản, email có tệp đính kèm và email có nội dung HTML

Sau này, tôi sẽ chỉ cho bạn cách

Giới thiệu về SMTP

Giao thức truyền thư đơn giản [SMTP] xử lý việc gửi và định tuyến email giữa các máy chủ thư

Trong Python, mô-đun 

1
40 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à cách tạo một đối tượng SMTP

1
import smtplib
2
 
3
server = smtplib.SMTP[host="host_address" ,port="your_port"]

Tạo và gửi một email đơn giản

Tập lệnh sau sẽ cho phép bạn gửi email qua máy chủ Gmail SMTP. Tuy nhiên, Google sẽ không cho phép đăng nhập qua

1
40 vì Google đã gắn cờ loại đăng nhập này là "kém an toàn". Để giải quyết vấn đề này, hãy truy cập https. //www. Google. com/settings/security/lesssecureapps khi bạn đã đăng nhập vào tài khoản Google của mình và "Cho phép các ứng dụng kém an toàn hơn". Xem ảnh chụp màn hình bên dưới

Chúng tôi sẽ làm theo các bước sau để hoàn thành quá trình này

  • Tạo một đối tượng SMTP để kết nối với máy chủ
  • Đăng nhập vào tài khoản của bạn
  • Xác định tiêu đề thư và thông tin đăng nhập của bạn
  • Tạo một đối tượng thư
    1
    42 và đính kèm các tiêu đề có liên quan vào nó, tôi. e. Từ, Đến và Chủ đề
  • Đính kèm tin nhắn vào đối tượng
    1
    42
  • Cuối cùng, gửi tin nhắn

Quá trình này là đơn giản, như hình dưới đây

1
# import necessary packages

2
 
3
import smtplib
1
import smtplib
2
import smtplib
3
import smtplib
4
import smtplib
import smtplib
6
 
import smtplib
8
import smtplib
9
2
0
2
1
2
2
 
2
4
 
2
6
2
7
2
8
 
 
0
 
1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
3
0
 
3
2
3
3
3
4
3
5
3
6
 
3
8
3
9
server = smtplib.SMTP[host="host_address" ,port="your_port"]
0
server = smtplib.SMTP[host="host_address" ,port="your_port"]
1
server = smtplib.SMTP[host="host_address" ,port="your_port"]
2
 
server = smtplib.SMTP[host="host_address" ,port="your_port"]
4
server = smtplib.SMTP[host="host_address" ,port="your_port"]
5
server = smtplib.SMTP[host="host_address" ,port="your_port"]
6
 
server = smtplib.SMTP[host="host_address" ,port="your_port"]
8
server = smtplib.SMTP[host="host_address" ,port="your_port"]
9
1
0
1
1
1
2
 
1
4________4__

Lưu ý rằng địa chỉ 'Tới' và 'Từ' phải được đưa vào tiêu đề thư một cách rõ ràng

Tạo và gửi email có tệp đính kèm

Trong ví dụ này, chúng tôi sẽ gửi email có tệp đính kèm hình ảnh. Quá trình này tương tự như gửi một email văn bản thuần túy

  • Tạo một đối tượng SMTP để kết nối với máy chủ
  • Đăng nhập vào tài khoản của bạn
  • Xác định tiêu đề thư và thông tin đăng nhập của bạn
  • Tạo một đối tượng thư
    1
    42 và đính kèm các tiêu đề có liên quan vào nó, tôi. e. Từ, Đến và Chủ đề
  • Đọc và đính kèm hình ảnh vào tin nhắn 
    1
    42 đối tượng
  • Cuối cùng, gửi tin nhắn

1
import smtplib
2
import smtplib
1
3
2
3
import smtplib
2
import smtplib
3
import smtplib
4
import smtplib
9
import smtplib
6
2
1
import smtplib
8
 
2
0
 
2
2
 
1
2
4
 
3
2
6
 
5
2
8
 
7
 
0
import smtplib
03
 
2
 
4
 
6
import smtplib
07
 
8
import smtplib
09
3
0
3
2
import smtplib
12
3
4
 
3
6
import smtplib
16
3
8
server = smtplib.SMTP[host="host_address" ,port="your_port"]
1
server = smtplib.SMTP[host="host_address" ,port="your_port"]
0
 
server = smtplib.SMTP[host="host_address" ,port="your_port"]
2
server = smtplib.SMTP[host="host_address" ,port="your_port"]
5
server = smtplib.SMTP[host="host_address" ,port="your_port"]
4
 
server = smtplib.SMTP[host="host_address" ,port="your_port"]
6
server = smtplib.SMTP[host="host_address" ,port="your_port"]
9
server = smtplib.SMTP[host="host_address" ,port="your_port"]
8
1
1
1
0
 
1
2
 
1
4
1
7
1
6
1
9___

Lớp này là một lớp con được sử dụng để tạo các đối tượng thông báo MIME của các loại hình ảnh. Các lớp có sẵn khác bao gồm và

Tạo và gửi email HTML

Điều đầu tiên chúng ta sẽ làm là tạo một mẫu email HTML

Tạo một mẫu HTML

Đây là mã HTML cho mẫu. Nó chứa hai cột bảng, mỗi cột có hình ảnh và nội dung xem trước. Nếu bạn thích một giải pháp chuyên nghiệp, làm sẵn, hãy lấy một số mẫu email tốt nhất. Chúng tôi có một số tùy chọn đáp ứng với các tính năng dễ tùy chỉnh để bắt đầu

1
import smtplib
42
2
import smtplib
44
3
import smtplib
46
import smtplib
2
import smtplib
48
import smtplib
4
import smtplib
50
import smtplib
6
import smtplib
52
import smtplib
8
import smtplib
54
2
0
import smtplib
56
2
2
import smtplib
58
2
4
import smtplib
60
2
6
import smtplib
62
2
8
import smtplib
64
 
0
import smtplib
66
 
2
import smtplib
68
 
4
import smtplib
70
 
6
import smtplib
72
 
8
import smtplib
74
3
0
import smtplib
76
3
2
import smtplib
78
3
4
import smtplib
80
3
6
import smtplib
82
3
8
import smtplib
84
server = smtplib.SMTP[host="host_address" ,port="your_port"]
0
import smtplib
86
server = smtplib.SMTP[host="host_address" ,port="your_port"]
2
import smtplib
88
server = smtplib.SMTP[host="host_address" ,port="your_port"]
4
import smtplib
90
server = smtplib.SMTP[host="host_address" ,port="your_port"]
6
import smtplib
92
server = smtplib.SMTP[host="host_address" ,port="your_port"]
8
 
1
0
import smtplib
96
1
2________

Mẫu cuối cùng sẽ trông như thế này khi hoàn thành

Dưới đây là kịch bản để gửi email có nội dung HTML. Nội dung của mẫu sẽ là thông báo email của chúng tôi

1
import smtplib
2
 
16
3
 
18
import smtplib
2
 
import smtplib
4
 
22
import smtplib
6
 
24
import smtplib
8
 
26
2
0
 
28
2
2
 
30
2
4
 
32
2
6
 
34
2
8
 
36
 
0
 
38
 
2
 
40
 
4
 
42
 
6
 
44
 
8
 
46
3
0
 
48
3
2
 
50
3
4
 
52
3
6
 
54
3
8
 
56
server = smtplib.SMTP[host="host_address" ,port="your_port"]
0
 
58
server = smtplib.SMTP[host="host_address" ,port="your_port"]
2
 
60
server = smtplib.SMTP[host="host_address" ,port="your_port"]
4
 
26
server = smtplib.SMTP[host="host_address" ,port="your_port"]
6
 
64
server = smtplib.SMTP[host="host_address" ,port="your_port"]
8
 
26
1
0
 
26
1
2________4_

Thực thi mã của bạn và nếu không có lỗi xảy ra thì email đã thành công. Bây giờ, hãy truy cập hộp thư đến của bạn và bạn sẽ thấy email của mình dưới dạng nội dung HTML được định dạng độc đáo

Gửi Email Bằng Flask

Phần này sẽ đề cập đến việc cấu hình và gửi email bằng Flask-Mail bằng giao thức SMTP. Flask-Mail là một tiện ích mở rộng cung cấp giao diện đơn giản để thiết lập SMTP với ứng dụng Flask của bạn

Tạo một thư mục dự án có tên là jar_email. Bên trong thư mục dự án, tạo một môi trường ảo và kích hoạt nó

1
server = smtplib.SMTP[host="host_address" ,port="your_port"]
52_______3_______6_______54

Cài đặt Flask và Flask-Mail bằng cách sử dụng

1
50

1
server = smtplib.SMTP[host="host_address" ,port="your_port"]
56_______3_______6_______58

Ngoài ra, hãy tạo một ứng dụng tệp. py. trong ứng dụng. py, hãy bắt đầu bằng cách xác định nhập khẩu của chúng tôi

1
server = smtplib.SMTP[host="host_address" ,port="your_port"]
60_______3_______6_______62

Tiếp theo, xác định một phiên bản ứng dụng Flask

1
server = smtplib.SMTP[host="host_address" ,port="your_port"]
60_______3_______
server = smtplib.SMTP[host="host_address" ,port="your_port"]
62
3
server = smtplib.SMTP[host="host_address" ,port="your_port"]
68

Vì chúng tôi đang sử dụng giao thức SMTP để gửi email bằng Flask, hãy thêm một vài cấu hình như bên dưới.  

1
server = smtplib.SMTP[host="host_address" ,port="your_port"]
60
2
server = smtplib.SMTP[host="host_address" ,port="your_port"]
62
3
___
import smtplib
2
server = smtplib.SMTP[host="host_address" ,port="your_port"]
68
import smtplib
4
import smtplib
6
server = smtplib.SMTP[host="host_address" ,port="your_port"]
78
import smtplib
8
server = smtplib.SMTP[host="host_address" ,port="your_port"]
80
2
0
server = smtplib.SMTP[host="host_address" ,port="your_port"]
82
2
2
server = smtplib.SMTP[host="host_address" ,port="your_port"]
84
2
4_______6_______86_______3_______6_______6_______88

Flask-Mail đi kèm với phiên bản

1
51, quản lý email. Hãy khởi tạo phiên bản
1
51

1
server = smtplib.SMTP[host="host_address" ,port="your_port"]
90

Tiếp theo, tạo một phiên bản tin nhắn và gửi tin nhắn dự định

1
server = smtplib.SMTP[host="host_address" ,port="your_port"]
92_______3_______
server = smtplib.SMTP[host="host_address" ,port="your_port"]
94
3
___
server = smtplib.SMTP[host="host_address" ,port="your_port"]
96
import smtplib
2
import smtplib
4
import smtplib
6
import smtplib
8
1
01
2
0
1
03

Mã đầy đủ cho ứng dụng. py sẽ trông như thế này

1
server = smtplib.SMTP[host="host_address" ,port="your_port"]
60
2
1
07
3
import smtplib
2
server = smtplib.SMTP[host="host_address" ,port="your_port"]
68
import smtplib
4
import smtplib
6
server = smtplib.SMTP[host="host_address" ,port="your_port"]
78
import smtplib
8
server = smtplib.SMTP[host="host_address" ,port="your_port"]
80
2
0
server = smtplib.SMTP[host="host_address" ,port="your_port"]
82
2
2
server = smtplib.SMTP[host="host_address" ,port="your_port"]
84
2
4
server = smtplib.SMTP[host="host_address" ,port="your_port"]
86
2
6
1
23
2
8
 
0
 
2
server = smtplib.SMTP[host="host_address" ,port="your_port"]
90
 
4
server = smtplib.SMTP[host="host_address" ,port="your_port"]
92
 
6
server = smtplib.SMTP[host="host_address" ,port="your_port"]
94
 
8
server = smtplib.SMTP[host="host_address" ,port="your_port"]
96
3
0
3
2
3
4
1
01
3
6
1
03

Phần kết luận

Hướng dẫn này đã trình bày hầu hết những gì cần thiết để gửi email cho ứng dụng của bạn. Có một số API có sẵn để gửi email, chẳng hạn như. g. GửiGrid. Vì vậy, bạn không cần phải bắt đầu lại từ đầu, nhưng điều quan trọng là phải hiểu những điều cơ bản. Để biết thêm thông tin, hãy truy cập tài liệu Python

Smtplib trong Python là gì?

Mô-đun smtplib 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 . Để biết chi tiết về hoạt động của SMTP và ESMTP, hãy tham khảo RFC 821 [Giao thức truyền thư đơn giản] và RFC 1869 [Phần mở rộng dịch vụ SMTP].

Làm cách nào để gửi thư bằng smtplib trong Python?

Ví dụ .
#. /usr/bin/python3
nhập smtplib
sender_mail = 'người gửi@gmail. com'
receivers_mail = ['reciever@gmail. com']
tin nhắn = """Từ. Từ Người %s
Đến. Tới Người %s
Môn học. Gửi email SMTP
Đây là một tin nhắn e-mail thử nghiệm

Smtplib có còn hoạt động không?

Để smtplib hoạt động, cần phải bật cài đặt Cho phép ứng dụng kém an toàn hơn. Tuy nhiên, google cho biết rằng " Vào ngày 30 tháng 5 năm 2022, cài đặt này sẽ không còn nữa . "

Làm cách nào để sử dụng thư viện SMTP trong Python?

Đây là bốn bước cơ bản để gửi email bằng Python. .
Thiết lập máy chủ SMTP và đăng nhập vào tài khoản của bạn
Tạo đối tượng thông báo MIMEMultipart và tải nó với các tiêu đề thích hợp cho các trường From , To và Subject
Thêm nội dung thư của bạn
Gửi tin nhắn bằng đối tượng máy chủ SMTP

Chủ Đề