精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python實(shí)戰(zhàn):借助Mailtrap SMTP與電子郵件API實(shí)現(xiàn)郵件發(fā)送功能

譯文 精選
開(kāi)發(fā) 后端
簡(jiǎn)單郵件傳輸協(xié)議(SMTP)是一種廣泛應(yīng)用于各類應(yīng)用程序和網(wǎng)站,用于發(fā)送電子郵件的標(biāo)準(zhǔn)協(xié)議。而 Mailtrap 則是一款專門設(shè)計(jì)的電子郵件投遞平臺(tái),其目標(biāo)在于實(shí)現(xiàn)高郵件投遞成功率。

譯者 | 劉濤

審校 | 重樓

在本教程中,我將引導(dǎo)逐步深入了解在Python環(huán)境中使用兩種不同方式發(fā)送電子郵件的具體流程

  • 基于傳統(tǒng)SMTP方式:利用 Python 內(nèi)置的“smtplib”模塊,按照傳統(tǒng)的 SMTP 配置方式來(lái)發(fā)送電子郵件。
  • 基于Mailtrap方式:通過(guò)使用Mailtrap提供的官方 SDK,調(diào)用其API來(lái)實(shí)現(xiàn)電子郵件的發(fā)送功能。

如果對(duì)上述工具及相關(guān)工作流程尚不熟悉,在此簡(jiǎn)單介紹一下:簡(jiǎn)單郵件傳輸協(xié)議(SMTP)是一種廣泛應(yīng)用于各類應(yīng)用程序和網(wǎng)站,用于發(fā)送電子郵件的標(biāo)準(zhǔn)協(xié)議。而 Mailtrap 則是一款專門設(shè)計(jì)的電子郵件投遞平臺(tái),其目標(biāo)在于實(shí)現(xiàn)高郵件投遞成功率。該平臺(tái)不僅配備了一系列聚焦于業(yè)務(wù)增長(zhǎng)的實(shí)用功能,還擁有業(yè)內(nèi)領(lǐng)先水平的分析工具,能夠?yàn)橛脩籼峁┤媲疑钊氲泥]件投遞數(shù)據(jù)洞察。

在本文結(jié)尾,將了解如何將發(fā)送電子郵件的功能集成到Python項(xiàng)目中,并在實(shí)際場(chǎng)景中使用Mailtrap實(shí)現(xiàn)可靠的電子郵件投遞。

目錄

  • “smtplib”設(shè)置
  • 如何使用Mailtrap SMTP發(fā)送電子郵件
  • 如何使用Mailtrap電子郵件API發(fā)送電子郵件
  • 總結(jié)

“smtplib”設(shè)置

若要開(kāi)啟使用Python發(fā)送電子郵件的操作,我們首先學(xué)會(huì)運(yùn)用內(nèi)置的 “smtplib”模塊。此模塊具備強(qiáng)大功能,能夠讓你的程序連接至SMTP服務(wù)器,進(jìn)而直接從應(yīng)用程序中發(fā)送電子郵件。

第一步,請(qǐng)使用以下語(yǔ)句導(dǎo)入“smtplib”模塊:

import smtplib

接下來(lái),創(chuàng)建一個(gè)“SMTP”對(duì)象,該對(duì)象的作用是對(duì)與SMTP服務(wù)器的連接進(jìn)行配置。在后續(xù)的操作中,這個(gè)對(duì)象將負(fù)責(zé)處理電子郵件的發(fā)送任務(wù)。

smtpObj = smtplib.SMTP(host, port)
  • “host”指的是SMTP服務(wù)器端點(diǎn),比如“l(fā)ive.smtp.mailtrap.io”這類具體的服務(wù)器地址
  • “port”指的是服務(wù)器使用的通信端口。通常推薦使用587端口該端口用于通過(guò)TLS加密方式安全地發(fā)送電子郵件。

專業(yè)提示:“SMTP對(duì)象包含一個(gè)名為“sendmail”的實(shí)例對(duì)象。該對(duì)象帶有三個(gè)參數(shù),其中每個(gè)參數(shù)均為字符串類型(需注意,“”receivers“” 這個(gè)參數(shù)是一個(gè)字符串列表)。

smtpObj.sendmail(sender, receivers, message)

若要確認(rèn)“smtplib”模塊是否已正確導(dǎo)入,同時(shí)查看參數(shù)和類的完整描述信息,可運(yùn)行以下命令:

help(smtplib)

如何使用Mailtrap SMTP發(fā)送電子郵件

此方法需要設(shè)置你從Mailtrap獲取的自定義SMTP憑證。

重要提示:

  • 使用 Mailtrap 的虛擬域名測(cè)試服務(wù):若你希望試用 Mailtrap,無(wú)需即刻對(duì)你的域名進(jìn)行驗(yàn)證。你可以使用 Mailtrap 提供的虛擬域名(在注冊(cè)時(shí)即可獲得訪問(wèn)權(quán)限)。使用該虛擬域名,你能夠模擬電子郵件的發(fā)送過(guò)程,而無(wú)需擔(dān)憂DNS記錄相關(guān)問(wèn)題。這種方式十分適合用于測(cè)試Mailtrap服務(wù),并深入熟悉其各項(xiàng)功能。
  • 生產(chǎn)環(huán)境中的域名驗(yàn)證:倘若你計(jì)劃向收件人發(fā)送真實(shí)有效的郵件,那么就必須對(duì)你的域名進(jìn)行驗(yàn)證。這一過(guò)程要求你在域名提供商的DNS設(shè)置中添加諸如 SPF、DKIM和DMARC等DNS記錄。這些記錄對(duì)于確保郵件能夠成功投遞至關(guān)重要,同時(shí)還有助于防范網(wǎng)絡(luò)釣魚以及偽造郵件等安全風(fēng)險(xiǎn)。在接下來(lái)的部分內(nèi)容中,我將為你詳細(xì)展示如何在域名提供商的控制面板中完成這些設(shè)置操作。

驗(yàn)證發(fā)件域名(SPF/DKIM和DMARC)

DNS 記錄在確保電子郵件成功投遞方面起著關(guān)鍵作用,諸如Gmail(谷歌郵箱)和雅虎等郵箱提供商均要求進(jìn)行 DNS 認(rèn)證。

在詳細(xì)介紹操作方法之前,我們先對(duì)每種記錄類型進(jìn)行回顧,以便你深入理解它們的重要性:

  • SPF(發(fā)件人策略框架):此記錄的作用是協(xié)助郵件服務(wù)器判定發(fā)件人的 IP 地址是否被授權(quán)使用你的域名發(fā)送郵件。通俗來(lái)講,添加 SPF 記錄能夠有效阻止垃圾郵件發(fā)送者冒用你的域名發(fā)送郵件,從而保障你的域名安全和郵件發(fā)送的合法性。
  • DKIM(域名密鑰識(shí)別郵件):DKIM使用加密技術(shù)對(duì)發(fā)件人的域名進(jìn)行驗(yàn)證,同時(shí)確保郵件內(nèi)容在傳輸過(guò)程中未被篡改。該技術(shù)為你的郵件提供了可靠的防偽保護(hù),增強(qiáng)了郵件的可信度和安全性。
  • DMARC(基于域名的消息認(rèn)證、報(bào)告與一致性):DMARC將SPF和DKIM的功能相結(jié)合,不僅制定了針對(duì)未經(jīng)身份驗(yàn)證的電子郵件的處理策略,還能夠?qū)︵]件活動(dòng)進(jìn)行詳細(xì)報(bào)告。通過(guò) DMARC,你可以更好地掌控以你域名發(fā)送的郵件的安全性,確保郵件傳輸?shù)暮弦?guī)性和可靠性。

以下是添加這些記錄的具體步驟:

  • 首先,你需要訪問(wèn)域名提供商的DNS設(shè)置。一般而言,你可以在域名注冊(cè)平臺(tái)或域名管理設(shè)置板塊中找到該入口。例如,在GoDaddy平臺(tái)(注:GoDaddy是一家知名的網(wǎng)絡(luò)托管公司和域名注冊(cè)商,提供多種互聯(lián)網(wǎng)服務(wù))上,該入口被命名為“管理 DNS”,其他域名提供商的相關(guān)入口名稱雖有所不同,但功能類似。
  • 接下來(lái),將 Mailtrap 提供的 DNS 記錄(通過(guò)復(fù)制粘貼的方式)添加至你域名提供商的 DNS 設(shè)置中。需要注意的是,Mailtrap提供的記錄是經(jīng)過(guò)精心設(shè)置的,其中SPF記錄已預(yù)先解析完成。因此,你無(wú)需進(jìn)行額外的創(chuàng)建操作,直接添加這些記錄即可完成相應(yīng)配置。

  • 最后,你可以通過(guò)Mailtrap查看記錄的狀態(tài)。

以下展示的是使用Python通過(guò)Mailtrap發(fā)送電子郵件的最簡(jiǎn)腳本。出于安全方面的考量,在該腳本中,用戶名和密碼部分采用了占位符(SMTP 服務(wù)器端點(diǎn)和端口除外)。

當(dāng)運(yùn)行此腳本時(shí),請(qǐng)務(wù)必將這些占位符替換為你實(shí)際的Mailtrap憑證,以確保電子郵件能夠成功發(fā)送。

import smtplib
from email.mime.text import MIMEText

# Configuration
port = 587
smtp_server = "live.smtp.mailtrap.io"
login = "api" # Your login generated by Mailtrap
password = "1a2b3c4d5e6f7g" # Your password generated by Mailtrap

sender_email = "mailtrap@example.com"
receiver_email = "new@example.com"

# Plain text content
text = """\
Hi,
Check out the new post on the Mailtrap blog:
SMTP Server for Testing: Cloud-based or Local?
https://blog.mailtrap.io/2018/09/27/cloud-or-local-smtp-server/
Feel free to let us know what content would be useful for you!
"""

# Create MIMEText object
message = MIMEText(text, "plain")
message["Subject"] = "Plain text email"
message["From"] = sender_email
message["To"] = receiver_email

# Send the email
with smtplib.SMTP(smtp_server, port) as server:
 server.starttls() # Secure the connection
 server.login(login, password)
 server.sendmail(sender_email, receiver_email, message.as_string())
print(“”Sent“”)

