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

Python 發送郵件的三種方法

開發
今天我們就來學習Python發送郵件的三種方法,分別是使用smtplib模塊、yagmail庫和email庫。每種方法都有其特點和適用場景,讓我們一起來看看吧!

發送郵件是日常工作中非常常見的需求,無論是個人還是企業,掌握如何使用Python發送郵件都是非常有用的技能。今天我們就來學習Python發送郵件的三種方法,分別是使用smtplib模塊、yagmail庫和email庫。每種方法都有其特點和適用場景,讓我們一起來看看吧!

1. 使用smtplib模塊發送郵件

smtplib 是 Python 標準庫中的一個模塊,用于發送郵件。它提供了 SMTP(Simple Mail Transfer Protocol)協議的實現。下面我們通過一個簡單的例子來學習如何使用 smtplib 發送郵件。

示例代碼:

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

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

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

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

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

代碼解釋

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

2. 使用yagmail庫發送郵件

yagmail 是一個簡化了 smtplib 和 email 庫使用的第三方庫,使得發送郵件更加方便。下面我們來看一個使用 yagmail 發送郵件的例子。

安裝yagmail:

pip install yagmail

示例代碼:

import yagmail

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

# 郵件內容
subject = 'Python yagmail 郵件測試'
body = '這是一封使用 yagmail 發送的測試郵件'

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

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

代碼解釋:

  • 安裝yagmail:使用 pip install yagmail 安裝 yagmail 庫。
  • 導入yagmail:導入 yagmail 模塊。
  • 設置郵件發送方和接收方:定義發送方和接收方的郵箱地址。
  • 創建郵件內容:定義郵件的主題和內容。
  • 創建SMTP對象:使用 yagmail.SMTP 創建一個SMTP對象,并傳入發送方的郵箱地址、密碼和SMTP服務器地址。
  • 發送郵件:使用 send 方法發送郵件。
  • 異常處理:使用 try-except 塊捕獲可能的異常。

3. 使用email庫發送郵件

email 庫是 Python 標準庫中的一個模塊,用于構建復雜的郵件內容。結合 smtplib,可以發送包含附件、HTML 內容等復雜郵件。下面是一個使用 email 庫發送帶附件的郵件的例子。

示例代碼:

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

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

# 創建一個 MIMEMultipart 對象
msg = MIMEMultipart()

# 設置郵件頭部信息
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = 'Python email 庫郵件測試'

# 添加郵件正文
body = '這是一封使用 email 庫發送的測試郵件,包含附件'
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 服務器并發送郵件
try:
    smtp_obj = smtplib.SMTP('smtp.example.com', 25)
    smtp_obj.login(sender, 'your_password')
    smtp_obj.sendmail(sender, receiver, msg.as_string())
    print("郵件發送成功")
except smtplib.SMTPException as e:
    print("Error: 無法發送郵件", e)
finally:
    smtp_obj.quit()

代碼解釋:

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

實戰案例:自動化發送每日天氣報告

假設我們需要每天自動發送一封包含當日天氣報告的郵件給指定的收件人。我們可以結合 requests 庫獲取天氣數據,并使用 smtplib 或 yagmail 發送郵件。

獲取天氣數據:

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"當前溫度: {temperature}°C, 天氣狀況: {condition}")

發送郵件:

import yagmail

def send_weather_report(email, city):
    temperature, condition = get_weather(city)
    body = f"親愛的用戶,\n\n這是您訂閱的每日天氣報告。\n\n城市: {city}\n當前溫度: {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} 每日天氣報告', contents=body)
        print("郵件發送成功")
    except Exception as e:
        print("Error: 無法發送郵件", e)

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

代碼解釋:

  • 獲取天氣數據:使用 requests 庫調用天氣 API 獲取指定城市的天氣數據。
  • 發送郵件:使用 yagmail 庫發送包含天氣報告的郵件。
  • 函數封裝:將獲取天氣數據和發送郵件的功能封裝成兩個函數,便于調用和維護。

總結

今天我們學習了使用 Python 發送郵件的三種方法:smtplib 模塊、yagmail 庫和 email 庫。每種方法都有其特點和適用場景:

  • smtplib 模塊適合基礎的郵件發送需求,適用于簡單的文本郵件。
  • yagmail 庫簡化了郵件發送的過程,適合快速開發和調試。
  • email 庫結合 smtplib 可以發送復雜的郵件,如包含附件和 HTML 內容的郵件。

通過實戰案例,我們還學會了如何結合第三方 API 自動化發送每日天氣報告。

責任編輯:趙寧寧 來源: 手把手PythonAI編程
相關推薦

2023-10-13 10:45:18

HTTP數據

2022-07-13 16:06:16

Python參數代碼

2009-07-08 12:56:32

編寫Servlet

2010-09-14 15:10:49

CSS注釋

2009-12-11 18:49:39

預算編制博科資訊

2011-04-18 15:32:45

游戲測試測試方法軟件測試

2023-08-14 17:58:13

RequestHTTP請求

2011-06-10 10:43:12

Ubuntu應用安裝

2009-06-23 10:45:18

Hibernate支持

2021-02-06 11:26:55

Python開發list

2022-04-28 07:26:17

PythonDocker容器

2021-02-03 18:05:30

Python方法列表

2023-05-16 16:07:07

大數據數據管理工具

2021-07-13 12:31:27

IT組織改進首席技術官

2009-07-23 15:17:54

JDBC連接Acces

2016-09-09 13:07:56

CentOSJDKLinux

2023-09-25 15:08:43

Python方離群值

2021-09-10 18:09:42

SQL注入漏洞網絡攻擊

2010-10-20 13:52:07

SQL Server數

2021-12-20 07:11:26

Java List排序 Java 基礎
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久人人国产 | 成人性视频免费网站 | 成人做爰9片免费看网站 | 在线a视频网站 | 在线免费观看黄a | 国产高清视频一区 | 日韩av免费在线观看 | 亚洲看片网站 | 免费不卡av| 色综合久久天天综合网 | 成人国产精品色哟哟 | 国产午夜精品一区二区三区嫩草 | 欧美一级艳情片免费观看 | 综合久久av | 亚洲男人的天堂网站 | 夜夜夜夜夜夜曰天天天 | 亚洲欧美综合精品另类天天更新 | 国产电影一区二区三区爱妃记 | 国产精品一区二区三区四区 | 久久小视频 | www.99re| 黄久久久 | 天天操天天射综合网 | 免费看a | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 九九热在线精品视频 | 免费观看一级特黄欧美大片 | 精品亚洲第一 | 国产麻豆乱码精品一区二区三区 | 日本久久精品 | 日韩欧美在线免费观看视频 | 欧美成年网站 | 精品国产91亚洲一区二区三区www | 精品不卡 | 精品国产18久久久久久二百 | 亚洲导航深夜福利涩涩屋 | 欧美激情一区二区 | 欧美a∨| 精品视频一区二区三区在线观看 | 中文字幕视频在线 | 色爽女|