ホームページ >バックエンド開発 >Python チュートリアル >Gmail と Python でメールを送信する際の「SMTP AUTH 拡張機能がサーバーでサポートされていません」エラーを解決する方法
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 サイトの他の関連記事を参照してください。