在該腳本中:

  • 從 Python 標(biāo)準(zhǔn)庫(kù)中導(dǎo)入了 smtplib 和 MIMEText 這兩個(gè)模塊。其中,smtplib 模塊用于實(shí)現(xiàn)與 SMTP 服務(wù)器的交互,完成郵件發(fā)送相關(guān)操作;MIMEText 模塊則用于處理郵件內(nèi)容的格式。
  • 正如前文所提及的,針對(duì) SMTP 服務(wù)器的配置,需要使用自己的憑證對(duì)相關(guān)部分進(jìn)行更新。不過(guò),服務(wù)器端點(diǎn)和端口這兩個(gè)參數(shù)保持不變,它們是連接到特定郵件服務(wù)器的固定標(biāo)識(shí)。
  • 鑒于這是一個(gè)旨在展示基本功能的最簡(jiǎn)腳本,這里僅使用了包含 “plaintext”純文本 格式的 MIMEText 來(lái)構(gòu)建郵件內(nèi)容。實(shí)際上,該腳本具備良好的擴(kuò)展性,能夠很方便地通過(guò)重構(gòu),使用MIMEMultipart 模塊來(lái)同時(shí)處理 “plaintext” 和 “HTML” 格式的郵件內(nèi)容。若想了解具體的實(shí)現(xiàn)方式,可跳轉(zhuǎn)到下面的快速教程部分查看。
  • 在執(zhí)行發(fā)送電子郵件的操作時(shí),選用了 with 語(yǔ)句(即上下文管理器)。旨在確保郵件成功發(fā)送之后,能夠立即關(guān)閉與 SMTP 服務(wù)器的連接。通過(guò)這種方式,可以有效避免資源的浪費(fèi)以及可能出現(xiàn)的連接異常問(wèn)題,保障系統(tǒng)的穩(wěn)定性和資源的合理利用。

安全提示

在編寫發(fā)送郵件的腳本時(shí),切勿將服務(wù)器信息和登錄憑證直接硬編碼到腳本中。當(dāng)為生產(chǎn)環(huán)境配置腳本時(shí),務(wù)必使用環(huán)境變量來(lái)存儲(chǔ)這些敏感信息。這樣做不僅能夠增強(qiáng)代碼的安全性,降低信息泄露的風(fēng)險(xiǎn),還能使代碼在不同開(kāi)發(fā)階段之間遷移時(shí)更加靈活。代碼如下:

import os

smtp_server = os.getenv("SMTP_SERVER","default.smtp.server")
login = os.getenv("SMTP_LOGIN")
password = os.getenv("SMTP_PASSWORD")

# Example usage in an SMTP connection setup
# smtp.login(login, password)

請(qǐng)注意,在運(yùn)行腳本之前,需要在操作系統(tǒng)中設(shè)置變量。

重構(gòu)腳本以使用HTML郵件

HTML郵件能夠顯著提升用戶體驗(yàn)。使用HTML 技術(shù),可以在郵件中嵌入格式化文本、圖片、表格、可點(diǎn)擊鏈接以及自定義樣式等豐富元素。這一特性在營(yíng)銷郵件、時(shí)事通訊,以及任何對(duì)設(shè)計(jì)和品牌形象有較高要求的通信場(chǎng)景中,都具有極高的實(shí)用價(jià)值。

因此,若要對(duì)腳本進(jìn)行重構(gòu)以支持 HTML 郵件,需要導(dǎo)入MIMEMultipartMIMEText這兩個(gè)模塊。通過(guò)這種方式,不僅能夠精心自定義HTML格式的郵件內(nèi)容,還能在收件人的設(shè)備或郵件客戶端無(wú)法正常打開(kāi)HTML郵件時(shí),提供純文本版本作為備用選項(xiàng),確保郵件信息能夠準(zhǔn)確傳達(dá)給收件人。

以下為修改后的腳本:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# Configuration
smtp_server = "live.smtp.mailtrap.io"
port = 587
login = "api" # Mailtrap login
password = "1a2b3c4d5e6f7g" # Mailtrap password
sender_email = "mailtrap@example.com"
receiver_email = "new@example.com"
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = "HTML Email"
# Add plain text content (optional, for email clients that don“”t render HTML)
message.attach(MIMEText("This is a plain text version of the email.", "plain"))
# Add HTML content
html_content = """\
<html>
 <body>
 <h1>Welcome to Mailtrap!</h1>
 <p>This is an example of an HTML email.</p>
 </body>
</html>
"""
message.attach(MIMEText(html_content, "html"))
# Send the emailwith smtplib.SMTP(smtp_server, port) as server:
 server.starttls()
 server.login(login, password)
 server.sendmail(sender_email, receiver_email, message.as_string())
print(“”Sent“”)

最后,我提供了關(guān)于SMTP方法的視頻講解。如果覺(jué)得通過(guò)視頻了解相關(guān)內(nèi)容更符合的習(xí)慣,歡迎隨時(shí)查看。

https://www.youtube.com/watch?v=ufLpTc9up8s&t=1s。

如何使用Mailtrap電子郵件API發(fā)送電子郵件

不滿足于僅使用 SMTP 方式發(fā)送電子郵件,而是期望將Mailtrap的電子郵件 API 集成到自己的 Python 應(yīng)用程序中,本節(jié)內(nèi)容將詳細(xì)為介紹具體操作方法。

Mailtrap 的 SMTP 電子郵件API具備諸多優(yōu)勢(shì),它不僅能夠使更高效地發(fā)送電子郵件,還為整個(gè)郵件發(fā)送流程增添了靈活性與可擴(kuò)展性。在著手進(jìn)行集成操作之前,請(qǐng)務(wù)必確保在 Mailtrap 平臺(tái)上擁有一個(gè)已經(jīng)過(guò)驗(yàn)證的發(fā)件域名,同時(shí)準(zhǔn)備好用于驗(yàn)證請(qǐng)求的Mailtrap API令牌。

需要注意的是:接下來(lái)我將著重介紹如何使用 Mailtrap 官方的Python軟件開(kāi)發(fā)工具包(SDK)來(lái)完成 API 集成工作。

那么,第一步,請(qǐng)使用以下命令安裝官方 SDK。

pip install mailtrap

前提條件:請(qǐng)確保的 Python 包版本為 3.6 或更高。

在成功安裝軟件開(kāi)發(fā)工具包(SDK)之后,接下來(lái)的步驟是創(chuàng)建一個(gè) Mail 對(duì)象。此對(duì)象將用于代表即將發(fā)送的電子郵件,其中會(huì)涵蓋發(fā)件人、收件人、主題以及郵件內(nèi)容等關(guān)鍵信息。

import mailtrap as mt
# Create the mail object
mail = mt.Mail(
 sender=mt.Address(email="mailtrap@example.com", name="Mailtrap Test"), # Sender info
 to=[mt.Address(email="your@email.com")], # Recipient info
 subject="You are awesome!", # Email subject
 text="Congrats for sending a test email with Mailtrap!" # Email content (plain text))
# Create a client using your API key
client = mt.MailtrapClient(token="your-api-key")
# Send the email
client.send(mail)

快速說(shuō)明:.

  • 發(fā)件人與收件人:需要明確指定發(fā)件人的電子郵件地址,此地址必須與已驗(yàn)證的域名相匹配。同理,收件人的電子郵件地址也需準(zhǔn)確設(shè)定。
  • 主題與文本內(nèi)容:需設(shè)置電子郵件的主題以及純文本內(nèi)容。后續(xù)將會(huì)提及,同樣能夠添加HTML格式的內(nèi)容。
  • 客戶端與發(fā)送:利用的Mailtrap API令牌對(duì)“MailtrapClient”進(jìn)行初始化操作,該令牌用于對(duì) API 請(qǐng)求進(jìn)行驗(yàn)證。然后在客戶端調(diào)用“send”方法,并將“mail”對(duì)象作為參數(shù)傳入。若要使用 Mailtrap API令牌創(chuàng)建客戶端,可在 Mailtrap 中按照以下路徑進(jìn)行操作:
? Settings > API Tokens > Add Token

這樣,可以使用以下命令發(fā)送電子郵件:

# create client and send
client = mt.MailtrapClient(token="your-api-key")
client.send(mail)

最后,以下為使用Python SDK 發(fā)送基本“純文本”電子郵件的SDK腳本。

from mailtrap import Mail, Address, MailtrapClient
# Create a Mail object with basic details for a plain text email
mail = Mail(
 # Specify the sender“”s email address and optional name
 sender=Address(email="mailtrap@example.com", name="Mailtrap Test"),
 # Specify one or more recipients; here we use a list with a single recipient
 to=[Address(email="your@email.com", name="Your Name")],
 # Subject of the email
 subject="Simple Plain Text Email",
 # The plain text content of the email
 text="This is a plain text email sent using the Mailtrap SDK. Simple and straightforward.",
 # Optional: categorize this email for easier sorting or management in the Mailtrap service
 category="Test",
 # Optional: Additional headers can be specified, but are not required for plain text emails
 headers={"X-Example-Header": "HeaderValue"})
# Initialize the MailtrapClient with your API token
client = MailtrapClient(token="your-api-key")
# Send the email using the client“”s send method
client.send(mail)
print("Plain text email sent successfully.")

在該腳本中:

  • 考慮到此次要發(fā)送的是純文本消息,因此所導(dǎo)入的類有MailtrapClientMail 以及Address
  • Mail對(duì)象包含以下部分:

a.構(gòu)造函數(shù):即用于創(chuàng)建對(duì)象的Mail構(gòu)造函數(shù)。

b.發(fā)件人信息:Sender”字段,使用“Address類來(lái)定義發(fā)件人的姓名和電子郵件地址

c.收件人信息:to字段在通常情況下可以是一個(gè)由Address對(duì)象構(gòu)成的列表。不過(guò)由于這里是一封純文本電子郵件,所以它一般直接包含收件人信息,而非以列表形式呈現(xiàn)。

d.主題:電子郵件的主題,通過(guò)subject字段表示

e.郵件內(nèi)容:text字段,其中包含了電子郵件的內(nèi)容,且是以純文本(“plaintext”)形式存在。

f.可選字段:headerscategory,這兩個(gè)字段屬于可選設(shè)置,合理使用它們有助于更高效地管理電子郵件。

g.客戶端創(chuàng)建與驗(yàn)證:利用 API 令牌創(chuàng)建MailtrapClient,并完成相應(yīng)的驗(yàn)證工作。

h.郵件發(fā)送:調(diào)用MailtrapClientsend方法,將mail對(duì)象作為參數(shù)傳入,以此來(lái)實(shí)現(xiàn)電子郵件的發(fā)送操作。

i.操作確認(rèn):打印“Plain text email sent successfully.(純文本電子郵件發(fā)送成功” 這一消息,用于確認(rèn)電子郵件發(fā)送操作已成功完成。

  • 電子郵件的發(fā)送流程如下:

重構(gòu)腳本以包含 HTML 和附件

同樣地,使用MIMEMultipart類對(duì)腳本進(jìn)行重構(gòu),從而實(shí)現(xiàn)更為復(fù)雜的電子郵件結(jié)構(gòu),則會(huì)變得非常簡(jiǎn)單

以下展示的是重構(gòu)后的代碼:

import mailtrap as mt
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# Create a multipart email message
message = MIMEMultipart()
message["Subject"] = "HTML Email"

# Plain text version (for email clients that don“”t support HTML)
message.attach(MIMEText("This is the plain text version.", "plain"))

# HTML version
html_content = """\
<html>
 <body>
 <h1>Welcome to Mailtrap!</h1>
 <p>This is an HTML email with some <b>bold text</b> and a <a >link</a>.</p>
 </body>
</html>
"""
message.attach(MIMEText(html_content, "html"))

client = mt.MailtrapClient(token="your-api-key")

# Now send the email with Mailtrap“”s API
mail = mt.Mail(
 sender=mt.Address(email="mailtrap@example.com", name="Mailtrap Test"),
 to=[mt.Address(email="your@email.com")],
 subject="You are awesome!",
 html=message.as_string() # Pass the HTML content as a string)
client.send(mail)

生產(chǎn)環(huán)境設(shè)置

在詳細(xì)探討具體設(shè)置細(xì)節(jié)之前,在此提醒一些安全方面的最佳實(shí)踐:

  • 安全存儲(chǔ) API 密鑰和憑證:在生產(chǎn)環(huán)境下,切勿將 API 密鑰、電子郵件登錄憑證或其他諸如機(jī)密信息這類敏感數(shù)據(jù),直接硬編碼到源代碼中。一旦發(fā)生這樣操作,的應(yīng)用程序?qū)⒚媾R極大的安全風(fēng)險(xiǎn)。
  • 使用環(huán)境變量:采用這種方式,不僅能夠有效保障憑證的安全性,還能讓在不同的配置環(huán)境(例如開(kāi)發(fā)環(huán)境、預(yù)發(fā)布環(huán)境【staging:指的是在正式生產(chǎn)環(huán)境之前的一個(gè)測(cè)試環(huán)境。它是軟件開(kāi)發(fā)過(guò)程中的一個(gè)階段,用于模擬生產(chǎn)環(huán)境,進(jìn)行最終的測(cè)試和驗(yàn)證】以及生產(chǎn)環(huán)境)之間輕松實(shí)現(xiàn)切換。

接下來(lái)為介紹具體的設(shè)置方法:

  • 使用“python - dotenv”包從“.env”文件中加載環(huán)境變量使用以下命令安裝該庫(kù): pip install python-dotenv
  • 在項(xiàng)目的根目錄下創(chuàng)建一個(gè)名為“.env”的文件,用于安全地存儲(chǔ)環(huán)境變量。該文件會(huì)存放諸如的 Mailtrap API 密鑰、登錄憑證以及 SMTP 服務(wù)器詳細(xì)信息等敏感信息。以下為一個(gè)示例:
SMTP_SERVER=smtp.mailtrap.io
 SMTP_PORT=587
 SMTP_LOGIN=your_mailtrap_login
 SMTP_PASSWORD=your_mailtrap_password
 MAILTRAP_API_KEY=your_mailtrap_api_key

重要提示:確保此.env文件永遠(yuǎn)不會(huì)推送到版本控制系統(tǒng)(如Git)請(qǐng)添加到你項(xiàng)目里.gitignore”文件,以此避免敏感信息因意外情況而被暴露

  • 在創(chuàng)建好“.env”文件之后,需要將其中的變量加載到Python腳本中。具體操作是,在腳本的頂部位置,導(dǎo)入“dotenv”包,然后調(diào)用“l(fā)oad_dotenv()”函數(shù),以此來(lái)實(shí)現(xiàn)環(huán)境變量的加載。
from dotenv import load_dotenv
 import os
 
 # Load environment variables from the .env file
 load_dotenv()
 
 # Retrieve environment variables securely
 smtp_server = os.getenv("SMTP_SERVER")
 smtp_port = os.getenv("SMTP_PORT")
 smtp_login = os.getenv("SMTP_LOGIN")
 smtp_password = os.getenv("SMTP_PASSWORD")
 mailtrap_api_key = os.getenv("MAILTRAP_API_KEY")
  • 完成環(huán)境變量的加載后,便能夠?qū)⒛_本中原本硬編碼的憑證替換為這些環(huán)境變量。以下為一個(gè)示例:
import smtplib
 from email.mime.text import MIMEText
 from dotenv import load_dotenv
 import os

 # Load environment variables
 load_dotenv()

 # Fetching SMTP credentials from environment variables
 smtp_server = os.getenv("SMTP_SERVER")
 smtp_port = os.getenv("SMTP_PORT")
 smtp_login = os.getenv("SMTP_LOGIN")
 smtp_password = os.getenv("SMTP_PASSWORD")

 sender_email = "mailtrap@example.com"
 receiver_email = "new@example.com"
 subject = "Plain text email"
 text = """\
 Hi,
 Check out the new post on the Mailtrap blog:
 https://blog.mailtrap.io/2018/09/27/cloud-or-local-smtp-server/
 """

 # Create MIMEText object
 message = MIMEText(text, "plain")
 message["Subject"] = subject
 message["From"] = sender_email
 message["To"] = receiver_email

 # Send email using environment variables
 with smtplib.SMTP(smtp_server, smtp_port) as server:
 server.starttls() # Secure the connection
 server.login(smtp_login, smtp_password)
 server.sendmail(sender_email, receiver_email, message.as_string())

 print("Email sent successfully!")

專業(yè)提示

首先,務(wù)必保證環(huán)境變量?jī)H能被授權(quán)用戶訪問(wèn)。在生產(chǎn)服務(wù)器環(huán)境下,通常表示僅通過(guò)部署配置來(lái)設(shè)定對(duì)環(huán)境變量的訪問(wèn)權(quán)限(例如,使用 Heroku 的配置變量、AWS Secrets Manager,或者其他基于云的機(jī)密管理工具來(lái)實(shí)現(xiàn))。

