使用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中文網其他相關文章!