第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

Python 進(jìn)階應(yīng)用教程

Python 進(jìn)階應(yīng)用教程
01 Python 的對象和類 02 Python 類屬性和實(shí)例屬性 03 Python類的構(gòu)造方法、析構(gòu)方法、實(shí)例方法 04 Python 類的私有屬性和私有方法 05 Python 類的繼承和多繼承 06 Python 類實(shí)戰(zhàn) 07 Python 中的迭代器實(shí)現(xiàn)原理 08 Python 中的迭代器趣味實(shí)踐 09 Python 中的生成器實(shí)現(xiàn)原理 10 Python 中的生成器趣味實(shí)踐 11 Python 中的錯(cuò)誤和異常 12 Python 中的異常處理 13 Python 中的模塊 14 Python 標(biāo)準(zhǔn)庫之 os 模塊 15 Python 標(biāo)準(zhǔn)庫之 sys 模塊 16 Python 標(biāo)準(zhǔn)庫之 math 模塊 17 Python 標(biāo)準(zhǔn)庫之 random 模塊 18 Python 標(biāo)準(zhǔn)庫之 Json 模塊 19 Python 標(biāo)準(zhǔn)庫 datetime 模塊 20 Python 中的常用第三方模塊 21 Python 中的命名空間 22 Python 中的作用域 23 Python 中的文件 IO 操作 24 Python 基礎(chǔ)實(shí)戰(zhàn) 25 Python 內(nèi)置函數(shù) 26 Python 中使用正則表達(dá)式 27 使用 Python 操作 MySQL 數(shù)據(jù)庫 28 使用 Python 操作 Mongo 數(shù)據(jù)庫 29 使用 Python 操作 Redis 數(shù)據(jù)庫 30 使用 Python 發(fā)送一封郵件 31 threading 之 Thread 的使用 32 threading 之 Lock 的基本使用 33 Python 生產(chǎn)者消費(fèi)者模型 34 Python 的內(nèi)存管理與垃圾回收 35 Python 領(lǐng)域運(yùn)用:網(wǎng)絡(luò)爬蟲 36 Python 領(lǐng)域運(yùn)用:Web 開發(fā) 37 Python 領(lǐng)域運(yùn)用:自動(dòng)化運(yùn)維 38 Python 領(lǐng)域運(yùn)用:自動(dòng)化測試

使用 Python 發(fā)送一封郵件

1. 簡介

SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協(xié)議, 它是一組用于傳送郵件的規(guī)則,由它來控制信件的中轉(zhuǎn)方式。

Python 的 smtplib 模塊對 smtp 協(xié)議進(jìn)行了簡單的封裝,提供了一種方便的途徑發(fā)送電子郵件。

2. 配置發(fā)送服務(wù)器

2.1 簡介

在本節(jié)的例子中,使用 QQ 郵箱的 SMTP 服務(wù)發(fā)送郵件,需要對 QQ 郵件發(fā)送進(jìn)行配置。

本節(jié)的例子中,假設(shè)用戶的信息如下:

  • 用戶郵件地址,假設(shè)為 zhangsan@qq.com
  • 使用 SMTP 服務(wù)的密碼,需要對 QQ 郵件進(jìn)行配置后獲取,注意:不是登錄 QQ 郵箱的密碼

2.2 進(jìn)入設(shè)置界面

需要在 PC 端通過瀏覽器登錄 QQ 郵箱:

  • 點(diǎn)擊設(shè)置,進(jìn)入郵箱設(shè)置
  • 在郵箱設(shè)置中,點(diǎn)擊賬戶

圖片描述

2.2 設(shè)置 POP3/SMTP 發(fā)送服務(wù)器

在賬戶設(shè)置的 TAB 頁面中,選擇 “開啟服務(wù):POP3/SMTP 服務(wù)”。

圖片描述

2.3 通過短信開啟 POP3/SMTP 服務(wù)

選擇 "開啟服務(wù):POP3/SMTP 服務(wù)"后,系統(tǒng)提示通過發(fā)送短信開啟 POP3/SMTP 服務(wù)

圖片描述

2.4 獲取 SMTP 服務(wù)密碼

按照系統(tǒng)提示操作后,系統(tǒng)會(huì)給出使用 SMTP 服務(wù)的密碼,請記住該服務(wù)密碼,在后續(xù)的小節(jié)中會(huì)使用該密碼。

圖片描述

