成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 發(fā)送郵件的三種方法

開(kāi)發(fā)
今天我們就來(lái)學(xué)習(xí)Python發(fā)送郵件的三種方法,分別是使用smtplib模塊、yagmail庫(kù)和email庫(kù)。每種方法都有其特點(diǎn)和適用場(chǎng)景,讓我們一起來(lái)看看吧!

發(fā)送郵件是日常工作中非常常見(jiàn)的需求,無(wú)論是個(gè)人還是企業(yè),掌握如何使用Python發(fā)送郵件都是非常有用的技能。今天我們就來(lái)學(xué)習(xí)Python發(fā)送郵件的三種方法,分別是使用smtplib模塊、yagmail庫(kù)和email庫(kù)。每種方法都有其特點(diǎn)和適用場(chǎng)景,讓我們一起來(lái)看看吧!

1. 使用smtplib模塊發(fā)送郵件

smtplib 是 Python 標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,用于發(fā)送郵件。它提供了 SMTP(Simple Mail Transfer Protocol)協(xié)議的實(shí)現(xiàn)。下面我們通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)學(xué)習(xí)如何使用 smtplib 發(fā)送郵件。

示例代碼:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 郵件發(fā)送方和接收方
sender = 'your_email@example.com'
receiver = 'recipient_email@example.com'

# 郵件內(nèi)容
message = MIMEText('這是一封測(cè)試郵件', 'plain', 'utf-8')
message['From'] = Header("發(fā)件人", 'utf-8')
message['To'] = Header("收件人", 'utf-8')

# 郵件主題
subject = 'Python SMTP 郵件測(cè)試'
message['Subject'] = Header(subject, 'utf-8')

# 連接 SMTP 服務(wù)器并發(fā)送郵件
try:
    smtp_obj = smtplib.SMTP('smtp.example.com', 25)  # SMTP服務(wù)器地址和端口
    smtp_obj.login('your_email@example.com', 'your_password')  # 登錄SMTP服務(wù)器
    smtp_obj.sendmail(sender, receiver, message.as_string())  # 發(fā)送郵件
    print("郵件發(fā)送成功")
except smtplib.SMTPException as e:
    print("Error: 無(wú)法發(fā)送郵件", e)
finally:
    smtp_obj.quit()

代碼解釋

  • 導(dǎo)入模塊:首先導(dǎo)入 smtplib 和 email.mime.text 模塊。
  • 設(shè)置郵件發(fā)送方和接收方:定義發(fā)送方和接收方的郵箱地址。
  • 創(chuàng)建郵件內(nèi)容:使用 MIMEText 創(chuàng)建郵件內(nèi)容,并設(shè)置郵件的編碼格式。
  • 設(shè)置郵件頭部信息:使用 Header 設(shè)置郵件的發(fā)送者、接收者和主題。
  • 連接SMTP服務(wù)器:使用 smtplib.SMTP 連接到SMTP服務(wù)器,并使用 login 方法登錄。
  • 發(fā)送郵件:使用 sendmail 方法發(fā)送郵件。
  • 異常處理:使用 try-except 塊捕獲可能的異常。8. 關(guān)閉連接:使用 quit 方法關(guān)閉SMTP連接。

2. 使用yagmail庫(kù)發(fā)送郵件

yagmail 是一個(gè)簡(jiǎn)化了 smtplib 和 email 庫(kù)使用的第三方庫(kù),使得發(fā)送郵件更加方便。下面我們來(lái)看一個(gè)使用 yagmail 發(fā)送郵件的例子。

安裝yagmail:

pip install yagmail

示例代碼:

import yagmail

# 郵件發(fā)送方和接收方
sender = 'your_email@example.com'
receiver = 'recipient_email@example.com'

# 郵件內(nèi)容
subject = 'Python yagmail 郵件測(cè)試'
body = '這是一封使用 yagmail 發(fā)送的測(cè)試郵件'

# 創(chuàng)建 yagmail.SMTP 對(duì)象
yag = yagmail.SMTP(user=sender, password='your_password', host='smtp.example.com')

# 發(fā)送郵件
try:
    yag.send(to=receiver, subject=subject, contents=body)
    print("郵件發(fā)送成功")
except Exception as e:
    print("Error: 無(wú)法發(fā)送郵件", e)

代碼解釋:

  • 安裝yagmail:使用 pip install yagmail 安裝 yagmail 庫(kù)。
  • 導(dǎo)入yagmail:導(dǎo)入 yagmail 模塊。
  • 設(shè)置郵件發(fā)送方和接收方:定義發(fā)送方和接收方的郵箱地址。
  • 創(chuàng)建郵件內(nèi)容:定義郵件的主題和內(nèi)容。
  • 創(chuàng)建SMTP對(duì)象:使用 yagmail.SMTP 創(chuàng)建一個(gè)SMTP對(duì)象,并傳入發(fā)送方的郵箱地址、密碼和SMTP服務(wù)器地址。
  • 發(fā)送郵件:使用 send 方法發(fā)送郵件。
  • 異常處理:使用 try-except 塊捕獲可能的異常。

3. 使用email庫(kù)發(fā)送郵件

email 庫(kù)是 Python 標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,用于構(gòu)建復(fù)雜的郵件內(nèi)容。結(jié)合 smtplib,可以發(fā)送包含附件、HTML 內(nèi)容等復(fù)雜郵件。下面是一個(gè)使用 email 庫(kù)發(fā)送帶附件的郵件的例子。

示例代碼:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# 郵件發(fā)送方和接收方
sender = 'your_email@example.com'
receiver = 'recipient_email@example.com'

# 創(chuàng)建一個(gè) MIMEMultipart 對(duì)象
msg = MIMEMultipart()

# 設(shè)置郵件頭部信息
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = 'Python email 庫(kù)郵件測(cè)試'

# 添加郵件正文
body = '這是一封使用 email 庫(kù)發(fā)送的測(cè)試郵件,包含附件'
msg.attach(MIMEText(body, 'plain'))

# 添加附件
filename = "example.txt"
attachment = open("path/to/example.txt", "rb")

part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', f'attachment; filename={filename}')
msg.attach(part)

# 連接 SMTP 服務(wù)器并發(fā)送郵件
try:
    smtp_obj = smtplib.SMTP('smtp.example.com', 25)
    smtp_obj.login(sender, 'your_password')
    smtp_obj.sendmail(sender, receiver, msg.as_string())
    print("郵件發(fā)送成功")
except smtplib.SMTPException as e:
    print("Error: 無(wú)法發(fā)送郵件", e)
finally:
    smtp_obj.quit()

代碼解釋:

  • 導(dǎo)入模塊:導(dǎo)入 smtplib 和 email 庫(kù)的相關(guān)模塊。
  • 設(shè)置郵件發(fā)送方和接收方:定義發(fā)送方和接收方的郵箱地址。
  • 創(chuàng)建MIMEMultipart對(duì)象:使用 MIMEMultipart 創(chuàng)建一個(gè)郵件對(duì)象。
  • 設(shè)置郵件頭部信息:設(shè)置郵件的發(fā)送者、接收者和主題。
  • 添加郵件正文:使用 MIMEText 創(chuàng)建郵件正文,并將其附加到郵件對(duì)象中。
  • 添加附件:打開(kāi)附件文件,使用 MIMEBase 創(chuàng)建附件對(duì)象,設(shè)置附件內(nèi)容并進(jìn)行 base64 編碼,最后將附件附加到郵件對(duì)象中。
  • 連接SMTP服務(wù)器:使用 smtplib.SMTP 連接到SMTP服務(wù)器,并使用 login 方法登錄。
  • 發(fā)送郵件:使用 sendmail 方法發(fā)送郵件。
  • 異常處理:使用 try-except 塊捕獲可能的異常。
  • 關(guān)閉連接:使用 quit 方法關(guān)閉SMTP連接。

實(shí)戰(zhàn)案例:自動(dòng)化發(fā)送每日天氣報(bào)告

假設(shè)我們需要每天自動(dòng)發(fā)送一封包含當(dāng)日天氣報(bào)告的郵件給指定的收件人。我們可以結(jié)合 requests 庫(kù)獲取天氣數(shù)據(jù),并使用 smtplib 或 yagmail 發(fā)送郵件。

獲取天氣數(shù)據(jù):

import requests

def get_weather(city):
    url = f"http://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q={city}"
    response = requests.get(url)
    data = response.json()
    return data['current']['temp_c'], data['current']['condition']['text']

temperature, condition = get_weather('New York')
print(f"當(dāng)前溫度: {temperature}°C, 天氣狀況: {condition}")

發(fā)送郵件:

import yagmail

def send_weather_report(email, city):
    temperature, condition = get_weather(city)
    body = f"親愛(ài)的用戶,\n\n這是您訂閱的每日天氣報(bào)告。\n\n城市: {city}\n當(dāng)前溫度: {temperature}°C\n天氣狀況: {condition}\n\n祝您一天愉快!"

    yag = yagmail.SMTP(user='your_email@example.com', password='your_password', host='smtp.example.com')
    try:
        yag.send(to=email, subject=f'{city} 每日天氣報(bào)告', contents=body)
        print("郵件發(fā)送成功")
    except Exception as e:
        print("Error: 無(wú)法發(fā)送郵件", e)

