Hướng dẫn what is ehlo () in python? - ehlo() trong python là gì?

Mã nguồn: lib/smtplib.py Lib/smtplib.py


Mô -đun smtplib xác định một đố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 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 chuyển thư đơn giản) và RFC 1869 (Phần mở rộng dịch vụ SMTP).RFC 821 (Simple Mail Transfer Protocol) and RFC 1869 (SMTP Service Extensions).

Tính khả dụng: Không phải emscripten, không phải wasi.: not Emscripten, not WASI.

Mô -đun này không hoạt động hoặc không có sẵn trên các nền tảng Webassugging wasm32-emscriptenwasm32-wasi. Xem các nền tảng Webassugging để biết thêm thông tin.WebAssembly platforms for more information.

classSmtplib.smtp (host = '', port = 0, local_hostname = none, [thời gian chờ,] Source_address = none) ¶ smtplib.SMTP(host='', port=0, local_hostname=None, [timeout, ]source_address=None)

Một ví dụ SMTP đóng gói 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 connect() đượ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 socket.getfqdn(). Nếu cuộc gọi connect() trả về bất cứ điều gì khác ngoài mã thành công, thì SMTPConnectError 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,

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()
0 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 lần lượt là
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()
1 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,

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()
2 và
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()
3. Một ví dụ được bao gồm dưới đây.

Lớp SMTP hỗ trợ câu lệnh

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()
5. Khi được sử dụng như thế này, lệnh SMTP
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()
6 được tự động phát hành khi câu lệnh
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()
5 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

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()
8 với các đối số
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()
9 và smtplib0, trong đó smtplib0 là byte sắp được gửi đến máy chủ từ xa.auditing event
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()
8 with arguments
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()
9 and smtplib0, where smtplib0 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

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()
5 đã được thêm vào.Support for the
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()
5 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 smtplib3 để ngăn chặn việc tạo ổ cắm không chặnIf the timeout parameter is set to be zero, it will raise a smtplib3 to prevent the creation of a non-blocking socket

classsmtplib.smtp_ssl (host = '', port = 0, local_hostname = none, keyfile = none, certfile = none, [timeout,] bối cảnh = none, source_address = none) ¶smtplib.SMTP_SSL(host='', port=0, local_hostname=None, keyfile=None, certfile=None, [timeout, ]context=None, source_address=None)

Một ví dụ smtplib4 hoạt động chính xác giống như các trường hợp của SMTP. smtplib4 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 smtplib7 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à nguồn_address có cùng ý nghĩa như chúng trong lớp SMTP. Bối cảnh, cũng tùy chọn, có thể chứa smtplib9 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 smtplib3 để ngăn chặn việc tạo ổ cắm không chặnIf the timeout parameter is set to be zero, it will raise a smtplib3 to prevent the creation of a non-blocking socket

classsmtplib.smtp_ssl (host = '', port = 0, local_hostname = none, keyfile = none, certfile = none, [timeout,] bối cảnh = none, source_address = none) ¶smtplib.LMTP(host='', port=LMTP_PORT, local_hostname=None, source_address=None[, timeout])

Một ví dụ smtplib4 hoạt động chính xác giống như các trường hợp của SMTP. smtplib4 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 smtplib7 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à nguồn_address có cùng ý nghĩa như chúng trong lớp SMTP. Bối cảnh, cũng tùy chọn, có thể chứa smtplib9 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.

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.The optional timeout parameter was added.

classSmtplib.lmtp (host = '', port = lmtp_port, local_hostname = none, source_address = none [, thời gian chờ]) ¶

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 connect() 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 SMTP. Để 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 ‘/. smtplib.SMTPException

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.4: SmtPexception trở thành lớp con của wasm32-emscripten3SMTPException became subclass of wasm32-emscripten3

ngoại lệsmtplib.SMTPServerDisconnected

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 SMTP trước khi kết nối nó với máy chủ.

ngoại lệ smtplib.SMTPResponseException

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 wasm32-emscripten6 của lỗi và thuộc tính wasm32-emscripten7 được đặt thành thông báo lỗi.

ngoại lệsmtplib.SMTPSenderRefused

Đị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ệ wasm32-emscripten8, điều này đặt ‘người gửi vào chuỗi mà máy chủ SMTP từ chối.

ngoại lệ smtplib.SMTPRecipientsRefused

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 wasm32-emscripten9, đây là từ điển chính xác giống như wasm32-wasi0 trả về.

ngoại lệsmtplib.SMTPDataError

Máy chủ SMTP từ chối chấp nhận dữ liệu tin nhắn.

ngoại lệMtplib.SMTPConnecterRsmtplib.SMTPConnectError

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ệMtplib.smtpheloerror¶ smtplib.SMTPHeloError

Máy chủ từ chối tin nhắn wasm32-wasi1 của chúng tôi.

