Python發送郵件,以前使用的126郵箱都正常,可是今天換成了hotmail,一直報這個錯:html
smtplib.SMTPException: SMTP AUTH extension not supported by server
我以前的代碼以下:服務器
def sendmail(receivers,mailtitle,mailcontent): ret=True # try: # msg=MIMEText(mailcontent,'plain','utf-8') msg = MIMEText(mailcontent, 'html', 'utf-8') msg['From']=formataddr(["我是小黑",sender]) # 括號裏的對應發件人郵箱暱稱、發件人郵箱帳號 # msg['To']=formataddr(["收件人暱稱",receivers]) # 括號裏的對應收件人郵箱暱稱、收件人郵箱帳號 msg['Subject']=mailtitle # 郵件的主題,也能夠說是標題 server = None #判斷是否爲SSL鏈接 if flag_mail_ssl: server=smtplib.SMTP_SSL(mail_host, mail_port) # 發件人郵箱中的SMTP服務器 else: server=smtplib.SMTP(mail_host, mail_port)# server.login(mail_user, mail_pass) # 括號中對應的是發件人郵箱帳號、郵箱密碼 server.sendmail(sender,receivers,msg.as_string()) # 括號中對應的是發件人郵箱帳號、收件人郵箱帳號、發送郵件 server.quit()# 關閉鏈接 # except Exception as e:# 若是 try 中的語句沒有執行,則會執行下面的 ret=False # ret=False return ret
上網上搜了一下,要在login以前,加入以下兩行代碼:ui
server.ehlo() # 向Gamil發送SMTP 'ehlo' 命令 server.starttls()
這樣就能夠了。最終代碼爲:code
def sendmail(receivers,mailtitle,mailcontent): ret=True # try: # msg=MIMEText(mailcontent,'plain','utf-8') msg = MIMEText(mailcontent, 'html', 'utf-8') msg['From']=formataddr(["我是小黑",sender]) # 括號裏的對應發件人郵箱暱稱、發件人郵箱帳號 # msg['To']=formataddr(["收件人暱稱",receivers]) # 括號裏的對應收件人郵箱暱稱、收件人郵箱帳號 msg['Subject']=mailtitle # 郵件的主題,也能夠說是標題 server = None #判斷是否爲SSL鏈接 if flag_mail_ssl: server=smtplib.SMTP_SSL(mail_host, mail_port) # 發件人郵箱中的SMTP服務器 else: server=smtplib.SMTP(mail_host, mail_port)# server.ehlo() # 向Gamil發送SMTP 'ehlo' 命令 server.starttls() server.login(mail_user, mail_pass) # 括號中對應的是發件人郵箱帳號、郵箱密碼 server.sendmail(sender,receivers,msg.as_string()) # 括號中對應的是發件人郵箱帳號、收件人郵箱帳號、發送郵件 server.quit()# 關閉鏈接 # except Exception as e:# 若是 try 中的語句沒有執行,則會執行下面的 ret=False # ret=False return ret