日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

利用Python收发邮件

發布時間:2023/12/10 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用Python收发邮件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一封電子郵件的發送過程:

1. 發件人 -> MUA ?? MUA: 郵件用戶代理 ?? 像Outlook或faxmail之類的軟件就屬于MUA

2. MUA -> MTA ? ? ? MTA:郵件傳輸代理 ? 郵件服務提供商就屬于MTA,比如網易、新浪等

3、MTA->MTA ? ? ? 由于收發郵件雙方的服務提供商可能不同,比如有的是@sina.com, 有的是@163.com? 所有這時就要涉及到 ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MTA之間的轉發

4、MTA->MDA ? ?? MDA:郵件投遞代理 ? 郵件到達MDA后,郵件會存放在目的信箱的某個服務器上。

5、MDA->MUA ? ?? 收件人要取到郵件必須要通過MUA從MDA上把郵件取到電腦本地

所以編寫程序來實現發送和接收郵件,本質上就是:

1. 編寫MUA把郵件發到MTA ? 這個過程使用SMTP協議

2. 編寫MUA從MDA上收郵件 ?? 這個過程使用POP3或者IMAP協議

假設我們現在有兩個郵箱:xxx@163.com ?? xxx@qq.com

大多數的郵件服務商都需要手動打開SMTP發信和POP收信功能,否則只允許在網頁登錄。

(一)從163郵箱發送郵件到qq郵箱

注意:當用程序模擬MUA發送郵件時,要保證163郵箱的SMTP服務開啟,而qq郵箱沒有特殊設置(前提是你用網頁打開郵箱)

網易默認開啟這些服務,但是要成功發送郵件還要開啟“客戶端授權碼”

開啟之后會讓用戶設置一個授權碼

Python對SMTP支持有smtplib和email兩個模塊,email負責構造郵件,smtplib負責發送郵件,可以發送純文本郵件、HTML郵件和帶附件的郵件。

#!/usr/bin/python
#coding=utf-8

from email.mime.text import MIMEText

import smtplib
send_str = '''
你好:
? ? ?收到信息請回復,謝謝!
此致
? ?敬禮
'''
msg = MIMEText(send_str, 'plain', 'utf-8') ? ? #構建發送的正文文本,’send_str‘就是郵件的正文,’plain‘代表純文本

from_addr = 'xxx@163.com' ? ? ?? #發件人信箱
password = 'xxxxx' ? ? ? ? ? ? ? ? ? ? ? #客戶端授權密碼
to_addr = '871990719@qq.com'? #收件人信箱
smtp_server = 'smtp.163.com' ? ? #smtp地址

msg['subject'] = 'python' ? ? ?? #郵件主題

msg['from'] = from_addr ? ? ? #收件人
msg['to'] = to_addr ? ? ? ? ? ?? #發件人

server = smtplib.SMTP_SSL() ? ? #使用SSL方式
server.connect(smtp_server, '465') #注意端口號是465
#server.set_debuglevel(1) ? ? ? #設置debug模式 可以顯示交互過程
server.login(from_addr, password) ? #登錄SMTP服務器
server.sendmail(from_addr, [to_addr], msg.as_string()) ? #發送郵件 ? 可以發送多人所以收件人地址是一個list
server.quit()

注意:通過實驗發現 通過163信箱發送郵件時,“郵件主題” “收件人” “發件人”不能全空,否則發送會失敗

(二)發送帶附件的郵件

使用MIMEMutipart為郵件添加 “發送文本”和“附件”

send_str = '<h1 style="color:red">上岸報考祝您成功</h1>'
textApart = MIMEText(send_str, 'html', 'utf-8') ?? #采用“html”格式發送文本,可以設置文本格式

pdfFileLocation = 'C:\\project\\io_file\\output\\'
pdfName = '報考 .pdf' ? #這里如果采用utf-8編碼,發送郵件中的附件格式不正確
pdfFile = (pdfFileLocation+pdfName).decode('utf-8') ? #這里進行utf-8編碼,以便正確查找文件位置

pdfApart = MIMEApplication(open(pdfFile, 'rb').read())
pdfApart.add_header('Content-Disposition', 'attachment', filename=pdfName)

msg = MIMEMultipart()
msg.attach(textApart)
msg.attach(pdfApart)

msg['subject'] = u'報考崗位分析'
msg['from'] = '上岸報考<exam_success@163.com>' ? #這種設置便于在收件人 的收件箱中顯示發件人信息
msg['to'] = to_addr?

后面發送郵件步驟同(一)

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的利用Python收发邮件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。