Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menyelesaikan 'sambungan SMTP AUTH tidak disokong oleh pelayan' Ralat Semasa Menghantar E-mel dengan Gmail dan Python?

Bagaimana untuk Menyelesaikan 'sambungan SMTP AUTH tidak disokong oleh pelayan' Ralat Semasa Menghantar E-mel dengan Gmail dan Python?

Susan Sarandon
Susan Sarandonasal
2024-11-30 15:11:12749semak imbas

How to Resolve

Menghantar E-mel dengan Gmail Menggunakan Python

Apabila cuba menghantar e-mel menggunakan perpustakaan SMTP Python melalui Gmail, anda mungkin menghadapi ralat yang menyatakan bahawa SMTP AUTH tidak disokong oleh pelayan.

Ralat Penerangan:

Ralat "sambungan SMTP AUTH tidak disokong oleh pelayan" berlaku apabila anda cuba untuk mengesahkan dengan pelayan SMTP menggunakan kaedah log masuk() tanpa mendayakan penyulitan TLS.

Penyelesaian Menggunakan TLS:

Untuk menyelesaikan isu ini, dayakan penyulitan TLS dengan mengikuti ini langkah:

import smtplib

# Enable TLS encryption
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()

Setelah TLS didayakan, anda boleh mengesahkan dengan pelayan menggunakan kaedah log masuk().

Menggunakan Port 465 dengan SSL:

Sebagai alternatif, anda boleh menggunakan Port 465 dengan penyulitan SSL. Untuk ini, anda perlu mencipta objek SMTP_SSL:

import smtplib

server_ssl = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server_ssl.ehlo() # optional, called by login()
server_ssl.login(gmail_user, gmail_pwd)

Perhatikan bahawa pelayan SSL tidak menyokong atau memerlukan penyulitan TLS, jadi jangan panggil server_ssl.starttls().

Contoh Skrip untuk Menghantar E-mel:

Berikut ialah versi Python yang dipertingkatkan skrip disediakan dalam soalan:

def send_email(user, pwd, recipient, subject, body):

    FROM = user
    TO = recipient if isinstance(recipient, list) else [recipient]
    SUBJECT = subject
    TEXT = body

    # Prepare actual message
    message = """From: %s\nTo: %s\nSubject: %s\n\n%s
    """ % (FROM, ", ".join(TO), SUBJECT, TEXT)

    try:
        server = smtplib.SMTP("smtp.gmail.com", 587)
        server.ehlo()
        server.starttls()
        server.login(user, pwd)
        server.sendmail(FROM, TO, message)
        server.close()
        print('successfully sent the mail')
    except:
        print("failed to send mail")

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan 'sambungan SMTP AUTH tidak disokong oleh pelayan' Ralat Semasa Menghantar E-mel dengan Gmail dan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn