欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python如何實(shí)現(xiàn)發(fā)送帶附件的電子郵件

 更新時(shí)間:2023年04月09日 16:22:29   作者:逃逸的卡路里  
SMTP(Simple Mail Transfer Protocol)即簡(jiǎn)單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來(lái)控制信件的中轉(zhuǎn)方式。本文將利用SMTP實(shí)現(xiàn)發(fā)送帶附件的電子郵件,感興趣的可以了解一下

Python SMTP發(fā)送郵件

SMTP(Simple Mail Transfer Protocol)即簡(jiǎn)單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來(lái)控制信件的中轉(zhuǎn)方式。python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對(duì)smtp協(xié)議進(jìn)行了簡(jiǎn)單的封裝。

Python創(chuàng)建 SMTP 對(duì)象語(yǔ)法如下:

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

參數(shù)說(shuō)明:

host: SMTP 服務(wù)器主機(jī)。 你可以指定主機(jī)的ip地址或者域名如:runoob.com,這個(gè)是可選參數(shù)。

port: 如果你提供了host 參數(shù), 你需要指定 SMTP 服務(wù)使用的端口號(hào),一般情況下SMTP端口號(hào)為25。

local_hostname:如果SMTP在你的本機(jī)上,你只需要指定服務(wù)器地址為 localhost 即可。

Python SMTP對(duì)象使用sendmail方法發(fā)送郵件,語(yǔ)法如下:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]

參數(shù)說(shuō)明:

  • from_addr: 郵件發(fā)送者地址。
  • to_addrs: 字符串列表,郵件發(fā)送地址。
  • msg: 發(fā)送消息

這里要注意一下第三個(gè)參數(shù),msg是字符串,表示郵件。我們知道郵件一般由標(biāo)題,發(fā)信人,收件人,郵件內(nèi)容,附件等構(gòu)成,發(fā)送郵件的時(shí)候,要注意msg的格式。這個(gè)格式就是smtp協(xié)議中定義的格式。

導(dǎo)入模塊如果沒(méi)有錯(cuò)誤,表示已經(jīng)安裝成功。

Python發(fā)送帶附件的電子郵件基本思路如下:

1.構(gòu)造MIMEMultipart對(duì)象做為根容器

2.構(gòu)造MIMEText對(duì)象做為郵件顯示內(nèi)容并附加到根容器

3.構(gòu)造MIMEBase對(duì)象做為文件附件內(nèi)容并附加到根容器

a. 讀入文件內(nèi)容并格式化

b. 設(shè)置附件頭

4.設(shè)置根容器屬性

5.得到格式化后的完整文本

6.用smtp發(fā)送郵件

import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import os

# 配置郵箱服務(wù)器信息
mail_host = "smtp.qq.com"   # 設(shè)置服務(wù)器
mail_user = "823634900"     # 用戶(hù)名
mail_pass = "gfgwmfbzmutebajc"  # 口令是授權(quán)碼,不是郵箱密碼

# 配置發(fā)件人、收件人信息
sender = '823634900@qq.com' # 發(fā)件人郵箱
receivers = ['823634900@qq.com']  # 接收郵件,可設(shè)置為多個(gè)郵箱


def message_config():
    """
    配置郵件信息
    :return: 消息對(duì)象
    """
    # 第三方 SMTP 服務(wù)
    content = MIMEText('測(cè)試數(shù)據(jù),注意查收')
    message = MIMEMultipart() # 多個(gè)MIME對(duì)象
    message.attach(content)  # 添加內(nèi)容
    message['From'] = Header("白云", 'utf-8') # 發(fā)件人
    message['To']   = Header("黑土", 'utf-8')  # 收件人
    message['Subject'] = Header('測(cè)試數(shù)據(jù)', 'utf-8') # 主題
    # 添加Excel類(lèi)型附件
    file_name = 'output.xlsx' # 文件名
    file_path = os.path.join(file_name)        # 文件路徑
    xlsx = MIMEApplication(open(file_path, 'rb').read())  # 打開(kāi)Excel,讀取Excel文件
    xlsx["Content-Type"] = 'application/octet-stream'     # 設(shè)置內(nèi)容類(lèi)型
    xlsx.add_header('Content-Disposition', 'attachment', filename=file_name) # 添加到header信息
    message.attach(xlsx)
	# jpg類(lèi)型的附件
    #jpgpart = MIMEApplication(open('beauty.jpg', 'rb').read())
    #jpgpart.add_header('Content-Disposition', 'attachment', filename='beauty.jpg')
    #message.attach(jpgpart)

    # mp3類(lèi)型的附件
    #mp3part = MIMEApplication(open('kenny.mp3', 'rb').read())
    #mp3part.add_header('Content-Disposition', 'attachment', filename='kenny.mp3')
    #message.attach(mp3part)
 
    # pdf類(lèi)型附件
    #part = MIMEApplication(open('foo.pdf', 'rb').read())
    #part.add_header('Content-Disposition', 'attachment', filename="foo.pdf")
    #message.attach(part)
    
    return message
    

def send_mail(message):
    """
    發(fā)送郵件
    :param message: 消息對(duì)象
    :return: None
    """
    try:
        smtpObj = smtplib.SMTP_SSL(mail_host) # 使用SSL連接郵箱服務(wù)器
        smtpObj.login(mail_user, mail_pass)   # 登錄服務(wù)器
        smtpObj.sendmail(sender, receivers, message.as_string()) # 發(fā)送郵件
        print("郵件發(fā)送成功")
    except Exception as e:
        print(e)

