1. 程式人生 > >python---網絡之郵件發送

python---網絡之郵件發送

__main__ pan 保存 eth 一個 tp服務器 __name__ alt 以及

在發送郵件之前需要先設置郵件開啟了SMTP等功能,對於163還需要獲取授權碼

技術分享圖片技術分享圖片這裏設置保存修改

技術分享圖片這裏獲取授權碼

完整封裝發送郵件類

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr,formataddr

class SendEmail:
    #設置基本信息,包括發件人,發件人密碼,收件人郵箱,以及發件箱服務器地址
    #發送方
    Send_Email = "[email protected]
" #發送方密碼 Send_Pwd = "ld19966257460"#對於163這裏就不是密碼,而是授權碼 #接收方 Recv_Email = "[email protected]" #設置發件方服務器地址 SMTP_Server = smtp.sina.cn #設置發件方服務器端口 SMTP_Ser_Port=25 def __int__(self): pass @classmethod def _format_address(cls,text): #按照空格解析 發件人發送新浪信
<18904190363@sina.cn> name, address = parseaddr(text) return formataddr((Header(name, "utf-8").encode(), address)) #註意formataddr是元組 @classmethod def send_email_text(cls): # 第一個參數:郵件正文 # 第二個參數:郵件類型 純文本 # 第三個參數:編碼 msg = MIMEText("測試smtp郵件發送功能
", "plain", "utf-8") #這裏註意了,大多數錯誤出在這裏,當直接使用Header(xxx,utf-8)時會出錯,需要進行解析,重組 #=?utf-8?b?5p2l6IeqMTYz55qE5LiA5bCB6YKu5Lu2?= <18904190363@163.com> msg["From"] = SendEmail._format_address("發件人發送新浪信 <%s>" % SendEmail.Send_Email)#預留空格,在昵稱和地址間 msg["To"] = SendEmail._format_address("收件人由163接收 <%s>"%SendEmail.Recv_Email) msg["Subject"] = Header("測試郵箱功能", "utf-8").encode()#主題 try: server = smtplib.SMTP(SendEmail.SMTP_Server, SendEmail.SMTP_Ser_Port) server.login(SendEmail.Send_Email, SendEmail.Send_Pwd) # 登錄smtp服務器 server.sendmail(SendEmail.Send_Email, [SendEmail.Recv_Email], msg.as_string()) # 發送郵件 server.quit() print("郵件發送成功") except Exception as e: print(e) print("郵件發送失敗") if __name__ =="__main__": SendEmail.send_email_text()

python---網絡之郵件發送