其次,建議在開(kāi)發(fā)、預(yù)發(fā)布以及生產(chǎn)環(huán)境中使用不同的環(huán)境變量。這樣做能夠有效確保生產(chǎn)環(huán)境與開(kāi)發(fā)流程中的其他階段相互隔離,進(jìn)而為生產(chǎn)環(huán)境提供更妥善的保護(hù)。

一旦在本地完成環(huán)境變量的配置,接下來(lái)就需要將應(yīng)用程序部署到生產(chǎn)環(huán)境中。在此過(guò)程中,一定要在生產(chǎn)服務(wù)器或服務(wù)里設(shè)置相同的環(huán)境變量。

倘若計(jì)劃將應(yīng)用程序部署到諸如 Heroku、AWS或者谷歌云這類平臺(tái),可以使用這些平臺(tái)各自提供的環(huán)境變量管理工具,安全地存儲(chǔ)和訪問(wèn)機(jī)密信息,由此一來(lái)便無(wú)需手動(dòng)管理“.env”文件。

總結(jié)

這個(gè)快速教程為提供了充足的內(nèi)容以幫助使用Python發(fā)送電子郵件。需要注意的是,上述腳本具備進(jìn)一步擴(kuò)展的空間,能夠涵蓋 HTML 格式內(nèi)容、多個(gè)收件人、附件、圖片等更多功能。

