Hướng dẫn python starttls is required to send mail - Bắt buộc phải có python starttls để gửi thư
Tôi muốn gửi email với tập lệnh Python bằng cách sử dụng smtplib của Python. Show Kịch bản chỉ nên gửi email, nếu có thể thiết lập kết nối được mã hóa đến máy chủ. Để mã hóa kết nối với cổng 587, tôi muốn sử dụng starttls. Sử dụng một số ví dụ tôi đã viết mã sau:
Tin nhắn, máy chủ, cổng, người dùng, mật khẩu là các biến trong tập lệnh của tôi. Tôi có hai câu hỏi:
[Edit] @Tintin giải thích, rằng
Đối với cài đặt mật mã, tôi đã sử dụng một số mã của một phiên bản gần đây của Lưu ý: Trong mã của câu hỏi ban đầu của tôi là một sai lầm. Đây là phiên bản chính xác của dòng liên quan:
[\Chỉnh sửa] Mã nguồn: lib/smtplib.py Lib/smtplib.py Mô -đun Một ví dụ 0 gói gọn kết nối SMTP. Nó có các phương pháp hỗ trợ một tiết mục đầy đủ của các hoạt động SMTP và ESMTP. Nếu các tham số máy chủ và cổng tùy chọn được đưa ra, phương thức SMTP 1 được gọi với các tham số đó trong quá trình khởi tạo. Nếu được chỉ định, local_hostname được sử dụng làm FQDN của máy chủ cục bộ trong lệnh Helo/Ehlo. Mặt khác, tên máy chủ cục bộ được tìm thấy bằng cách sử dụng 2. Nếu cuộc gọi 1 trả về bất cứ điều gì khác ngoài mã thành công, thì 4 sẽ được nâng lên. Tham số thời gian chờ tùy chọn chỉ định thời gian chờ tính bằng giây để chặn các hoạt động như nỗ lực kết nối (nếu không được chỉ định, cài đặt thời gian chờ mặc định toàn cầu sẽ được sử dụng). Nếu thời gian chờ hết hạn, 5 sẽ được nâng lên. Tham số Source_address tùy chọn cho phép liên kết với một số địa chỉ nguồn cụ thể trong một máy có nhiều giao diện mạng và/hoặc với một số cổng TCP nguồn cụ thể. Nó có một 2-tuple (máy chủ, cổng), để ổ cắm liên kết với địa chỉ nguồn của nó trước khi kết nối. Nếu bị bỏ qua (hoặc nếu máy chủ hoặc cổng tương ứng 6 và/hoặc 0), hành vi mặc định của HĐH sẽ được sử dụng.Để sử dụng bình thường, bạn chỉ nên yêu cầu các phương thức khởi tạo/kết nối, 7 và 8. Một ví dụ được bao gồm dưới đây.Lớp 0 hỗ trợ câu lệnh 0. Khi được sử dụng như thế này, lệnh SMTP 1 được tự động ban hành khi câu lệnh 0 thoát ra. Ví dụ.:>>> from smtplib import SMTP >>> with SMTP("domain.org") as smtp: ... smtp.noop() ... (250, b'Ok') >>> Tất cả các lệnh sẽ tăng một sự kiện kiểm toán 3 với các đối số 4 và 5, trong đó 5 là byte sắp được gửi đến máy chủ từ xa.auditing event 3 with arguments 4 and 5, where 5 is the bytes about to be sent to the remote host.Thay đổi trong phiên bản 3.3: Hỗ trợ cho câu lệnh 0 statement was added.Thay đổi trong phiên bản 3.3: Đối số Source_Address đã được thêm vào.source_address argument was added. Mới trong phiên bản 3.5: Phần mở rộng SMTputF8 (RFC 6531) hiện được hỗ trợ.The SMTPUTF8 extension (RFC 6531) is now supported. Thay đổi trong phiên bản 3.9: Nếu tham số thời gian chờ được đặt là 0, nó sẽ tăng 8 to prevent the creation of a non-blocking socket Lớp ________ 8 ________ 30 (host = '', port = 0, local_hostname = none, keyfile = none, certfile = none, [timeout,] bối cảnh = none, source_address = none) ¶(host='', port=0, local_hostname=None, keyfile=None, certfile=None, [timeout, ]context=None,
source_address=None)¶Một ví dụ >>> from smtplib import SMTP >>> with SMTP("domain.org") as smtp: ... smtp.noop() ... (250, b'Ok') >>>1 hoạt động chính xác giống như các trường hợp của 0. >>> from smtplib import SMTP >>> with SMTP("domain.org") as smtp: ... smtp.noop() ... (250, b'Ok') >>>1 nên được sử dụng cho các tình huống cần SSL từ đầu kết nối và sử dụng >>> from smtplib import SMTP >>> with SMTP("domain.org") as smtp: ... smtp.noop() ... (250, b'Ok') >>>4 là không phù hợp. Nếu máy chủ không được chỉ định, máy chủ cục bộ được sử dụng. Nếu cổng bằng không, cổng SMTP-Over-SSL tiêu chuẩn (465) được sử dụng. Các đối số tùy chọn local_hostname, thời gian chờ và Source_address có cùng ý nghĩa như chúng trong lớp 0. Bối cảnh, cũng tùy chọn, có thể chứa >>> from smtplib import SMTP >>> with SMTP("domain.org") as smtp: ... smtp.noop() ... (250, b'Ok') >>>6 và cho phép định cấu hình các khía cạnh khác nhau của kết nối an toàn. Vui lòng đọc các cân nhắc bảo mật cho các thực tiễn tốt nhất.Security considerations for best practices. Keyfile và Certfile là một thay thế kế thừa cho bối cảnh và có thể chỉ ra một tệp chuỗi chứng chỉ và khóa chứng chỉ riêng được định dạng PEM cho kết nối SSL. Thay đổi trong phiên bản 3.3: Bối cảnh đã được thêm vào.context was added. Thay đổi trong phiên bản 3.3: Đối số Source_Address đã được thêm vào.source_address argument was added. Thay đổi trong phiên bản 3.9: Nếu tham số thời gian chờ được đặt là 0, nó sẽ tăng 8 to prevent the creation of a non-blocking socket Lớp ________ 8 ________ 39 (host = '', port = lmtp_port, local_hostname = none, source_address = none [, thời gian chờ])(host='', port=LMTP_PORT, local_hostname=None, source_address=None[, timeout])¶Giao thức LMTP, rất giống với ESMTP, dựa trên ứng dụng khách SMTP tiêu chuẩn. Nó phổ biến để sử dụng ổ cắm Unix cho LMTP, vì vậy phương thức 1 của chúng tôi phải hỗ trợ nó cũng như máy chủ lưu trữ thông thường: máy chủ cổng. Các đối số tùy chọn Local_hostname và Source_Address có cùng ý nghĩa như chúng trong lớp 0. Để chỉ định ổ cắm UNIX, bạn phải sử dụng đường dẫn tuyệt đối cho máy chủ, bắt đầu bằng một ‘/.Xác thực được hỗ trợ, sử dụng cơ chế SMTP thông thường. Khi sử dụng ổ cắm UNIX, LMTP thường không hỗ trợ hoặc yêu cầu bất kỳ xác thực nào, nhưng số dặm của bạn có thể khác nhau. Thay đổi trong phiên bản 3.9: Tham số thời gian chờ tùy chọn đã được thêm vào.The optional timeout parameter was added. Một lựa chọn tốt của các trường hợp ngoại lệ cũng được định nghĩa: Lớp con của import smtplib def prompt(prompt): return input(prompt).strip() fromaddr = prompt("From: ") toaddrs = prompt("To: ").split() print("Enter message, end with ^D (Unix) or ^Z (Windows):") # Add the From: and To: headers at the start! msg = ("From: %s\r\nTo: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs))) while True: try: line = input() except EOFError: break if not line: break msg = msg + line print("Message length is", len(msg)) server = smtplib.SMTP('localhost') server.set_debuglevel(1) server.sendmail(fromaddr, toaddrs, msg) server.quit()4 là lớp ngoại lệ cơ sở cho tất cả các trường hợp ngoại lệ khác được cung cấp bởi mô -đun này. Thay đổi trong phiên bản 3.4: SmtPexception trở thành lớp con của import smtplib def prompt(prompt): return input(prompt).strip() fromaddr = prompt("From: ") toaddrs = prompt("To: ").split() print("Enter message, end with ^D (Unix) or ^Z (Windows):") # Add the From: and To: headers at the start! msg = ("From: %s\r\nTo: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs))) while True: try: line = input() except EOFError: break if not line: break msg = msg + line print("Message length is", len(msg)) server = smtplib.SMTP('localhost') server.set_debuglevel(1) server.sendmail(fromaddr, toaddrs, msg) server.quit()4 Ngoại lệ ________ 8 ________ 47¶ Ngoại lệ này được nâng lên khi máy chủ bất ngờ ngắt kết nối hoặc khi một nỗ lực được thực hiện để sử dụng thể hiện ____10 trước khi kết nối nó với máy chủ. Ngoại lệ ________ 8 ________ 50¶Lớp cơ sở cho tất cả các trường hợp ngoại lệ bao gồm mã lỗi SMTP. Các ngoại lệ này được tạo trong một số trường hợp khi máy chủ SMTP trả về mã lỗi. Mã lỗi được lưu trữ trong thuộc tính Địa chỉ người gửi bị từ chối. Ngoài các thuộc tính được đặt trên tất cả các ngoại lệ Tất cả các địa chỉ người nhận từ chối. Các lỗi cho mỗi người nhận có thể truy cập thông qua thuộc tính Máy chủ SMTP từ chối chấp nhận dữ liệu tin nhắn. Ngoại lệ ________ 8 ________ 63¶Lỗi xảy ra trong quá trình thiết lập kết nối với máy chủ. Ngoại lệ ________ 8 ________ 65¶Máy chủ từ chối tin nhắn Lệnh hoặc tùy chọn cố gắng không được máy chủ hỗ trợ. Mới trong phiên bản 3.5. Ngoại lệ ________ 8 ________ 70¶Xác thực SMTP đã sai. Rất có thể máy chủ đã không chấp nhận kết hợp tên người dùng/mật khẩu được cung cấp. Xem thêm RFC 821 - Giao thức chuyển thư đơn giản - Simple Mail Transfer ProtocolĐịnh nghĩa giao thức cho SMTP. Tài liệu này bao gồm mô hình, quy trình vận hành và chi tiết giao thức cho SMTP. RFC 1869 - Phần mở rộng dịch vụ SMTP - SMTP Service ExtensionsĐịnh nghĩa của các tiện ích mở rộng ESMTP cho SMTP. Điều này mô tả một khung để mở rộng SMTP với các lệnh mới, hỗ trợ phát hiện động các lệnh do máy chủ cung cấp và xác định một vài lệnh bổ sung. Đối tượng SMTPMột ví dụ 0 có các phương pháp sau: ________ 72 ________ 73 (Cấp)(level)¶Đặt mức đầu ra gỡ lỗi. Giá trị 1 hoặc Đã thay đổi trong phiên bản 3.5: Thêm Debuglevel 2.Added debuglevel 2. ________ 72 ________ 76 (cmd, args = '') ¶(cmd, args='')¶Gửi lệnh CMD đến máy chủ. Các đối số tùy chọn tranh luận chỉ đơn giản là được nối với lệnh, được phân tách bằng một không gian. Điều này trả về 2-tuple bao gồm mã phản hồi số và dòng phản hồi thực tế (các phản hồi đa dòng được nối thành một dòng dài.) Trong hoạt động bình thường, không cần thiết phải gọi phương pháp này một cách rõ ràng. Nó được sử dụng để thực hiện các phương pháp khác và có thể hữu ích để kiểm tra các tiện ích mở rộng riêng. Nếu kết nối với máy chủ bị mất trong khi chờ trả lời, Kết nối với một máy chủ trên một cổng nhất định. Mặc định là kết nối với máy chủ cục bộ tại cổng SMTP tiêu chuẩn (25). Nếu tên máy chủ kết thúc bằng dấu hai chấm ( Tăng một sự kiện kiểm toán 4, smtplib. 3, smtplib. 4.auditing event smtplib. 1 with arguments 4, smtplib. 3, smtplib. 4. ________ 72 ________ 86 (name = '')(name='')¶Xác định mình vào máy chủ SMTP bằng Trong hoạt động bình thường, không cần thiết phải gọi phương pháp này một cách rõ ràng. Nó sẽ được gọi hoàn toàn bởi 7 khi cần thiết. ________ 72 ________ 91 (name = '')(name='')¶Xác định mình vào máy chủ ESMTP bằng Trừ khi bạn muốn sử dụng 7 khi cần thiết. ________ 72 ________ 102 ()()¶Phương pháp này gọi 03 và/hoặc 04 nếu không có lệnh SMTP 2 hoặc ssl.create_default_context() 6 trước đó. Nó thử ESMTP SMTP 2 đầu tiên. 08Máy chủ đã không trả lời đúng lời chào Trả về Kiểm tra tính hợp lệ của địa chỉ trên máy chủ này bằng SMTP 16. Trả về một tuple bao gồm mã 250 và địa chỉ RFC 822 đầy đủ (bao gồm cả tên người) nếu địa chỉ người dùng hợp lệ. Mặt khác, trả về mã lỗi SMTP từ 400 trở lên và chuỗi lỗi.RFC 822 address (including human name) if the user address is valid. Otherwise returns an SMTP error code of 400 or greater and an error string.Ghi chú Nhiều trang web vô hiệu hóa SMTP 16 để gửi thư rác. ________ 72 ________ 119 (người dùng, mật khẩu, *, init_response_ok = true) ¶(user,
password, *, initial_response_ok=True)¶Đăng nhập vào một máy chủ SMTP yêu cầu xác thực. Các đối số là tên người dùng và mật khẩu để xác thực. Nếu không có lệnh 08Máy chủ đã không trả lời đúng lời chào 25________ 72 ________ 111 (tên) ¶ 26Trả về 28________ 72 ________ 115 (địa chỉ) ¶ Kiểm tra tính hợp lệ của địa chỉ trên máy chủ này bằng SMTP 16. Trả về một tuple bao gồm mã 250 và địa chỉ RFC 822 đầy đủ (bao gồm cả tên người) nếu địa chỉ người dùng hợp lệ. Mặt khác, trả về mã lỗi SMTP từ 400 trở lên và chuỗi lỗi.Ghi chúRFC 4954 can be sent along with the 27 command, rather than requiring a challenge/response.Nhiều trang web vô hiệu hóa SMTP 26 may be raised, and the initial_response_ok
parameter was added. ________ 72 ________ 119 (người dùng, mật khẩu, *, init_response_ok = true) ¶(mechanism, authobject, *, initial_response_ok=True)¶Đăng nhập vào một máy chủ SMTP yêu cầu xác thực. Các đối số là tên người dùng và mật khẩu để xác thực. Nếu không có lệnh Máy chủ đã không chấp nhận kết hợp tên người dùng/mật khẩu. Lệnh 27 không được máy chủ hỗ trợ.
Nếu đối số từ khóa tùy chọn ban đầu_response_ok là đúng, 41 sẽ được gọi đầu tiên mà không có đối số. Nó có thể trả về phản hồi ban đầu của RFC 4954, ASCII 42 sẽ được mã hóa và gửi với lệnh 27 như dưới đây. Nếu 41 không hỗ trợ phản hồi ban đầu (ví dụ: vì nó đòi hỏi một thách thức), nó sẽ trả lại 45 khi được gọi với 46. Nếu ban đầu_response_ok là sai, thì 41 sẽ không được gọi đầu tiên với 45.RFC 4954 “initial response” ASCII 42 which will be encoded and sent with the 27 command as below. If the 41 does not support an initial response (e.g. because it requires a challenge), it should return 45 when called with 46. If
initial_response_ok is false, then 41 will not be called first with 45.Nếu kiểm tra phản hồi ban đầu trả về 45 hoặc nếu init_response_ok là sai, 41 sẽ được gọi để xử lý phản hồi thử thách máy chủ; Đối số thách thức mà nó được thông qua sẽ là một 51. Nó sẽ trả về dữ liệu ASCII 42 sẽ được mã hóa và gửi đến máy chủ Base64.Lớp 0 cung cấp 54 cho các cơ chế 55, 56 và 57; Chúng được đặt tên là 58, 59 và 60 tương ứng. Tất cả đều yêu cầu các thuộc tính 61 và 62 của ví dụ 0 được đặt thành các giá trị thích hợp.Mã người dùng thường không cần gọi trực tiếp 39, nhưng thay vào đó có thể gọi phương thức 65, lần lượt thử từng cơ chế trên, theo thứ tự được liệt kê. 39 được tiếp xúc để tạo điều kiện cho việc thực hiện các phương pháp xác thực chưa (hoặc chưa) được hỗ trợ trực tiếp bởi smtplib .Mới trong phiên bản 3.5. ________ 72 ________ 169 (keyfile = none, certfile = none, bối cảnh = không) ¶(keyfile=None, certfile=None, context=None)¶Đặt kết nối SMTP trong chế độ TLS (bảo mật lớp vận chuyển). Tất cả các lệnh SMTP theo sau sẽ được mã hóa. Sau đó, bạn nên gọi lại 03.Nếu Keyfile và Certfile được cung cấp, chúng được sử dụng để tạo 71.Tham số ngữ cảnh tùy chọn là một đối tượng 71; Đây là một giải pháp thay thế cho việc sử dụng Keyfile và Certfile và nếu được chỉ định cả Keyfile và Certfile phải là 45.Nếu không có lệnh 08Máy chủ đã không trả lời đúng lời chào 26Máy chủ không hỗ trợ tiện ích mở rộng StartTls. 80Hỗ trợ SSL/TLS không có sẵn cho trình thông dịch Python của bạn. Thay đổi trong phiên bản 3.3: Bối cảnh đã được thêm vào.context was added. Đã thay đổi trong phiên bản 3.4: Phương thức hiện hỗ trợ kiểm tra tên máy chủ bằng 81 and Server Name Indicator (see
82).Đã thay đổi trong phiên bản 3.5: Lỗi được nêu ra vì thiếu hỗ trợ startTLS hiện là lớp con 26 subclass instead of the base
28. ________ 72 ________ 186 (from_addr, to_addrs, msg, mail_options = (), rcpt_options = ())(from_addr, to_addrs, msg, mail_options=(),
rcpt_options=())¶Gửi thư. Các đối số bắt buộc là chuỗi từ địa chỉ RFC 822, danh sách các chuỗi RFC 822 đến địa chỉ (một chuỗi trần sẽ được coi là danh sách với 1 địa chỉ) và chuỗi tin nhắn. Người gọi có thể vượt qua danh sách các tùy chọn ESMTP (chẳng hạn như 87) sẽ được sử dụng trong các lệnh 88 dưới dạng mail_options. Các tùy chọn ESMTP (chẳng hạn như các lệnh 89) nên được sử dụng với tất cả các lệnh 90 có thể được truyền dưới dạng RCPT_OPTIDS. .RFC 822 from-address string, a list of
RFC 822 to-address strings (a bare string will be treated as a list with 1 address), and a message string. The caller may pass a list of ESMTP options (such as 87) to be used in 88 commands as mail_options. ESMTP options (such as 89 commands) that should be used with all 90 commands can be passed as rcpt_options. (If you need to use
different ESMTP options to different recipients you have to use the low-level methods such as 91, 92 and 93 to send the message.)Ghi chú Các tham số FROT_ADDR và TO_ADDRS được sử dụng để xây dựng phong bì thông báo được sử dụng bởi các tác nhân vận chuyển. 94 không sửa đổi các tiêu đề tin nhắn theo bất kỳ cách nào.MSG có thể là một chuỗi chứa các ký tự trong phạm vi ASCII hoặc chuỗi byte. Một chuỗi được mã hóa cho các byte bằng codec ASCII và các ký tự Lone 95 và 96 được chuyển đổi thành 97 ký tự. Một chuỗi byte không được sửa đổi.Nếu không có lệnh Phương thức này sẽ trả về bình thường nếu thư được chấp nhận cho ít nhất một người nhận. Nếu không nó sẽ tăng một ngoại lệ. Đó là, nếu phương pháp này không nêu ra một ngoại lệ, thì ai đó sẽ nhận được thư của bạn. Nếu phương thức này không nêu ra một ngoại lệ, nó sẽ trả về một từ điển, với một mục cho mỗi người nhận bị từ chối. Mỗi mục chứa một bộ mã của mã lỗi SMTP và thông báo lỗi đi kèm được gửi bởi máy chủ. Nếu 03 được bao gồm trong mail_options và máy chủ hỗ trợ nó, từ_addr và to_addrs có thể chứa các ký tự không phải ASCII.Phương pháp này có thể tăng các ngoại lệ sau: 04Tất cả những người nhận đã bị từ chối. Không ai có thư. Thuộc tính 08Máy chủ đã không trả lời đúng lời chào 08Máy chủ đã không chấp nhận From_addr. 09Máy chủ trả lời với mã lỗi bất ngờ (trừ việc từ chối người nhận). 26 03 đã được đưa ra trong mail_options nhưng không được máy chủ hỗ trợ.
Trừ khi có ghi chú khác, kết nối sẽ được mở ngay cả sau khi một ngoại lệ được nâng lên. Đã thay đổi trong phiên bản 3.2: MSG có thể là một chuỗi byte.msg may be a byte string. Đã thay đổi trong phiên bản 3.5: 03 support added, and 26 may be raised if 03 is specified but the server does not support it. ________ 72 ________ 216 (tin nhắn, từ_addr = none, to_addrs = none(msg, from_addr=None, to_addrs=None, mail_options=(),
rcpt_options=())¶
Đây là một phương thức tiện lợi để gọi 7 với thông báo được đại diện bởi một đối tượng 18. Các đối số có ý nghĩa tương tự như đối với 7, ngoại trừ MSG là đối tượng 20.Nếu From_addr là 45 hoặc TO_ADDR là 45, 23 điền vào các đối số đó với các địa chỉ được trích xuất từ các tiêu đề của MSG như được chỉ định trong RFC 5322: FRY_ADDR được đặt thành trường nếu nó có mặt, và khác với trường. TO_ADDRS kết hợp các giá trị (nếu có) của các trường, và các trường từ MSG. Nếu chính xác một bộ tiêu đề xuất hiện trong tin nhắn, các tiêu đề thông thường sẽ bị bỏ qua và các tiêu đề được sử dụng thay thế. Nếu thông báo chứa nhiều hơn một bộ tiêu đề, một 8 sẽ được nêu ra, vì không có cách nào để phát hiện rõ ràng bộ tiêu đề gần đây nhất.RFC 5322:
from_addr is set to the field if it is present, and otherwise to the field. to_addrs combines the values (if any) of the , , and fields from msg. If exactly one set of headers appear in the message, the regular headers are ignored and the headers are used instead. If the message contains more than one set of headers, a 8 is raised, since there is no way
to unambiguously detect the most recent set of headers. 23 tuần tự hóa MSG bằng cách sử dụng 26 với 97 dưới dạng Linesep và gọi 7 để truyền thông điệp kết quả. Bất kể các giá trị của FRY_ADDR và TO_ADDRS, 23 không truyền bất kỳ hoặc tiêu đề nào có thể xuất hiện trong MSG. Nếu bất kỳ địa chỉ nào trong From_ADDR và TO_ADDRS đều chứa các ký tự không phải ASCII và máy chủ không quảng cáo hỗ trợ 03, lỗi 31 được nêu ra. Mặt khác, 20 được tuần tự hóa bằng bản sao 33 của nó với thuộc tính 34 được đặt thành smtplib 4 và 03 và 37 được thêm vào mail_options.Mới trong phiên bản 3.2. Mới trong phiên bản 3.5: Hỗ trợ cho các địa chỉ quốc tế hóa ( 03). ________ 72 ________ 240 ()()¶Kết thúc phiên SMTP và đóng kết nối. Trả về kết quả của lệnh SMTP 1.Các phương pháp cấp thấp tương ứng với các lệnh SMTP/ESMTP tiêu chuẩn 42, 43, 44, 45, 90 và 47 cũng được hỗ trợ. Thông thường những thứ này không cần phải được gọi trực tiếp, vì vậy chúng không được ghi nhận ở đây. Để biết chi tiết, tham khảo mã mô -đun.Ví dụ SMTPVí dụ này nhắc nhở người dùng cho các địa chỉ cần thiết trong phong bì tin nhắn (‘đến các địa chỉ và từ các địa chỉ của Google) và thông báo sẽ được gửi. Lưu ý rằng các tiêu đề được bao gồm trong tin nhắn phải được bao gồm trong tin nhắn như đã nhập; Ví dụ này không thực hiện bất kỳ quá trình xử lý của các tiêu đề RFC 822. Cụ thể, các địa chỉ ’đến và‘ từ các địa chỉ từ trên mạng phải được đưa vào các tiêu đề tin nhắn một cách rõ ràng.RFC 822 headers. In particular, the ‘To’ and ‘From’ addresses must be included in the message headers explicitly. import smtplib def prompt(prompt): return input(prompt).strip() fromaddr = prompt("From: ") toaddrs = prompt("To: ").split() print("Enter message, end with ^D (Unix) or ^Z (Windows):") # Add the From: and To: headers at the start! msg = ("From: %s\r\nTo: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs))) while True: try: line = input() except EOFError: break if not line: break msg = msg + line print("Message length is", len(msg)) server = smtplib.SMTP('localhost') server.set_debuglevel(1) server.sendmail(fromaddr, toaddrs, msg) server.quit() Python starttls là gì?StartTls là một lệnh giao thức được sử dụng để thông báo cho máy chủ email rằng ứng dụng email muốn nâng cấp từ kết nối không an toàn lên một kết nối an toàn bằng TLS hoặc SSL. StartTls được sử dụng với SMTP và IMAP, trong khi POP3 sử dụng lệnh hơi khác nhau để mã hóa, STLS.a protocol command used to inform the email server that the email client wants to upgrade from an insecure connection to a secure one using TLS or SSL. StartTLS is used with SMTP and IMAP, while POP3 uses the slightly different command for encryption, STLS.
Làm thế nào để tôi SMTP trong Python?Hướng dẫn: Cách gửi email bằng SMTP trong Python.. Thiết lập tài khoản Gmail để gửi email của bạn..... Chuyển đến Cài đặt tài khoản và cho phép các ứng dụng ít an toàn hơn truy cập tài khoản..... Nhập Smtplib..... Để tạo kết nối an toàn, bạn có thể sử dụng smtp_ssl () với 465 cổng hoặc .. Bạn có thể sử dụng Python để gửi email không?Python cung cấp một thư viện để gửi email- SMTP LIB.SMTPLIB, tạo ra một đối tượng phiên khách hàng chuyển giao thư đơn giản được sử dụng để gửi email đến bất kỳ ID email hợp lệ nào trên Internet.Số cổng được sử dụng ở đây là '587'.Và nếu bạn muốn gửi thư bằng một trang web khác ngoài Gmail.. “smtplib” creates a Simple Mail Transfer Protocol client session object which is used to send emails to any valid email id on the internet. The Port number used here is '587'. And if you want to send mail using a website other than Gmail.
Ehlo () trong Python là gì?Tên máy chủ ehlo (name) để xác định chính startTls () đặt kết nối với máy chủ SMTP vào chế độ TLS.getReply () Nhận trả lời từ máy chủ bao gồm mã phản hồi máy chủ.Hostname to identify itselfstarttls()puts the connection to the SMTP server into TLS mode. getreply()get a reply from the server consisting of server response code. |