3. 發(fā)送文本格式的郵件

import smtplib
from email.header import Header
from email.mime.text import MIMEText
  • 導(dǎo)入 smtplib 用于發(fā)送郵件
  • 導(dǎo)入類 Header 和 MIMEText 用于構(gòu)造郵件
fromAddr ='zhangsan@qq.com'
password = 'password for smtp'
toAddr ='zhangsan@qq.com'
subject = 'hello world'
content = '你好,世界'
  • fromAddr 為發(fā)送郵件地址
  • toAddr 為目的郵件地址,設(shè)置成與發(fā)送郵件地址相同,表示向自己發(fā)送一封郵件
  • password 是使用 SMTP 服務(wù)的密碼,不是 QQ 郵箱的登錄密碼,請查看第 2 小節(jié)
  • subject 是郵件標(biāo)題
  • content 是郵件內(nèi)容
def makeMail():
    mail = MIMEText(content, 'plain', 'utf-8') 
    mail['From'] = Header(fromAddr, 'utf-8')
    mail['To'] = Header(toAddr, 'utf-8')
    mail['Subject'] = Header(subject, 'utf-8')
    return mail
  • 在第 1 行,函數(shù) makeMail() 根據(jù) fromAddr、toAddr、subject、content 構(gòu)造一封郵件
  • 在第 2 行,使用 MIMEText 構(gòu)造一個(gè)文本格式的郵件
    • MIMEText 的第二個(gè)參數(shù) plain,表示郵件的內(nèi)容是文本格式
  • 在第 3 行,構(gòu)造郵件頭 From
  • 在第 4 行,構(gòu)造郵件頭 To
  • 在第 5 行,構(gòu)造郵件頭 Subject
def sendMail(mail):
    server = smtplib.SMTP_SSL("smtp.qq.com")
    server.login(fromAddr, password)
    server.sendmail(fromAddr, toAddr, mail.as_string())  
    server.quit()
  • 在第 1 行,函數(shù) sendMail 調(diào)用 SMTP 服務(wù)發(fā)送郵件 mail
  • 在第 2 行,獲取 SMTP 服務(wù)器,使用 QQ 發(fā)送服務(wù)
  • 在第 3 行,登錄 SMTP 服務(wù)
  • 在第 4 行,通過 SMTP 服務(wù)器發(fā)送服務(wù)
mail = makeMail()
sendMail(mail)
print('發(fā)送郵件成功')

運(yùn)行程序,在 QQ 郵箱中收到郵件:

圖片描述

4. 發(fā)送 html 格式的郵件

import smtplib
from email.header import Header
from email.mime.text import MIMEText
  • 導(dǎo)入 smtplib 用于發(fā)送郵件
  • 導(dǎo)入類 Header 和 MIMEText 用于構(gòu)造郵件
fromAddr ='zhangsan@qq.com'
password = 'password for smtp'
toAddr ='zhangsan@qq.com'
subject = 'hello with html content'
content = '<b>Please click</b> <a href="http://idcbgp.cn">imooc</a>'
  • fromAddr 為發(fā)送郵件地址
  • toAddr 為目的郵件地址,設(shè)置成與發(fā)送郵件地址相同,表示向自己發(fā)送一封郵件
  • password 是使用 SMTP 服務(wù)的密碼,不是 QQ 郵箱的登錄密碼,請查看第 2 小節(jié)
  • subject 是郵件標(biāo)題
  • content 是郵件內(nèi)容,例子中使用 HTML 格式的文本
def makeMail():
    mail = MIMEText(content, 'html', 'utf-8') 
    mail['From'] = Header(fromAddr, 'utf-8')
    mail['To'] = Header(toAddr, 'utf-8')
    mail['Subject'] = Header(subject, 'utf-8')
    return mail
  • 在第 1 行,函數(shù) makeMail() 根據(jù) fromAddr、toAddr、subject、content 構(gòu)造一封郵件
  • 在第 2 行,使用 MIMEText 構(gòu)造一個(gè)文本格式的郵件
    • MIMEText 的第二個(gè)參數(shù) html,表示郵件的內(nèi)容是 HTML 格式
  • 在第 3 行,構(gòu)造郵件頭 From
  • 在第 4 行,構(gòu)造郵件頭 To
  • 在第 5 行,構(gòu)造郵件頭 Subject
