用於 Web 應用程式開發的 WordPress:電子郵件集成

王林
發布: 2023-09-03 16:53:02
原創
752 人瀏覽過

用于 Web 应用程序开发的 WordPress:电子邮件集成

#每個網路應用程式的主要元件之一就是發送電子郵件的能力。

現在,這並不意味著每個 Web 應用程式都是自己的郵件用戶端(儘管人們確實創建了自己的郵件用戶端)。

相反,我的意思是,當用戶註冊、用戶修改密碼、系統中的某些內容發生變化時,或者更一般地說,每當發生網站所有者想要通知用戶的情況時,應用程式通常會發送電子郵件.

到目前為止,在本系列中,我們已經介紹了:

  • 使用者管理
  • 權限
  • 會話管理

上一篇文章可以說是我們將要介紹的最複雜的文章之一;但是,對於那些希望在專案中添加更多高級功能的人來說,這是必要的。

話雖如此,我們將從一些更複雜的材料中休息一下,看看 WordPress 在發送電子郵件方面必須提供什麼。


了解電子郵件

在我們深入了解 WordPress API 在發送電子郵件、自訂電子郵件等方面提供的功能之前,了解電子郵件的一些知識非常重要。

也就是說,了解創建實際電子郵件的組成部分非常重要 - 畢竟,它不僅僅是地址、主題和內容。

在我們開始建立自己的自訂電子郵件之前,有一些技術上的細微差別值得理解。

標題

簡而言之,電子郵件標頭包含最少的資訊集,包括:電子郵件的發送者以及電子郵件的發送地址。

通常,您可能會看到標頭中包含的其他資訊。例如,此資訊可能包括發送電子郵件的時間戳記。

對於 WordPress,除非另有指定,否則電子郵件標頭中指定的寄件者始終被定義為 WordPress 中的預設寄件者。

例如,如果您希望將回覆位址設定為“donotreply@domain.com”,那麼您必須對此進行自訂。

此外,通常最好以陣列的形式使用電子郵件標頭,以便您可以輕鬆建立、指定和傳遞地址、副本地址和密件副本收件者。

MIME 類型

當涉及電子郵件遵循的格式時,您可能會看到兩種形式:

  • 純文字
  • HTML

您已經習慣在大多數現代電子郵件用戶端中看到HTML;但是,如果您有一個更簡單的客戶端,將其設置為僅顯示純文本,或者您在稍舊的手機上閱讀電子郵件,那麼您將以純文字形式閱讀內容。

WordPress 可以以純文字或 HTML 形式傳送電子郵件。

當我們查看如何以程式設計方式發送電子郵件的範例時,我們將具體了解如何做到這一點。簡而言之,有一個鉤子可以讓它變得非常簡單 - 但我們會等待看到它的實際效果,直到我們介紹電子郵件的其餘必要部分。

附件

如您所知,附件實際上是您附加到電子郵件並發送給收件人的任何文件。

問題是,有一些管理電子郵件的規則 - 但它們不一定是由軟體設定的。相反,伺服器、電子郵件用戶端和其他各種規則限制了我們可以在收件匣中接收的內容。

例如:

  • 某些客戶端不允許發送 zip 檔案或可執行檔
  • 許多電子郵件服務都有可附加的最大檔案大小限制
  • 某些類型的電子郵件可能會根據其附件(或其內容)被標記為垃圾郵件

無論如何,這超出了我們的控制範圍 - 我們只需要知道我們向誰發送電子郵件的限制,並確保我們遵守這些限制。

為此,建立透過 WordPress 電子郵件傳送的附件非常簡單。

雖然附件顯然不是必需的,但您可能想要附加單一文件甚至多個文件。在 WordPress 中,這可以透過字串或陣列來完成。

我們現在不會具體了解如何做到這一點,但當我們查看如何以程式設計方式發送電子郵件的範例時,我們立即了解這一點。

收件人、主題和訊息

在最基本的層面上,每封電子郵件都包含一個「收件者」電子郵件地址、一個「主題」和一個「訊息” 」。