ngoại lệ smtplib.SMTPNotSupportedError

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ệ smtplib.SMTPAuthenticationError

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 SMTP

Một ví dụ SMTP có các phương pháp sau:

Smtp.set_debuglevel (cấp) ¶set_debuglevel(level)

Đặt mức đầu ra gỡ lỗi. Giá trị 1 hoặc wasm32-wasi3 cho cấp độ dẫn đến các tin nhắn gỡ lỗi cho kết nối và cho tất cả các tin nhắn được gửi đến và nhận từ máy chủ. Giá trị 2 cho kết quả cấp độ trong các tin nhắn này được hẹn giờ.

Đã thay đổi trong phiên bản 3.5: Thêm Debuglevel 2.Added debuglevel 2.

Smtp.docmd (cmd, args = '') ¶docmd(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, wasm32-wasi4 sẽ được nâng lên.

Smtp.connect (host = 'localhost', port = 0) ¶connect(host='localhost', port=0)

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 (wasm32-wasi5) theo sau là một số, hậu tố đó sẽ bị loại bỏ và số được giải thích là số cổng sử dụng. Phương thức này được tự động gọi bởi hàm tạo nếu một máy chủ được chỉ định trong quá trình khởi tạo. Trả về một mã 2 của mã phản hồi và thông báo được gửi bởi máy chủ trong phản hồi kết nối của nó.

Tăng một sự kiện kiểm toán wasm32-wasi6 với các đối số

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()
9, wasm32-wasi8, wasm32-wasi9.auditing event wasm32-wasi6 with arguments
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()
9, wasm32-wasi8, wasm32-wasi9.

Smtp.helo (name = '')helo(name='')

Xác định mình vào máy chủ SMTP bằng wasm32-wasi1. Đối số tên máy chủ mặc định là tên miền đủ điều kiện của máy chủ cục bộ. Thông báo được trả về bởi máy chủ được lưu trữ dưới dạng thuộc tính SMTP1 của đối tượ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

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()
2 khi cần thiết.

Smtp.ehlo (name = '')ehlo(name='')

Xác định mình vào máy chủ ESMTP bằng SMTP3. Đối số tên máy chủ mặc định là tên miền đủ điều kiện của máy chủ cục bộ. Kiểm tra phản hồi cho tùy chọn ESMTP và lưu trữ chúng để sử dụng bởi SMTP4. Cũng đặt một số thuộc tính thông tin: Thông báo được máy chủ trả về được lưu trữ dưới dạng thuộc tính SMTP5, SMTP6 được đặt thành wasm32-wasi3 hoặc SMTP8 tùy thuộc vào việc máy chủ có hỗ trợ ESMTP hay không và SMTP9 sẽ là từ điển có chứa tên của dịch vụ SMTP hỗ trợ và tham số của chúng (nếu có).

Trừ khi bạn muốn sử dụng SMTP4 trước khi gửi thư, không cần phải gọi phương thức này một cách rõ ràng. Nó sẽ được gọi hoàn toàn bởi

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()
2 khi cần thiết.

Smtp.ehlo_or_helo_if_needed () ¶ehlo_or_helo_if_needed()

Phương pháp này gọi connect()2 và/hoặc connect()3 nếu không có lệnh SMTP3 hoặc wasm32-wasi1 trước đó. Nó thử ESMTP SMTP3 đầu tiên.

connect()7

Máy chủ đã không trả lời đúng lời chào wasm32-wasi1.

Smtp.has_extn (tên) ¶has_extn(name)

Trả về wasm32-wasi3 Nếu tên nằm trong tập hợp các phần mở rộng dịch vụ SMTP được máy chủ trả về, SMTP8 khác. Trường hợp bị bỏ qua.

Smtp.verify (địa chỉ) ¶verify(address)

Kiểm tra tính hợp lệ của địa chỉ trên máy chủ này bằng SMTP socket.getfqdn()1. 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 socket.getfqdn()1 để gửi thư rác.

Smtp.login (người dùng, mật khẩu, *, stand_response_ok = true) ¶login(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 SMTP3 hoặc wasm32-wasi1 trước đó, phương pháp này sẽ thử ESMTP SMTP3 trước. Phương pháp này sẽ trả về bình thường nếu xác thực thành công hoặc có thể nâng cao các ngoại lệ sau:

connect()7

Máy chủ đã không trả lời đúng lời chào wasm32-wasi1.

socket.getfqdn()8

Smtp.has_extn (tên) ¶

socket.getfqdn()9

Trả về wasm32-wasi3 Nếu tên nằm trong tập hợp các phần mở rộng dịch vụ SMTP được máy chủ trả về, SMTP8 khác. Trường hợp bị bỏ qua.

connect()1

Smtp.verify (địa chỉ) ¶

Kiểm tra tính hợp lệ của địa chỉ trên máy chủ này bằng SMTP socket.getfqdn()1. 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 connect()0 command, rather than requiring a challenge/response.

Nhiều trang web vô hiệu hóa SMTP socket.getfqdn()1 để gửi thư rác.socket.getfqdn()9 may be raised, and the initial_response_ok parameter was added.

Smtp.login (người dùng, mật khẩu, *, stand_response_ok = true) ¶auth(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 SMTP3 hoặc wasm32-wasi1 trước đó, phương pháp này sẽ thử ESMTP SMTP3 trước. Phương pháp này sẽ trả về bình thường nếu xác thực thành công hoặc có thể nâng cao các ngoại lệ sau:

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 connect()0 không được máy chủ hỗ trợ.

Không tìm thấy phương pháp xác thực phù hợp.

Mỗi phương thức xác thực được hỗ trợ bởi smtplib lần lượt được thử nếu chúng được quảng cáo là được hỗ trợ bởi máy chủ. Xem connect()3 để biết danh sách các phương thức xác thực được hỗ trợ. initing_response_ok được truyền qua connect()3.RFC 4954 “initial response” ASCII SMTPConnectError3 which will be encoded and sent with the connect()0 command as below. If the SMTPConnectError2 does not support an initial response (e.g. because it requires a challenge), it should return SMTPConnectError6 when called with SMTPConnectError7. If initial_response_ok is false, then SMTPConnectError2 will not be called first with SMTPConnectError6.

Đối số từ khóa tùy chọn ban đầu_response_ok chỉ định xem, đối với các phương thức xác thực hỗ trợ nó, một phản hồi ban đầu của Hồi giáo như được chỉ định trong RFC 4954 có thể được gửi cùng với lệnh connect()0, thay vì yêu cầu thử thách/phản hồi.

Đã thay đổi trong phiên bản 3.5: socket.getfqdn()9 có thể được nâng lên và tham số initS_Response_ok đã được thêm vào.

Smtp.Auth (cơ chế, authobject, *, initing_response_ok = true) ¶

Phát hành lệnh SMTP connect()0 cho cơ chế xác thực được chỉ định và xử lý phản hồi thử thách thông qua AuthObject.

Cơ chế chỉ định cơ chế xác thực nào sẽ được sử dụng làm đối số cho lệnh connect()0; Các giá trị hợp lệ là những giá trị được liệt kê trong phần tử SMTPConnectError0 của SMTP9.starttls(keyfile=None, certfile=None, context=None)

AuthObject phải là một đối tượng có thể gọi được lấy một đối số duy nhất tùy chọn:

data = authObject (thử thách = none)

Nếu đối số từ khóa tùy chọn ban đầu_response_ok là đúng, SMTPConnectError2 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 SMTPConnectError3 sẽ được mã hóa và gửi với lệnh connect()0 như dưới đây. Nếu SMTPConnectError2 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ả về SMTPConnectError6 khi được gọi với SMTPConnectError7. Nếu init_response_ok là sai, thì SMTPConnectError2 sẽ không được gọi đầu tiên với SMTPConnectError6.

Nếu kiểm tra phản hồi ban đầu trả về SMTPConnectError6 hoặc nếu init_response_ok là sai, SMTPConnectError2 sẽ được gọi để xử lý phản hồi thử thách của máy chủ; Đối số thách thức mà nó được thông qua sẽ là một

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()
02. Nó sẽ trả về dữ liệu ASCII SMTPConnectError3 sẽ được mã hóa và gửi đến máy chủ.

connect()7

Máy chủ đã không trả lời đúng lời chào wasm32-wasi1.

socket.getfqdn()9

Máy chủ không hỗ trợ tiện ích mở rộng StartTls.

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()
29

Hỗ 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

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()
30 và chỉ báo tên máy chủ (xem
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()
31).The method now supports hostname check with
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()
30 and Server Name Indicator (see
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()
31).

Đã 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 socket.getfqdn()9 thay vì cơ sở connect()1.The error raised for lack of STARTTLS support is now the socket.getfqdn()9 subclass instead of the base connect()1.

Smtp.sendmail (from_addr, to_addrs, msg, mail_options = (), rcpt_options = ())sendmail(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ư

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()
34) sẽ được sử dụng trong các lệnh
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()
35 dưới dạng mail_options. Tùy chọn ESMTP (chẳng hạn như các lệnh
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()
36) nên được sử dụng với tất cả các lệnh
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()
37 có thể được truyền dưới dạng RCPT_OPTES. .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
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()
34) to be used in
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()
35 commands as mail_options. ESMTP options (such as
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()
36 commands) that should be used with all
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()
37 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
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()
38,
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()
39 and
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()
40 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.

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()
41 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 thành byte bằng codec ASCII và các ký tự Lone

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()
42 và
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()
43 được chuyển đổi thành
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()
44 ký tự. Một chuỗi byte không được sửa đổi.

Nếu không có lệnh SMTP3 hoặc wasm32-wasi1 trước đó, phương pháp này sẽ thử ESMTP SMTP3 trước. Nếu máy chủ thực hiện ESMTP, kích thước tin nhắn và mỗi tùy chọn được chỉ định sẽ được chuyển cho nó (nếu tùy chọn nằm trong tính năng đặt quảng cáo máy chủ). Nếu SMTP3 thất bại, wasm32-wasi1 sẽ được thử và các tùy chọn ESMTP bị triệt tiêu.

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

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()
50 đượ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:

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()
51

Tất cả những người nhận đã bị từ chối. Không ai có thư. Thuộc tính wasm32-emscripten9 của đối tượng ngoại lệ là một từ điển với thông tin về những người nhận bị từ chối (như người nhận được trả về khi ít nhất một người nhận được chấp nhận).

connect()7

Máy chủ đã không trả lời đúng lời chào wasm32-wasi1.

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()
55

Máy chủ đã không chấp nhận From_addr.

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()
56

Máy chủ trả lời với mã lỗi bất ngờ (trừ việc từ chối người nhận).

socket.getfqdn()9

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()
50 đã đượ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: hỗ trợ

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()
50 được thêm vào và socket.getfqdn()9 có thể được nâng lên nếu
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()
50 được chỉ định nhưng máy chủ không hỗ trợ nó.
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()
50 support added, and socket.getfqdn()9 may be raised if
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()
50 is specified but the server does not support it.

Smtp.send_message (tin nhắn, from_addr = none, to_addrs = none, mail_options = (), rcpt_options = ())send_message(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

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()
2 với thông báo được đại diện bởi một đối tượng
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()
63. Các đối số có ý nghĩa tương tự như đối với
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()
2, ngoại trừ MSG là đối tượng
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()
65.

Nếu From_addr là SMTPConnectError6 hoặc TO_ADDR là SMTPConnectError6,

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()
68 đ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à mặt khác vào 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 smtplib3 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 smtplib3 is raised, since there is no way to unambiguously detect the most recent set of headers.

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()
68 tuần tự hóa MSG bằng cách sử dụng
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()
71 với
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()
44 dưới dạng Linesep và gọi
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()
2 để truyền thông điệp kết quả. Bất kể các giá trị của FRY_ADDR và ​​TO_ADDRS,
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()
68 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ợ
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()
50, lỗi
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()
76 được nêu ra. Mặt khác,
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()
65 được tuần tự hóa với bản sao
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()
78 của nó với thuộc tính
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()
79 được đặt thành wasm32-wasi3 và
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()
50 và
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()
82 đượ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 (

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()
50).Support for internationalized addresses (
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()
50).

Smtp.quit ()quit()

Kết thúc phiên SMTP và đóng kết nối. Trả về kết quả của lệnh SMTP

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()
6.

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

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()
85,
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()
86,
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()
87,
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()
88,
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()
37 và
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()
90 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ụ SMTP

Ví 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()

Starttls () python là gì?

Một số giao thức sử dụng một lệnh có tên starttls cho mục đích này. Nó chủ yếu nhằm mục đích đối phó với giám sát thụ động. Ví dụ gửi email đến tài khoản MailTrap với TLS cơ hội. StartTls đặt kết nối đến máy chủ SMTP vào chế độ TLS.primarily intended as a countermeasure to passive monitoring. The example sends an email to a Mailtrap account with opportunistic TLS. The starttls puts the connection to the SMTP server into TLS mode.

Việc sử dụng SMTP trong Python là gì?

Giao thức chuyể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, trong đó 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 nghe SMTP hoặc ESMTP.handles sending e-mail and routing e-mail between mail servers. Python provides smtplib module, which defines an SMTP client session object that can be used to send mail to any Internet machine with an SMTP or ESMTP listener daemon.

Sự khác biệt giữa SMTP và ESMTP là gì?

SMTP là viết tắt của "Giao thức vận chuyển thư đơn giản" .esmtp, viết tắt của "Giao thức vận chuyển thư đơn giản nâng cao" bổ sung nhiều cải tiến cho giao thức SMTP.Chúng bao gồm bảo mật, xác thực và các thiết bị khác được thiết kế để lưu băng thông và bảo vệ máy chủ.GMS hỗ trợ một số lượng lớn các tùy chọn SMTP nâng cao. ESMTP, which stands for "Enhanced Simple Mail Transport Protocol" adds many enhancements to the SMTP protocol. These include security, authentication and other devices designed to save bandwidth and protect servers. GMS supports a large number of Enhanced SMTP options.

SMTP đại diện cho cái gì?

Giao thức chuyển thư đơn giản Giao thức chuyển thư đơn giản / tên đầy đủ NULL