標籤:開啟 還需要 郵箱 self 包括 需要 設定 from ade
在發送郵件之前需要先設定郵件開啟了SMTP等功能,對於163還需要擷取授權碼
這裡設定儲存修改
這裡擷取授權碼
完整封裝發送郵件類
import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerfrom email.utils import parseaddr,formataddrclass 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---網路之郵件發送