自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

譯文 精選
開(kāi)發(fā) 后端
簡(jiǎn)單郵件傳輸協(xié)議(SMTP)是一種廣泛應(yīng)用于各類(lèi)應(yīng)用程序和網(wǎng)站,用于發(fā)送電子郵件的標(biāo)準(zhǔn)協(xié)議。而 Mailtrap 則是一款專(zhuān)門(mén)設(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)用于各類(lèi)應(yīng)用程序和網(wǎng)站,用于發(fā)送電子郵件的標(biāo)準(zhǔn)協(xié)議。而 Mailtrap 則是一款專(zhuān)門(mén)設(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”這類(lèi)具體的服務(wù)器地址。
  • “port”指的是服務(wù)器使用的通信端口。通常推薦使用587端口,該端口用于通過(guò)TLS加密方式安全地發(fā)送電子郵件。

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

smtpObj.sendmail(sender, receivers, message)

若要確認(rèn)“smtplib”模塊是否已正確導(dǎo)入,同時(shí)查看參數(shù)和類(lèi)的完整描述信息,可運(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ò)釣魚(yú)以及偽造郵件等安全風(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ì)每種記錄類(lèi)型進(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)入口名稱(chēng)雖有所不同,但功能類(lèi)似。
  • 接下來(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)定性和資源的合理利用。

安全提示

在編寫(xiě)發(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)銷(xiāo)郵件、時(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)入的類(lèi)有MailtrapClientMail 以及Address。
  • Mail對(duì)象包含以下部分:

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

b.發(fā)件人信息:Sender”字段,使用“Address類(lèi)來(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類(lèi)對(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ī)密信息這類(lèi)敏感數(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!")

專(zhuān)業(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或者谷歌云這類(lèi)平臺(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

2020-02-26 13:47:57

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

2010-06-10 14:10:58

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

2009-10-14 10:10:05

2018-06-28 16:19:09

2011-08-01 12:43:03

2010-05-21 15:27:39

GoogleGmail

2009-05-21 10:07:43

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

2020-05-25 14:32:42

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

2010-09-09 17:11:32

2010-09-15 14:14:50

2021-06-16 10:56:32

電子郵件電子郵件攻擊BEC

2009-12-16 11:47:24

賽門(mén)鐵克垃圾郵件電子郵件

2013-04-17 11:11:28

2009-01-16 09:08:00

2009-02-17 09:49:38

郵件歸檔備份歸檔歸檔即服務(wù)

2009-12-17 11:38:05

點(diǎn)贊
收藏

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