def sendMail(mail):
    server = smtplib.SMTP_SSL("smtp.qq.com")
    server.login(fromAddr, password)
    server.sendmail(fromAddr, toAddr, mail.as_string())  
    server.quit()
  • 在第 1 行,函數(shù) sendMail 調(diào)用 SMTP 服務(wù)發(fā)送郵件 mail
  • 在第 2 行,獲取 SMTP 服務(wù)器,使用 QQ 發(fā)送服務(wù)
  • 在第 3 行,登錄 SMTP 服務(wù)
  • 在第 4 行,通過 SMTP 服務(wù)器發(fā)送服務(wù)
mail = makeMail()
sendMail(mail)
print('發(fā)送郵件成功')

運(yùn)行程序,在 QQ 郵箱中收到郵件:

圖片描述

5. 發(fā)送帶有附件的郵件

5.1 附件 hello.c

在當(dāng)前目錄下,創(chuàng)造文件 hello.c,內(nèi)容如下:

#include <stdio.h>

int main()
{
    printf("hello\n");
    return 0;
}

5.2 發(fā)送帶有附件的郵件

import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
  • 導(dǎo)入 smtplib 用于發(fā)送郵件
  • 導(dǎo)入類 Header 和 MIMEText 用于構(gòu)造郵件
  • 導(dǎo)入類 MIMEMultipart 用于構(gòu)造帶有附件的郵件
fromAddr ='zhangsan@qq.com'
password = 'password for smtp'
toAddr ='zhangsan@qq.com'
subject = 'hello with attachment'
content = '你好,請查收附件'
  • fromAddr 為發(fā)送郵件地址
  • toAddr 為目的郵件地址,設(shè)置成與發(fā)送郵件地址相同,表示向自己發(fā)送一封郵件
  • password 是使用 SMTP 服務(wù)的密碼,不是 QQ 郵箱的登錄密碼,請查看第 2 小節(jié)
  • subject 是郵件標(biāo)題
  • content 是郵件內(nèi)容
def makeAttachment(filename):
    file = open(filename, 'rb')
    blob = file.read()
    attachment = MIMEText(blob, 'base64', 'utf-8')
    attachment["Content-Type"] = 'application/octet-stream'
    attachment["Content-Disposition"] = 'attachment; filename="%s"' % filename
    return attachment
  • 在第 1 行,函數(shù) makeAttachment 構(gòu)造一個(gè)附件
  • 在第 2 行到第 3 行,讀取當(dāng)前目錄下的文件 filename 的內(nèi)容
  • 在第 3 行,構(gòu)造附件對象 attachment
  • 在第 4 行到第 5 行,設(shè)置附件屬性
def makeMail():
    mail = MIMEMultipart()
    mail['From'] = Header(fromAddr, 'utf-8')
    mail['To'] = Header(toAddr, 'utf-8')
    mail['Subject'] = Header(subject, 'utf-8')
    mail.attach(MIMEText(content, 'plain', 'utf-8'))
    return mail
  • 在第 1 行,函數(shù) makeMail() 根據(jù) fromAddr、toAddr、subject、content 構(gòu)造一封郵件
  • 在第 2 行,使用 MIMEMultipart 構(gòu)造一個(gè)帶有附件的郵件
  • 在第 3 行,構(gòu)造郵件頭 From
  • 在第 4 行,構(gòu)造郵件頭 To
  • 在第 5 行,構(gòu)造郵件頭 Subject
  • 在第 6 行,設(shè)置郵件的正文 content
def sendMail(mail):
    server = smtplib.SMTP_SSL("smtp.qq.com")
    server.login(fromAddr, password)
    server.sendmail(fromAddr, toAddr, mail.as_string())  
    server.quit()
  • 在第 1 行,函數(shù) sendMail 調(diào)用 SMTP 服務(wù)發(fā)送郵件 mail
  • 在第 2 行,獲取 SMTP 服務(wù)器,使用 QQ 發(fā)送服務(wù)
  • 在第 3 行,登錄 SMTP 服務(wù)
  • 在第 4 行,通過 SMTP 服務(wù)器發(fā)送服務(wù)
mail = makeMail()
attachment = makeAttachment('hello.c')
mail.attach(attachment)
sendMail(mail)
print('發(fā)送郵件成功')
  • 在第 2 行,構(gòu)造一個(gè)附件 hello.c
  • 在第 3 行,將附件加入到郵件中

運(yùn)行程序,在 QQ 郵箱中收到郵件:

圖片描述