首頁 >後端開發 >Python教學 >使用 Gmail 和 Python 發送電子郵件時如何解決「伺服器不支援 SMTP AUTH 擴充」錯誤?

使用 Gmail 和 Python 發送電子郵件時如何解決「伺服器不支援 SMTP AUTH 擴充」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-11-30 15:11:12662瀏覽

How to Resolve

使用Python 透過Gmail 發送電子郵件

嘗試使用Python 的SMTP 庫透過Gmail 發送電子郵件時,您可能會遇到錯誤,指出SMTP伺服器不支援AUTH。

錯誤說明:

當您嘗試在不啟用TLS 加密的情況下使用login() 方法向SMTP 伺服器進行驗證時,會出現錯誤「伺服器不支援SMTP AUTH 擴充」。

使用TLS 解決方案:

要解決此問題,請按照以下步驟啟用TLS 加密步驟:

import smtplib

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

啟用TLS 後,您可以使用login() 方法向伺服器進行身份驗證。

透過 SSL 使用連接埠 465:

或者,您可以使用帶有 SSL 加密的連接埠 465。為此,您需要建立一個 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)

請注意,SSL 伺服器不支援或不需要 TLS 加密,因此不要呼叫 server_ssl.starttls()。

發送電子郵件的範例腳本:

這是一個改進版本問題中提供的Python腳本:

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")

以上是使用 Gmail 和 Python 發送電子郵件時如何解決「伺服器不支援 SMTP AUTH 擴充」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn