態
鑰匙要點
Swift Mailer是一個功能強大的,基於組件的庫,允許程序員使用面向對象的方法輕鬆發送電子郵件,而SPL擴展名則最小的PHP 5.2或更高要求,最小內存限制為8MB。
Swift Mailer可以通過梨安裝,也可以通過使用FTP上傳文件來安裝。它由150多個類別和接口組成,包括郵件,運輸商,MIME實體,編碼器和插件。 - >
Swift Mailer提供了功能,可以與多個收件人,一個主題和平坦的主體創建電子郵件。它還允許附件,自定義SMTP配置以及跟踪未收到電子郵件的收件人。
Swift Mailer還具有一個裝飾插件,可讓您將相同的電子郵件發送給具有較小差異的幾個收件人,例如電子郵件主體內的收件人名稱。這對於將新聞通訊發送給訂閱者等任務是有益的。 - >
以編程方式發送電子郵件是程序員必須經常處理的常見任務。儘管您可以使用PHP的本機功能,但它們可能太低,尤其是當您想將一個或多個文件附加到消息時。如果您不想使用本機函數,或者您想使用面向對象的方法發送郵件,那麼這就是您的文章。我將向您介紹Swift Mailer,這是一個功能強大的基於組件的庫,可以讓您輕鬆發送電子郵件。
Swift Mailer始於2005年,是一個提供多個類的庫,可讓您從PHP腳本或Web應用程序中發送電子郵件。 Swift Mailer有一些要求,但是它們很小。圖書館需要PHP 5.2或更高,具有SPL擴展名,最小內存限制為8MB。
引用正式文檔,安裝Swift Mailer是微不足道的。通常,這只是將提取的源文件上傳到您的Web服務器的一種情況。安裝庫的最簡單方法是通過梨或使用FTP上傳文件。
從梨通道安裝只是兩個類型命令的問題:
-
如果您使用共享託管,並且無法訪問命令殼,那麼第二種方法可能是最容易的方法。只需從官方網站下載圖書館並上傳LIB文件夾即可。
Swift Mailer classs -
Swift Mailer由150多個類別和界面組成,將其分成幾個組件。他們每個人都有一個特定的目的。
Mailer:由Swift_mailer類實現的Mailer是庫中的中央類,也是通過方法發送()實際發送電子郵件的中央類。它的構造函數接受了實現接口swift_transport的類的實例,該類別允許您使用自定義SMTP發送電子郵件。
pear channel-discover pear.swiftmailer.org
pear install swift/swift
>運輸商:他們實現接口Swift_transport,其範圍是與服務進行通信以傳遞電子郵件。主要類是Swift_smtptransport,它使用SMTP協議,Swift_SendMailTransport,它與本地sendmail可執行文件進行通信,而Swift_mailtransport則依賴於php natival Mail()函數。
> MIME實體:這是庫中的關鍵組件。您將用來指定接收器,主題,身體等的類,稱為Swift_message,由幾個分組在一起的實體組成。實體的兩個示例是附件和電子郵件標頭。
>編碼器:此組件不是您要處理的,因為它在幕後行動。編碼器有兩種類型:base64和引用打印機。他們的目標是將內容轉換為符合RFC規範的格式。
>插件:這些用於擴展Swift Mailer的基本功能。某些插件是防液,它允許您限制單個SMTP連接期間發送的消息數,記錄器,用於登錄發送過程中發生的事情,而Decorator則是一個驚人的插件,它允許您使用電子郵件模板並在電子郵件文本中更改幾個差異。
一個基本示例
到目前為止和我在一起嗎?好的。現在,您已經了解瞭如何在圖書館中組織組件,讓我們弄髒雙手,看看如何利用Swift Mailer的力量和靈活性。在第一個非常簡單的示例中,我將向您展示一個電子郵件的創建,該電子郵件具有兩個收件人,一個主題和一個普通文本的主體。創建後,它將發送給收件人。
以下代碼使用上一節中提到的三個類:swift_mailtransport,swift_mailer和swift_message。此外,請注意代碼的第一行,即需要使用庫需要的Swift Mailer的自動加載器。
如您所見,Swift_mailtransport用於創建一個將使用本機PHP Mail()函數的傳輸層實例。然後我創建了一個swift_message
您可以將其視為電子郵件對象的實例。在以下幾行中,我使用Setto()方法,使用setSubject(),使用setBody()的電子郵件主體以及使用setFrom()方法來設置收件人。通過定義的層和創建的電子郵件,是時候實際發送電子郵件了,該電子郵件是使用Swift_mailer類的send()方法完成的。
一個帶有附件的示例
pear channel-discover pear.swiftmailer.org
pear install swift/swift
毫無疑問,附件是當今電子郵件系統的主要內容。沒有他們,沒有人可以活著。這個稍微複雜的示例將向您展示如何發送一封電子郵件,不僅具有附件,而且還具有其他功能。
>另外兩個接收器,一個在CC中,第二個接收器使用setcc()和setBcc()。
>使用附加方法從磁盤檢索的一個附件。
>使用swift_smtptransport類的自定義SMTP配置。
知道哪些收件人尚未使用send()方法的第二個參數收到電子郵件。
>
我使用了不同的傳輸層,一個使用Swift_smtptransport類設置的SMTP
pear channel-discover pear.swiftmailer.org
pear install swift/swift
。它接受兩個參數:SMTP服務器和連接端口。您可以使用該實例設置適當的用戶名和密碼,以使用setUsername()和setPassword()方法訪問服務器。然後,就像第一個示例一樣,我創建了一個swift_message對象,並設置收件人,主題等。但是,這次我還利用了SETCC()和SETBCC()
正如您可能猜到的那樣,方法可以使您設置碳複製和盲碳複製收件人。
此示例的關鍵方法是附加(),該方法使用static方法從硬盤中獲取的文件(),該靜態方法從()沿著要附加作為其參數附加的文件的路徑。請注意,這次我還使用Send()方法的第二個參數打印了檢索到的失敗收件人的數量。
使用模板
第三個也是最後一個示例向您展示瞭如何使用Decorator插件,非常適合將新聞通訊發送給訂戶。它使您可以將相同的電子郵件發送給幾個具有較小差異的收件人,例如電子郵件主體內的收件人名稱。該插件將在模板內(主體)內部查看,並將用設定值替換佔位符。
要使用插件,您首先需要使用registerplugin()方法進行註冊,然後構建和使用替換值數組。在以下代碼中,我將放置兩個佔位符,
> username
和> transactions
,這些佔位符將通過參考用戶電子郵件的值替換。
裝飾器插件構造函數接受一個參數:一個值陣列以替換佔位符。此數組的每個值都使用用戶的電子郵件以及包含佔位符補充對的子陣列。這正是$替換陣列的目的。在上面的示例中,作為佔位符,我在兩個括號內使用了一個字符串(即{fullname})但是您可以使用任何想要的東西。這次,我沒有像以前一樣將所有收件人設置為同一語句中的所有收件人,我使用了循環。之所以這樣做,是因為插件攔截了發送過程,讀取收件人電子郵件,並使用替換陣列的值替換了佔位符。
結論
在本文中,我展示瞭如何使用Swift Mailer輕鬆發送電子郵件。如您所見,這是一個非常強大的庫,可以使用OOP方法來做很多事情。當然,Swift Mailer還有很多其他方法和課程,我在本文中沒有介紹過。您可以在官方文檔中研究它們,但這應該足以讓您開始毫無麻煩地發送電子郵件。
通過fotolia
圖像
經常詢問有關Swift Mailer的問題
>如何使用Composer安裝Swift Mailer?
> Swift Mailer可以使用Composer輕鬆安裝Composer,該工具是PHP中依賴關係管理的工具。要安裝Swift Mailer,您需要在系統上安裝作曲家。安裝了作曲家後,您可以通過在項目目錄中運行以下命令來安裝Swift Mailer:作曲家需要“ Swiftmailer/SwiftMailer:^6.0”。此命令告訴作曲家將Swift Mailer軟件包及其依賴項下載到您的項目中。
>
>我如何使用Swift Mailer發送電子郵件?
>
>與Swift Mailer一起發送電子郵件涉及創建消息,配置郵件器並發送消息。這是如何使用Swift Mailer發送電子郵件的基本示例:
require_once'/path/to/vendor/autoload.php'php';
> - > setSubject('Hello')
- > setFrom(['john@doe.com'=>'john doe'])
> - > setto(['receiver@domain.org','elethn @domain.org'=>'a name'])
- > setBody('這是消息本身');
> $ transport =(new Swift_smtptransport('smtp.example.org',25))
> - > setUsername('yourSername'')
> - > setPassword('your password');
$ mailer = new swift_mailer($ transport);
$ $ result = $ mailer-> send($ message) >如何使用Swift Mailer將附件添加到電子郵件中?您可以從路徑,字符串或現有的Swift附件實例附加文件。這是如何從路徑附加文件的示例:
$ message =(new swift_message()) - > setSubject('hello'')
- > setfrom(['john john @doe .com'=>'john doe'])) - > setto(['receiver@domain.org'])
- > setBody('這是消息本身')
- >附加( swift_attachment :: frompath('path/to/to/to/image.jpg'));
>如何使用Swift Mailer發送HTML電子郵件?
Swift Mailer允許您通過將郵件的主體設置為HTML字符串並將內容類型設置為“ text/html”來發送HTML電子郵件。這是一個示例:
$ message =(new Swift_message())
- > setSubject('Hello')
- > setFrom(['john@doe.com'=>'john doe']))
- > setto(['recevive@domain.org'])
- > setBody('
這是 html 消息本身 p>','text/html');
>在發生錯誤時,如何處理Swift Mailer中的錯誤?您可以捕獲這些例外來處理錯誤。這是一個示例:
嘗試{
$ result = $ mailer-> send($ messagy)發送電子郵件:'。美元設置。這是一個示例:
$ transport =(new Swift_smtptransport('smtp.gmail.com',465,'ssl'))
> - > setUsername('gmail username'your gmail username'' ) > setPassword('您的gmail密碼');
>如何使用Swift Mailer發送多個電子郵件?
> >您可以通過創建多個消息實例並使用同一Mailer實例發送多個電子郵件,並通過Swift Mailer發送多個電子郵件。這是一個示例:
$ message1 =(new swift_message())
- > setSubject('Hello')
- > setFrom(['john@doe.com'=>'john john doe']))
- > setto(['receviver1@domain.org'])
> - > setBody('這是消息本身');
$ message2 =(new Swift_message())
- > setSubject('Hello') - > setFrom(['john@doe.com'=>'John Doe ']))
- > setto(['receiver2@domain.org'])
- > setBody('這是消息本身') ;
$ result1 = $ mailer-> send($ message1);
$ result2 = $ mailer-> send($ message2);
>
>我如何使用Swift使用SYMFONY?
Swift Mailer與Symfony集成在一起,可以用作服務。您可以通過獲取郵件服務並使用它發送消息來與Swift Mailer一起發送電子郵件。這是一個示例:
$ message =(new Swift_message())
- > setSubject('Hello')
- > setFrom(['john@doe.com'=>'john doe']))
- > setto(['recevive@domain.org'])
- > setBody('這是消息本身');
$ this-> get(' mailer') - > send($ message);
>>如何使用Swift Mailer?
>您可以通過在消息實例上調用SetPriority方法來設置電子郵件的優先級。優先級是1(最高)和5(最低)之間的整數。這是一個示例:
$ message =(new Swift_message())
- > setSubject('Hello')
- > setFrom(['john@doe.com'=>'john doe']))
- > setto(['recevive@domain.org'])
> setBody('這是消息本身')
> - > setPriority(1);
>如何使用Swift Mailer異步發送電子郵件?但是,您可以使用消息隊列實現這一目標。您可以加入消息,然後將它們發送到單獨的過程中。這允許您的應用程序繼續處理其他任務而無需等待發送電子郵件。 >
以上是PHP主|與Swift Mailer一起發送電子郵件的詳細內容。更多資訊請關注PHP中文網其他相關文章!