python之如何傳送郵件

2021-08-22 16:27:01 字數 3200 閱讀 5170

今天來講一下python如何傳送郵件,以163和qq郵箱為例。

要想實現使用python**傳送郵件,郵箱必須開啟pop3/smtp協議,開啟之後郵箱會給你生成乙個授權碼

注意:這個授權碼一定要記住,以後使用**實現傳送郵件登陸的時候,使用的都是這個授權碼

qq郵箱的pop3/smtp協議開啟在 設定》賬戶 中

163郵箱的pop3/smtp協議開啟方式

與qq不同的是,163郵箱開啟之後需要自己設定客戶端授權密碼

pop3/smtp協議開啟之後開始使用python**實現傳送郵件

第一步:引入模組

# smtp  ****** mail tranfer protocol 簡單郵件傳輸協議

# lib library

import smtplib

import email

# mime 多用於郵件擴充協議

from email.mime.text import mimetext

from email.mime.image import mimeimage

from email.mime.multipart import mimemultipart

第二步:設定發件資訊注意:如果傳送郵件用的是qq郵箱,郵件的網域名稱應改為qq.com

# 設定郵件的網域名稱

host = 'smtp.163.com'

# 設定發件人郵箱 發件人郵箱必須設定開始smtp協議

# 設定郵件發件人

message['from'] = '發件人郵箱'

# 設定郵件收件人

message['to'] = '收件人郵箱'

# 設定郵件標題

message['subject'] = '這個是標題'

第三步:新增郵件內容,主題,內容,附件等related 表示使用內嵌資源的形式將郵件傳送給對方

message = mimemultipart('related')
傳送純文字

# 引數

# 1.傳送的內容 內容必須是字串

# 2.內容的型別 文字型別預設為plain

# 3.內容的編碼方式 使用utf-8進行編碼

message_text = mimetext('今天是星期六,好開心','plain','utf-8')

# 將郵件內容裝入到郵件資訊中去

message.attach(message_text)

# rb 讀取二進位制檔案

image_data = open('名字加字尾','rb')

# 設定讀取獲取的二進位制資料

message_image= mimeimage(image_data.read())

image_data.close()

# 新增檔案到郵件資訊當中去

message.attach(message_image)

# ------------------傳送的第二種方法

message_image = mimetext(open('名字加字尾','rb').read(),'base64','utf-8')

message_image['content-disposition'] = 'attachment;filename="新名字"'

message.attach(message_image)

傳送檔案

message_xlsx = mimetext(open('要傳送的檔名.xlsx','rb').read(),'base64','utf-8')

# 設定檔案在附件當中的名字

message_xlsx['content-disposition'] = 'attachment;filename="test1.xlsx"'

message.attach(message_xlsx)

將乙個xlsx文件作為內容傳送到對方的郵箱讀取excle檔案時,是以rb形式進行讀取的,是乙個以二進位制內容,對二進位制檔案需要設定預設的編碼形式,對於mimetext()來說 預設的編碼形式就是base64,如果對於二進位制檔案來說 沒有設定base64進行編碼,則附件的就會呈現亂碼

第三步:登入郵箱傳送郵件

注意!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

密碼千萬不要寫郵箱的密碼,要寫郵箱的授權碼

# 獲取簡單郵件傳輸協議的證書

email_client = smtplib.smtp_ssl()

# 設定發件人郵箱的網域名稱和埠 埠為465

email_client.connect(host,'465')

result = email_client.login(message['from'],'授權碼')

# 傳送郵件

email_client.sendmail(from_addr=message['from'],to_addrs=message['to'],msg=message.as_string())

# 關閉郵件傳送客戶端

email_client.close()

python之傳送郵件

coding utf 8 傳送html文字郵件 import smtplib from email.mime.text import mimetext mailto list mail host smtp.163.com 設定伺服器 mail user 使用者名稱 mail pass 口令 mail...

python之 郵件傳送

smtplib模組 time模組 用於時間延遲 email模組中 header,mime text,multipart 的使用 header 用於定義mail頭部資訊 mime.text 用於定義郵件正文文字功能 mime.multipart 用於定義郵件附件功能 usr bin python3 c...

python之郵件傳送

環境配置 window 10 python 3.7.4 確保您的郵箱已經開通smtp服務 傳送郵件的庫 import smtplib 郵件文字 from email.mime.text import mimetext smtp伺服器位址 smtpsever smtp.qq.com 發郵件位址 sen...