Python實現自動化郵件發送過程詳解
使用Python實現自動化郵件發送,可以讓你擺脫繁瑣的重復性業務,可以節省非常多的時間。
操作前配置(以較為復雜的QQ郵箱舉例,其他郵箱操作類似)
單擊設置-賬號,滑倒下方協議處,開啟IMAP/SMTP協議(IMAP,即Internet Message Access Protocol(互聯網郵件訪問協議),可以通過這種協議從郵件服務器上獲取郵件的信息、下載郵件等。IMAP與POP類似,都是一種郵件獲取協議。)
(ps.開啟需要驗證)
記住端口號,後續寫代碼發送郵件時候需要
生成授權碼,前期配置完成
授權碼:iwmha*****ndcei (大傢換成自己的,我怕大傢把我郵箱發炸瞭)
端口號:465
123
我們首先來發送一個簡單的郵件
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]
參數說明:
from_addr: 郵件發送者地址。
to_addrs: 字符串列表,郵件發送地址。
msg: 發送消息
這裡要註意一下第三個參數,msg是字符串,表示郵件。我們知道郵件一般由標題,發信人,收件人,郵件內容,附件等構成,發送郵件的時候,要註意msg的格式。這個格式就是smtp協議中定義的格式。
import smtplib from email.mime.text import MIMEText ##輸入發件人郵箱名稱 email_name = '你的郵箱' # 輸入用戶授權碼 passwd = '你的授權碼' # 收件人郵箱 msg_to = '想要發給誰' # 郵件的正文 content = "我想吃饅頭" # 設置郵件 msg = MIMEText(content) msg['subject']='你想吃什麼' #設置發件人 msg['From']= '你隔壁的小王' # 這個參數設置要發給誰 msg['To'] = msg_to #連接服務器 s= smtplib.SMTP_SSL('smtp.qq.com',465) # 登陸我的郵箱 s.login(email_name,passwd) # 發送郵箱 s.sendmail(email_name,msg_to,msg.as_string()) print("發送成功")
發送成功,我們在接收的郵箱裡收到瞭這封郵件。
怎麼發送帶附件的郵件
發送帶附件的郵件,首先要創建MIMEMultipart()實例,然後構造附件,如果有多個附件,可依次構造,最後利用smtplib.smtp發送。
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart ##輸入發件人郵箱名稱 email_name = '***' # 輸入用戶授權碼 passwd = '***' # 收件人郵箱 msg_to = '***' # 郵件的正文 content = "我想吃饅頭" # 設置郵件 content_part = MIMEText(content) #設置附件內容對象 msg = MIMEMultipart() msg['subject']='你想吃什麼' #設置發件人 msg['From']= '你隔壁的小王' # 這個參數設置要發給誰 msg['To'] = msg_to #添加附件內容 msg.attach(content_part) #*********************構造附件*********** # 文本類型的附件 att1 = MIMEText(open("./data/學習目標.txt",'rb').read(),'plain','utf-8') # 添加頭信息,我告訴服務器,我現在是一個附件 att1['Content-Type']='application/octet-stream' att1.add_header("Content-Disposition",'attachment',filename=('gbk',"",'學習目標.txt')) # 把內容添加到郵件中 msg.attach(att1) # 圖片附件 att2 = MIMEText(open("小豬豬.gif",'rb').read(),'plain','utf-8') # 添加頭信息,我告訴服務器,我現在是一個附件 att2['Content-Type']='application/octet-stream' att2.add_header("Content-Disposition",'attachment',filename=('gbk',"",'小豬豬.gif')) # 把內容添加到郵件中 msg.attach(att2) #連接服務器 s= smtplib.SMTP_SSL('smtp.qq.com',465) # 登陸我的郵箱 s.login(email_name,passwd) # 發送郵箱 s.sendmail(email_name,msg_to,msg.as_string()) print("發送成功")
可以看到附件發送成功,但是我們在工作中發郵件都是批量發,還涉及到抄送人,那麼我們應該怎麼做那?
#抄送人設置 acc_to = ['***] # 這個參數設置要發給誰 msg['To'] = ';'.join(msg_to) #設置抄送人 msg['Cc'] = ';'.join(acc_to)
隻需要我們對抄送人進行設置即可
是不是一下就實現批量瞭
帶圖片郵件的發送
# 郵件正文 content =""" <html> <body> <h1>今日匯報</h1> <img src='cid:imageid' alt='imageid'> <p>哈哈哈</p> <img src='cid:imageid2' alt='imageid2'> 這是結尾 </body> </html> """ image_path = { "imageid":"小豬豬.png", "imageid2":"***.png" } # 這是發件人的郵箱名稱 email_name ='***' # 這是是用戶授權碼,qq郵箱有。 其他郵箱一般直接寫你的密碼 passwd = '***' # 收件人郵箱 多人發送 msg_to = ['***] # 抄送人 acc_to = [***] from_name ='***' subject ='自動化辦公開始啦' att_file=['./data/學習目標.txt','評論詞雲圖.png','自動化辦公.ipynb','小豬豬.gif','***.jpg'] send_email(email_name = email_name ,passwd=passwd ,msg_to=msg_to ,acc_to=acc_to ,content=content ,image_html=True ,image_path = image_path ,subject=subject ,from_name = from_name ,att_file=att_file )
以上就是Python實現自動化郵件發送過程詳解的詳細內容,更多關於Python自動化郵件發送的資料請關註WalkonNet其它相關文章!