Python發送郵件報錯: smtplib.SMTPException: SMTP AUTH extension not supported by server

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
相關文章
相關標籤/搜索