ホームページ >バックエンド開発 >Python チュートリアル >Gmail と Python でメールを送信する際の「SMTP AUTH 拡張機能がサーバーでサポートされていません」エラーを解決する方法

Gmail と Python でメールを送信する際の「SMTP AUTH 拡張機能がサーバーでサポートされていません」エラーを解決する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-30 15:11:12665ブラウズ

How to Resolve

Python を使用して Gmail でメールを送信する

Gmail 経由で Python の SMTP ライブラリを使用してメールを送信しようとすると、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。