if __name__ == "__main__":
    print("開(kāi)始執(zhí)行")
    message = message_config() # 調(diào)用配置方法
    send_mail(message)         # 發(fā)送郵件
    print("執(zhí)行結(jié)束")

相信看到535報(bào)錯(cuò)的同學(xué)代碼編寫(xiě)方面都沒(méi)有問(wèn)題,只是不明白為什么填寫(xiě)了帳號(hào)密碼后還是報(bào)535錯(cuò)誤,這里我以163和QQ郵箱為例,并使用Python講解怎么解決535問(wèn)題

關(guān)于發(fā)郵件報(bào)錯(cuò)535 Error:authentication failed解決方法:

報(bào)錯(cuò):535, b’Login Fail. Please enter your authorization code to login.

解決辦法:

調(diào)用郵箱服務(wù)器來(lái)發(fā)送郵件,我們需要開(kāi)啟POP3/SMTP服務(wù),這時(shí)需要我們?cè)O(shè)置客戶(hù)端授權(quán)碼,這個(gè)授權(quán)碼替代上面代碼部分的mail_pass 即可成功發(fā)送郵件

到此這篇關(guān)于詳解Python如何實(shí)現(xiàn)發(fā)送帶附件的電子郵件的文章就介紹到這了,更多相關(guān)Python發(fā)送帶附件郵件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python MySQLdb Windows下安裝教程及問(wèn)題解決方法

    python MySQLdb Windows下安裝教程及問(wèn)題解決方法

    這篇文章主要介紹了python MySQLdb Windows下安裝教程及問(wèn)題解決方法,本文講解了安裝數(shù)據(jù)庫(kù)mysql、安裝MySQLdb等步驟,需要的朋友可以參考下
    2015-05-05
  • python中的decode()與encode()深入理解

    python中的decode()與encode()深入理解

    這篇文章主要介紹了python中的decode()與encode()函數(shù)詳解,本文通過(guò)實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Python基于jieba分詞實(shí)現(xiàn)snownlp情感分析

    Python基于jieba分詞實(shí)現(xiàn)snownlp情感分析

    情感分析(sentiment analysis)是2018年公布的計(jì)算機(jī)科學(xué)技術(shù)名詞,它可以根據(jù)文本內(nèi)容判斷出所代表的含義是積極的還是負(fù)面的等。本文將通過(guò)jieba分詞實(shí)現(xiàn)snownlp情感分析,感興趣的可以了解一下
    2023-01-01
  • linux下安裝easy_install的方法

    linux下安裝easy_install的方法

    python中的easy_install工具,類(lèi)似于Php中的pear,或者Ruby中的gem,或者Perl中的cpan,那是相當(dāng)?shù)乃嵬崃巳绻胧褂?/div> 2013-02-02
  • Python NumPy數(shù)組裁切和數(shù)據(jù)類(lèi)型的實(shí)現(xiàn)即原理詳解

    Python NumPy數(shù)組裁切和數(shù)據(jù)類(lèi)型的實(shí)現(xiàn)即原理詳解

    這篇文章主要介紹了Python NumPy數(shù)組裁切和數(shù)據(jù)類(lèi)型的實(shí)現(xiàn)即原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-05-05
  • 深入理解numpy廣播機(jī)制

    深入理解numpy廣播機(jī)制

    廣播(Broadcast)是 numpy 對(duì)不同形狀(shape)的數(shù)組進(jìn)行數(shù)值計(jì)算的方式,本文深入理解numpy廣播機(jī)制,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Random 在 Python 中的使用方法

    Random 在 Python 中的使用方法

    random() 方法返回隨機(jī)生成的一個(gè)實(shí)數(shù),它在[0,1)范圍內(nèi)。這篇文章主要介紹了Random 在 Python 中的使用方法,需要的朋友可以參考下
    2018-08-08
  • Python?NLP開(kāi)發(fā)之實(shí)現(xiàn)聊天機(jī)器人

    Python?NLP開(kāi)發(fā)之實(shí)現(xiàn)聊天機(jī)器人

    這篇文章主要為大家介紹了Python如何實(shí)現(xiàn)聊天機(jī)器人,即使用自然語(yǔ)言處理?(NLP)?來(lái)幫助用戶(hù)通過(guò)文本、圖形或語(yǔ)音與?Web?服務(wù)或應(yīng)用進(jìn)行交互,感興趣的可以了解一下
    2023-05-05
  • 基于Python制作炸金花游戲的過(guò)程詳解

    基于Python制作炸金花游戲的過(guò)程詳解

    《詐金花》又叫三張牌,是在全國(guó)廣泛流傳的一種民間多人紙牌游戲。比如JJ比賽中的詐金花(贏三張),具有獨(dú)特的比牌規(guī)則。本文江將通過(guò)Python語(yǔ)言實(shí)現(xiàn)這一游戲,需要的可以參考一下
    2022-02-02
  • Python chardet庫(kù)識(shí)別編碼原理解析

    Python chardet庫(kù)識(shí)別編碼原理解析

    這篇文章主要介紹了python chardet庫(kù)識(shí)別編碼原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論