在 WordPress 中,這些設定也非常容易 - 只需為每個設定提供字串,然後就可以開始了。

當然,如果您想向多個人發送電子郵件,您可以迭代地址集合並為每個用戶發送一封電子郵件,您可以向WordPress 提供一組收件人郵件API ,它會將電子郵件發送給所有包含在內的人。

請記住:如果您想指定不同的 reply-to 位址,請在我們在本文前面介紹的標頭中指定該位址。


使用 WordPress 電子郵件 API

綜上所述,我們準備好實際了解 WordPress 電子郵件 API。

簡而言之,所有功能都包含在一個名為wp_mail 的函數中;但是,如果我們想充分利用該應用程式提供的功能,有一些我們需要注意的地方。

所需的掛鉤

具體來說,我們將使用以下鉤子:

  • wp_mail_content_type 允許我們定義正在傳送的電子郵件的 MIME 類型
  • wp_mail_from 是一個篩選器,我們可以使用它來定義寄件者位址,而不是使用 $headers 陣列
  • wp_mail_from_name 是一個過濾器,我們可以使用它來定義此人的寄件人,而不是使用 $headers 陣列
  • wp_login 是我們用於演示的鉤子,這樣每當有人登入 WordPress 儀表板時我們就會向某人發送電子郵件

為了完整起見,我將在下面分享整個程式碼,然後我們將逐步完成它。

原始碼

<?php
function acme_email_individual( $input ) {

	/**
	 * Note: assume that $input has keys for 'email-address'.
	 */

	// Generate the password
	$password = wp_generate_password ( 12, false );

	// Email the user that they're profile was created
	$message = 'Hey There,';
	$message .= '<br /><br />';
	$message .= 'Your account has been created. Your login information is below:';
	$message .= '<br />';
	$message .= '<ul>';
		$message .= '<li>Username: ' . $input['email-address'] . '</li>';
		$message .= '<li>Password: ' . $password . '</li>';
	$message .= '</ul>';
	$message .= '<br />';
	$message .= 'You can login to the application <a href="' . get_bloginfo( 'siteurl' ) . '">here</a>.';

	add_filter( 'wp_mail_content_type', create_function( '', 'return "text/html";' ) );
	add_filter( 'wp_mail_from', 'acme_mail_from' );
	add_filter( 'wp_mail_from_name', 'acme_mail_from_name' );
	wp_mail( $input['email-address'], 'Your Acme Account Has Been Created!', $message, array() );

}

function acme_mail_from( $email ) {
	// NOTE: replace [at] with @. This was causing problems with the syntax highlighter.
	return 'donotreply[at]acme.com';
}

function acme_mail_from_name( $name ) {
	return 'The Acme Company';
}
登入後複製

如果您到目前為止一直在閱讀本文,那麼這一切都不會太令人驚訝:畢竟,我們正在利用WordPress 提供的掛鉤,我們正在構建字串作為函數參數傳遞,然後我們調用 wp_mail 函數。

但請注意,我們傳遞一個空數組作為此電子郵件的 $headers 參數。這是因為我們使用自訂過濾器來設定“寄件者名稱”和“寄件者地址”,使用過濾器和掛鉤函數而不是陣列。

這種方式不一定比其他方式更好;然而,它的目的是證明有多種方法可以達到相同的結果。


現在,轉向數據!

這是 WordPress 的另一個功能,可以讓您輕鬆地將電子郵件功能包含到您的 Web 應用程式中。

事實上,我認為 WordPress 的事件模型使得在任何可以想像到的場景中引入電子郵件功能變得異常容易 - 如果有可用的鉤子,就可以發送電子郵件。

話雖如此,是時候將我們的注意力轉向 Web 應用程式開發最常見的方面之一:資料管理。

具體來說,我們需要研究如何將資訊保存到資料庫並從資料中檢索訊息,以及如何安全有效地完成這些操作。

因此,從下一篇文章開始,我們將這樣做。

#

以上是用於 Web 應用程式開發的 WordPress:電子郵件集成的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!