黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

python實現(xiàn)郵件發(fā)送功能

系統(tǒng) 2304 0

什么是POP3、SMTP和MAP?

POP3是Post Office Protocol 3的簡稱,即郵局協(xié)議的第三個版本,他是規(guī)定怎樣將個人計算機連接到Internet的郵件服務(wù)器和下載電子郵件的協(xié)議。它是因特網(wǎng)電子郵件的第一個離線協(xié)議的標準。POP3允許用戶從服務(wù)器上把郵件存儲到本地計算機上,同時刪除保存在郵件服務(wù)器上的郵件,而POP3服務(wù)器則是遵循POP3協(xié)議的接受郵件服務(wù)器,用來接受電子郵件。

SMTP的全稱是Simple Mail Transfer Protocol,即簡單的郵件傳輸協(xié)議。它是一組用于從源地址到目的地的地址傳輸郵件的規(guī)范,通過它控制郵件的中轉(zhuǎn)方式。SMTP協(xié)議屬于TCP/IP協(xié)議簇,它幫助每臺計算機在發(fā)送或者中轉(zhuǎn)信件時找到下個目的地。SMTP服務(wù)器就是遵循SMTP協(xié)議的發(fā)送郵件服務(wù)器。

SMTP認證,簡單來說就是要求必須在提供了賬戶名和密碼之后才能登陸SMTP服務(wù)器。

IMAP全稱是Iternet Mail Access Protocol,即交互式郵件存取協(xié)議,它是跟POP3類似的郵件訪問標準協(xié)議之一。不同的是,開啟了IMAP后,你在電子郵件客戶端收取的郵件仍然保存在服務(wù)器上,同時在客戶端上的操作都會反饋到服務(wù)器上,如:刪除郵件、標記郵件等,服務(wù)器上的郵件也會做相應(yīng)的動作。無論從瀏覽器登陸還是客戶端登陸郵箱看到的郵件以及狀態(tài)都是一致的。

我們使用網(wǎng)易的163郵箱來發(fā)送郵件,所以我們需要先將163郵箱的POP3/SMTP/IMAP都給打開。

具體步驟是:設(shè)置->POP3/SMTP/IMAP->設(shè)置POP3/SMTP/IMAP,點擊復選框時郵箱會要求你設(shè)置授權(quán)碼,設(shè)置授權(quán)碼,然后一定要將授權(quán)碼給記住,后面會用到。郵箱設(shè)置好后我們就開始編寫代碼發(fā)送郵件。

首先引入我們需要導入的庫及包

            
import smtplib
import email
# MIME 多郵件擴充協(xié)議
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
          

然后設(shè)置郵箱的域名,端口,發(fā)送者郵箱,接收者郵箱

            
host = 'smtp.163.com' # 使用163郵箱
port = '465' # 163郵箱服務(wù)器的端口號
sender = 'xxxxxx@163.com' # 發(fā)送者的郵箱
password = 'xxxxxx' # 授權(quán)碼
receiver = 'xxxxxx' # 接收者的郵箱,可以為其他類型的郵箱,如果是多個接收者請傳入列表
          

接下來構(gòu)建文本郵箱的主體

            
?body = 'xxx' # 你要發(fā)送的郵件的內(nèi)容
subject = 'xxx' # 你要發(fā)送的郵件的標題
 
# plain表示郵件內(nèi)容的類型,文本類型默認是plain。utf-8表示內(nèi)容的編碼格式。
message = MIMEText(body, 'plain', 'utf-8')
message['From'] = sender # 發(fā)送者
message['To'] = receiver # 接收者
message['Subject'] = subject # 郵件標題
          

接下來我們獲取SMTP協(xié)議的證書,登陸我們的郵箱發(fā)送郵件

            
# 獲取SMTP協(xié)議證書
email_clint = smtplib.SMTP_SSL(host, port)
# 登陸郵箱,這里也是用授權(quán)碼登陸郵箱的
login_result = email_clint.login(sender, password)
# 發(fā)送郵件
email_clent.sendmail(from_addr=sender, to_addrs=receiver, msg=message.as_string())
# 關(guān)閉郵件發(fā)送客戶端
email_client.close()
          