send_weather_report('recipient_email@example.com', 'New York')

代碼解釋:

  • 獲取天氣數(shù)據(jù):使用 requests 庫(kù)調(diào)用天氣 API 獲取指定城市的天氣數(shù)據(jù)。
  • 發(fā)送郵件:使用 yagmail 庫(kù)發(fā)送包含天氣報(bào)告的郵件。
  • 函數(shù)封裝:將獲取天氣數(shù)據(jù)和發(fā)送郵件的功能封裝成兩個(gè)函數(shù),便于調(diào)用和維護(hù)。

總結(jié)

今天我們學(xué)習(xí)了使用 Python 發(fā)送郵件的三種方法:smtplib 模塊、yagmail 庫(kù)和 email 庫(kù)。每種方法都有其特點(diǎn)和適用場(chǎng)景:

  • smtplib 模塊適合基礎(chǔ)的郵件發(fā)送需求,適用于簡(jiǎn)單的文本郵件。
  • yagmail 庫(kù)簡(jiǎn)化了郵件發(fā)送的過(guò)程,適合快速開(kāi)發(fā)和調(diào)試。
  • email 庫(kù)結(jié)合 smtplib 可以發(fā)送復(fù)雜的郵件,如包含附件和 HTML 內(nèi)容的郵件。

通過(guò)實(shí)戰(zhàn)案例,我們還學(xué)會(huì)了如何結(jié)合第三方 API 自動(dòng)化發(fā)送每日天氣報(bào)告。

責(zé)任編輯:趙寧寧 來(lái)源: 手把手PythonAI編程
相關(guān)推薦

2023-10-13 10:45:18

HTTP數(shù)據(jù)

2022-07-13 16:06:16

Python參數(shù)代碼

2009-07-08 12:56:32

編寫(xiě)Servlet

2010-09-14 15:10:49

CSS注釋

2011-04-18 15:32:45

游戲測(cè)試測(cè)試方法軟件測(cè)試

2009-12-11 18:49:39

預(yù)算編制博科資訊

2023-08-14 17:58:13

RequestHTTP請(qǐng)求

2021-02-06 11:26:55

Python開(kāi)發(fā)list

2022-04-28 07:26:17

PythonDocker容器

2011-06-10 10:43:12

Ubuntu應(yīng)用安裝

2009-06-23 10:45:18

Hibernate支持

2021-02-03 18:05:30

Python方法列表

2021-09-10 18:09:42

SQL注入漏洞網(wǎng)絡(luò)攻擊

2021-07-13 12:31:27

IT組織改進(jìn)首席技術(shù)官

2023-05-16 16:07:07

大數(shù)據(jù)數(shù)據(jù)管理工具

2023-09-25 15:08:43

Python方離群值

2009-07-23 15:17:54

JDBC連接Acces

2021-10-09 06:59:36

技術(shù)MyBatis數(shù)據(jù)

2021-12-20 07:11:26

Java List排序 Java 基礎(chǔ)

2010-10-20 13:52:07

SQL Server數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产中文字幕网 | 日韩精品一区二区三区在线播放 | 91亚洲精品在线 | 在线欧美亚洲 | 精品一区二区三区日本 | 欧美二区三区 | 欧美中文一区 | 欧美亚洲激情 | 特级生活片 | 亚洲一区二区三区四区五区中文 | 午夜影院视频 | 久久美女视频 | 欧美美女一区二区 | 中文在线播放 | 国产欧美精品区一区二区三区 | 亚洲一区二区三区四区五区中文 | 久久综合久久综合久久 | 欧美中文视频 | 国产有码| 久久综合一区 | 日韩高清一区 | 麻豆91av | 国产传媒视频在线观看 | 亚洲精品视频免费看 | 在线色| 中文字幕欧美一区二区 | 日韩久久精品 | 在线视频中文字幕 | 三级免费 | 亚洲三区在线 | 国产美女福利在线观看 | 国产欧美一区二区在线观看 | 国产成人免费视频 | 久久毛片网站 | 国产亚洲一级 | 午夜在线观看视频 | 国产精品久久777777 | 黑人精品欧美一区二区蜜桃 | 91亚洲国产成人久久精品网站 | 在线观看视频福利 | 国产 日韩 欧美 制服 另类 |