倘若對(duì)這方面內(nèi)容感興趣,或者希望了解更多安全提示與最佳實(shí)踐相關(guān)知識(shí),可訪問(wèn) Mailtrap 博客,獲取更為詳盡的教程。

譯者介紹

劉濤,51CTO社區(qū)編輯,某大型央企系統(tǒng)上線檢測(cè)管控負(fù)責(zé)人。

原文標(biāo)題:How to Send Emails in Python using Mailtrap SMTP and the Email API,作者:Alex Tray

責(zé)任編輯:姜華 來(lái)源: 51CTO
相關(guān)推薦

2022-10-24 10:05:41

電子郵件協(xié)議SMTPIMAP

2011-10-31 09:35:50

2022-07-08 08:07:14

SpringJavaMail

2011-08-01 11:11:55

2009-10-14 10:10:05

2020-02-26 13:47:57

Emacs電子郵件開(kāi)源

2018-06-28 16:19:09

2011-08-01 12:43:03

2010-06-10 14:10:58

安全電子郵件協(xié)議

2010-05-21 15:27:39

GoogleGmail

2021-06-16 10:56:32

電子郵件電子郵件攻擊BEC

2010-09-09 17:11:32

2010-09-15 14:14:50

2009-05-21 10:07:43

谷歌電子郵件自動(dòng)翻譯

2020-05-25 14:32:42

Python電子郵件自動(dòng)化

2010-07-08 15:17:24

2009-01-16 09:08:00

2009-11-29 16:59:35

2010-09-17 14:11:18

2009-12-17 11:38:05

點(diǎn)贊
收藏

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