其實這里我們可以打印login_result,如果返回的狀態(tài)碼是235則證明郵件發(fā)送成功。

下面是發(fā)送文本郵件的全部代碼。

            
import email
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
 
class SendEmail(object):
 def __init__(self):
  self.host = 'smtp.163.com'
  self.port = '465'
  self.sender = 'xxxxxx@163.com'
  self.password = 'xxxxxx'
 
 def send_email(self, receiver, subject='', body=''):
  message = MIMEText(body, 'plain', 'utf-8')
  message['From'] = self.sender
  message['To'] = receiver
  message['Subject'] = subject
 
  try:
   email_clint = smtplib.SMTP_SSL(self.host, self.port)
   print('獲取證書成功')
   login_result = email_clint.login(self.sender, self.password)
   print('開始登陸')
   if login_result[0] == 235:
    print('登陸成功')
    email_clint.sendmail(self.sender, receiver, message.as_string())
    print('郵件發(fā)送成功')
   else:
    print('登陸失敗')
  except Exception as e:
   print('發(fā)生錯誤', e)
          

下面介紹發(fā)送HTML格式內(nèi)容的郵件以及向郵件內(nèi)容中添加圖片。

其實發(fā)送HTML格式內(nèi)容的郵件很簡單,只需將發(fā)送郵件的內(nèi)容格式改為html就行了,像這樣

            
message = MIMEText('
            

學習使我快樂

', 'html', 'utf-8')

還有使用內(nèi)嵌的方法向郵件內(nèi)容中加入文本或者圖片

            
# related 表示使用內(nèi)嵌資源的形式,將郵件發(fā)送給對方
message = MIMEMultipart('related')
          

然后向郵件中添加內(nèi)容,如果把圖片嵌入到郵件正文中只需在HTML中通過引用src="cid:x"即可。x代表圖片的編號可以是數(shù)字也可是是字符串

            
# ---------------發(fā)送文本-----------------
message_html = MIMEText('
            

學習使我快樂

','html','utf-8') # 將郵件內(nèi)容 裝入到郵件信息當中去 message.attach(message_html) # ---------------發(fā)送圖片----------------- # rb 讀取二進制文件(圖片是二進制文件) image_data = open('1.gif','rb') # 設(shè)置讀取獲取的二進制數(shù)據(jù) message_image = MIMEImage(image_data.read()) # 關(guān)閉剛才打開的文件 image_data.close() message_image.add_header('Content-ID','small') # 添加圖片文件到郵件信息當中去 message.attach(message_image)

然后構(gòu)建郵件的主體,發(fā)送郵件即可

            
message['From'] = sender # 發(fā)送者
message['To'] = receiver # 接收者
message['Subject'] = subject # 郵件標題
?
email_clint = smtplib.SMTP_SSL(host, port)
login_result = email_clint.login(sender, password)
email_clent.sendmail(from_addr=sender, to_addrs=receiver, msg=message.as_string())
email_client.close()
          

我們經(jīng)常會向郵件中添加附件,下面介紹添加附件的方式

添加附件也是使用內(nèi)嵌的方式添加的

            
# 對二進制文件需要設(shè)置默認的編碼形式
# 對于MIMEText()來說 默認的編碼形式就是base64
# 如果對于二進制文件來說 沒有設(shè)置base64進行編碼 則附件的就會呈現(xiàn)亂碼
# --------------------添加圖片附件----------------------
message_image = MIMEText(open('1.gif','rb').read(),'base64','utf-8')
# 設(shè)置附件在郵件中的名字
message_image['Content-disposition'] = 'attachment;filename="happy.gif"'
message.attach(message_image)
 
# --------------------添加xlsx表格附件---------------
message_xlsx = MIMEText(open('table.xlsx','rb').read(),'base64','utf-8')
# 設(shè)置附件在郵件當中的名字
message_xlsx['Content-Disposition'] = 'attachment;filename="test.xlsx"'
message.attach(message_xlsx)
          

然后發(fā)送郵件即可。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論