四虎精品在线| 国产系列精品av| 国产精久久一区二区| 亚洲综合区在线| 欧美激情视频一区二区三区| 中国a一片一级一片| 亚洲成人国产| 亚洲欧美变态国产另类| 三级黄色片免费观看| 午夜影院一区| 亚洲欧美区自拍先锋| 免费电影一区| 国产黄a三级三级三级| 久久午夜激情| 欧美激情亚洲激情| 国精产品一区一区| 亚洲免费毛片| 日韩精品综合一本久道在线视频| 国产情侣av自拍| 欧美韩日亚洲| 国产精品久久毛片| 国产在线一区二区三区播放| 国产精品爽爽久久久久久| 亚洲欧美日韩专区| 欧美国产日产韩国视频| 麻豆一区在线观看| 亚洲精品进入| 亚洲国产成人精品久久久国产成人一区| 日本激情视频在线| 美女一区网站| 欧美视频在线观看 亚洲欧| 色一情一乱一乱一区91| 欧美精品hd| 日本一区二区视频在线观看| 久久草.com| 人人妻人人玩人人澡人人爽| 国产高清久久久久| 91香蕉国产在线观看| 亚洲精品91天天久久人人| 裸体素人女欧美日韩| 91超碰caoporn97人人| 精品处破女学生| 国精品一区二区| 欧美国产日韩中文字幕在线| 亚洲欧美另类日本| 日本不卡二区| 亚洲第一视频网站| 国产区在线观看成人精品| 国产丝袜一区二区三区| 欧美成人精品一区二区综合免费| 日韩免费在线电影| 欧美视频你懂的| 九色91popny| 免费污视频在线一区| 色中色一区二区| 久章草在线视频| 日韩影片中文字幕| 色婷婷av一区二区三区之一色屋| 成人综合视频在线| 欧美国产大片| 日本丶国产丶欧美色综合| 一本久道综合色婷婷五月| 国产成人免费9x9x人网站视频| 秋霞在线一区| 国产91色综合久久免费分享| 成人欧美一区二区三区视频| 狠狠躁日日躁夜夜躁av| 99久免费精品视频在线观看| 久久精品二区| 国产在线免费观看| 中文字幕免费不卡| 懂色av一区二区三区四区五区| 欧美18hd| 亚洲成精国产精品女| 草草久久久无码国产专区| 在线日韩影院| 欧美日韩一二三区| 香蕉视频色在线观看| 99久久香蕉| 亚洲欧美国产高清va在线播| 影音先锋男人看片资源| 91精品高清| 精品粉嫩aⅴ一区二区三区四区| 免费中文字幕av| 成人婷婷网色偷偷亚洲男人的天堂| 中文字幕精品在线| 青青草原在线免费观看| 亚洲欧美卡通另类91av| 成人国产精品色哟哟| 色婷婷在线视频| 国产欧美一区二区三区在线老狼| 久久久一二三四| 超碰资源在线| 欧美三区在线观看| 精品少妇人妻av一区二区三区| 久久最新网址| 欧美成人午夜免费视在线看片| 99久热在线精品996热是什么| 日本aⅴ亚洲精品中文乱码| 99理论电影网| 电影在线一区| 午夜精品福利久久久| 中日韩av在线播放| 亚洲小说图片视频| 久久777国产线看观看精品| 97人妻一区二区精品视频| 国产风韵犹存在线视精品| 欧美日韩亚洲在线 | h片在线观看下载| 欧美亚洲综合色| 欧亚乱熟女一区二区在线| 久久久国产精品| 日韩免费不卡av| 日本亚洲欧洲精品| 亚洲精品无码久久久| 中文在线资源观看网站视频免费不卡| 老子影院午夜伦不卡大全| 国产精品蜜月aⅴ在线| 亚洲国产精品久久久久| 中国毛片直接看| 久久亚洲一区| 狠狠色噜噜狠狠色综合久| 米奇777四色精品人人爽| 日本韩国欧美在线| www.日本高清| 黄色亚洲在线| 99精彩视频在线观看免费| 求av网址在线观看| 欧美三级电影在线观看| 亚洲乱码国产乱码精品精大量| 欧美日韩一卡| 成人91视频| 羞羞网站在线看| 91精品国模一区二区三区| 五月天婷婷丁香网| 日韩精品每日更新| 日本欧洲国产一区二区| 日本在线高清| 日韩精品极品在线观看播放免费视频| 青青草在线观看视频| 国产精品一卡二| 中国黄色录像片| 国产日韩欧美中文在线| 久久在线免费视频| 国产www视频| 一区二区三区成人| 国产调教打屁股xxxx网站| 欧美特黄一级| 国外成人在线视频网站| 超碰在线网站| 亚洲精品久久久久久下一站 | 国产精品国内免费一区二区三区| 国产精品久久久久久久久| 黄色在线观看网| 欧美色偷偷大香| 欧美一级特黄高清视频| 韩日av一区二区| 成人国产在线看| 国产另类在线| 青草青草久热精品视频在线网站 | 狠狠操狠狠干视频| 国产精品99久久精品| 91九色综合久久| 日本一级理论片在线大全| 精品噜噜噜噜久久久久久久久试看| 久久影院一区二区| 99视频精品在线| 久久综合久久色| 日韩欧美一区二区三区在线视频| 91精品国产综合久久男男| 性国产高清在线观看| 亚洲丁香久久久| 加勒比在线一区| 国产精品盗摄一区二区三区| 中文字幕avav| 一本色道久久综合亚洲精品不| 日韩经典在线视频| 精品国产乱码一区二区三区| 欧美激情按摩在线| 国产精品四虎| 日韩一级高清毛片| 免费观看成人毛片| 国产亚洲综合在线| 亚洲成人福利视频| 久久一二三区| 热久久最新地址| 蜜臀av免费一区二区三区| 成人a级免费视频| 欧美激情20| 久久精品99久久香蕉国产色戒| 亚洲国产视频一区二区三区| 色94色欧美sute亚洲线路一ni | 91成人国产精品| 青青青在线视频| 国产日产精品一区| 免费看毛片的网站| 精品一区二区三区久久久| 99热自拍偷拍| 欧美在线国产| 视频一区二区三区在线观看| 国产精品45p| 成人激情视频网| 欧亚一区二区| 午夜免费日韩视频| 精品黄色免费中文电影在线播放| 亚洲精品成人久久久| 一区二区视频网站| 精品毛片网大全| 国产十六处破外女视频| 欧美国产一区在线| 国产精品jizz| 成人午夜看片网址| 亚洲精品中文字幕乱码无线| 日本不卡高清视频| 99热成人精品热久久66| 一区在线免费观看| 少妇高潮大叫好爽喷水| 成人久久综合| 欧美日韩最好看的视频| 噜噜噜狠狠夜夜躁精品仙踪林| 亚洲jizzjizz日本少妇| 国产成人福利夜色影视| 91成人在线播放| 99riav视频在线观看| 欧美第一黄色网| 182tv在线播放| 久久伊人精品视频| 日本三级视频在线观看| 国产一区av在线| 噜噜噜噜噜在线视频| 日韩av在线免费观看一区| 午夜精品久久久久久久96蜜桃| 制服.丝袜.亚洲.中文.综合| 在线免费a视频| 欧美日韩国产高清一区| 国产精品成人久久久| 色女孩综合影院| 亚洲欧美偷拍视频| 色偷偷88欧美精品久久久| 中文字幕av影院| 日本道色综合久久| 波多野结衣一本一道| 日本国产一区二区| 波多野结衣视频观看| 91久久国产综合久久| 中文字幕在线日本| 欧美亚洲免费在线一区| 真实的国产乱xxxx在线91| 欧美影院一区二区| 中文字幕制服诱惑| 在线成人av网站| 国内精品久久久久久久久久| 日韩美女视频在线| 色窝窝无码一区二区三区| 日韩av在线不卡| 黄色免费在线播放| 一级做a爰片久久毛片美女图片| av在线三区| 大胆人体色综合| 丁香高清在线观看完整电影视频| 亚州国产精品久久久| 国产免费不卡| 国产精品专区一| 欧美日韩中出| 欧美12av| 婷婷成人基地| 毛片在线视频播放| 日日夜夜精品视频天天综合网| 2025韩国理伦片在线观看| 国产真实乱对白精彩久久| 丰满人妻一区二区三区免费视频棣| zzijzzij亚洲日本少妇熟睡| 一道本在线观看| 最新国产精品久久精品| 91蜜桃视频在线观看| 色嗨嗨av一区二区三区| 国产又粗又猛视频| 精品国产精品网麻豆系列| 四虎精品成人影院观看地址| 日韩小视频网址| 黄色美女视频在线观看| 日韩av电影中文字幕| 电影一区二区三区久久免费观看| 国产精品视频福利| 色88久久久久高潮综合影院| 国产一线二线三线女| 日韩av中文字幕一区二区| 国产伦精品一区二区三区妓女下载| 91精彩视频在线播放| 视频二区欧美毛片免费观看| 成人性色生活片| 日韩最新中文字幕电影免费看| 国产乱人伦精品一区二区三区| 无码免费一区二区三区| 亚洲va欧美va人人爽成人影院| 91视频国产资源| 久久久爽爽爽美女图片| 五月天激情视频在线观看| 一区二区三区免费在线| 视频一区二区国产| 91蝌蚪视频在线观看| 国产mv日韩mv欧美| a天堂中文字幕| 亚洲成人av中文| 国产强被迫伦姧在线观看无码| 欧美成人自拍| 欧美在线一级视频| 视频国产精品| 亚洲精品人成| 久久精品中文| 色哟哟网站在线观看| 国产精品不卡一区二区三区| 特级西西444www大精品视频免费看| 宅男在线国产精品| 成人免费黄色网页| 97在线免费观看视频| 日韩精品免费视频一区二区三区| 亚洲高清乱码| 日韩精品三区四区| 短视频在线观看| 亚洲国产精品精华液网站| 国产又粗又黄又爽的视频| 一区二区在线视频| 欧美xoxoxo| 蜜桃精品久久久久久久免费影院| 中文字幕av亚洲精品一部二部| 色播五月综合网| 国产视频不卡一区| 久久久久99精品成人片我成大片| 亚洲国产成人久久综合| 国产精品一品| 99视频在线免费观看| 真实国产乱子伦精品一区二区三区| 亚洲天堂网一区| 亚洲国产精品黑人久久久| 午夜久久久久久久久久影院| 亚洲嫩模很污视频| 日韩免费电影| 日本一区不卡| 免费在线一区观看| 日本爱爱爱视频| 欧美日韩国产免费一区二区| 成年人视频免费在线观看| 国产精品久久久久久久美男| 欧美极品中文字幕| 天堂中文视频在线| 中文字幕第一区二区| 在线播放国产一区| 播播国产欧美激情| 欧美第一在线视频| 乱熟女高潮一区二区在线| 高清国产一区二区| 青青操免费在线视频| 日韩福利视频在线观看| 桃花岛成人影院| 亚洲国产一区二区三区在线播| 毛片av一区二区三区| 国产传媒免费在线观看| 日韩欧美国产一区二区在线播放| 羞羞视频在线观看免费| 国产区二精品视| 久久久精品网| 色www亚洲国产阿娇yao| 欧美一级欧美三级在线观看| 免费污视频在线| 久久国产日韩欧美| 日韩 欧美一区二区三区| 一级免费黄色录像| 亚洲精品在线免费播放| 女人高潮被爽到呻吟在线观看| 欧美日韩精品免费看| 蜜芽一区二区三区| 高h视频免费观看| 日韩成人小视频| 成人在线观看免费视频| 久久免费一级片| 2021国产精品久久精品| 一级黄色免费看| 韩国国内大量揄拍精品视频| 精品在线播放| 天天色天天干天天色| 富二代精品短视频| 午夜视频在线观看免费视频| 成人综合电影| 三级欧美在线一区| 欧美成人手机视频| 国产丝袜一区视频在线观看 | 国产精品九九久久久久久久| 婷婷亚洲最大| 欧美做受喷浆在线观看| 欧美精品粉嫩高潮一区二区| 女厕盗摄一区二区三区| 视频一区二区视频| 久久久精品欧美丰满| av网站在线免费看| 国产成人午夜视频网址| 欧美高清日韩| 久久午夜精品视频| 日韩av在线直播| 国产一区二区三区黄网站|