首頁 > 後端開發 > php教程 > 通過MailCatcher發送電子郵件調試

通過MailCatcher發送電子郵件調試

Jennifer Aniston
發布: 2025-02-21 11:15:09
原創
449 人瀏覽過

通過MailCatcher發送電子郵件調試

您在應用程序中使用電子郵件,對嗎?好的,這是一個修辭問題。當然,您會這樣做。儘管電子郵件已有30多年的歷史,但到目前為止,它仍然是地球上最受歡迎的應用程序。以下是Pingdom的一些統計數據,2012年:

>
  • 22億 - 全球電子郵件用戶的數量
  • 1440億 - 全球每天的電子郵件流量
  • 43億 - 2012年全球電子郵件客戶端的數量

驚人!

鑰匙要點

  • MailCatcher是開發人員的有用工具,可讓您在應用程序中測試電子郵件功能而無需實際將電子郵件發送到真實地址。它運行了一個簡單的SMTP服務器,該服務器會捕獲發送給它的任何消息並在Web界面中顯示。 >
  • > MailCatcher Web UI簡單有效,在隊列中列出電子郵件並提供有關它們的詳細信息。這是驗證您的代碼是否應付起來並且發送工作流程正常運行的絕佳方法。
  • >
  • >設置MailCatcher涉及將其安裝在虛擬機或Linux機器上,並配置您的應用程序將電子郵件發送到MailCatcher服務器。本文為此過程提供了詳細的說明和示例代碼。
  • >
  • >重要的是要注意,MailCatcher不是為生產環境使用的。它是一種用於在當地開發環境中使用的開發工具。在生產環境中使用它可能會導致丟失的電子郵件和其他問題。
  • >
但是為什麼要在電子郵件上另一篇文章?

>

出於一個簡單的原因,我們很可能在某個點或另一個點被抓住了。因為我們需要盡可能接近生產測試,但沒有意外地向客戶發送電子郵件,因此他們變得困惑或沮喪,或者為客戶收到測試電子郵件而感到尷尬。

>我敢肯定你知道我的意思。您認為您已將應用程序設置為某種調試模式。鑑於此,您開始測試,該測試從您的應用程序中發送了大量電子郵件。一直以來,您會感到很自在,因為他們知道,除了您會看到它們,但您都不會看到它們。

您的測試過去,您祝賀自己,然後繼續前進。不久之後,您會收到一個相反的內容,我們只是說 terse ,Skype呼叫您的客戶。隨著客戶的響起,她很生氣,問他們為什麼收到公司的奇數電子郵件。她不開心,想要答案嗎?

在那裡嗎?不想再在那裡嗎?我猜你沒有。這是解決方案 - 郵件捕捉器。如果您不熟悉,MailCatcher

…運行一個超級簡單的SMTP服務器,該服務器捕獲發送給它的任何消息以顯示在Web界面中。運行MailCatcher,將您喜歡的應用程序設置為SMTP://127.0.0.1:1025而不是您的默認SMTP服務器,然後查看http://127.0.0.1:1080,查看到目前為止到達的郵件。

>聽起來像是一個不錯的解決方案?無論您是疲倦,在壓力下,團隊中的新工作,還是只需要進行測試 - MailCatcher都將確保任何電子郵件都不會在您的網絡外發送,甚至在開發虛擬機上都不會發送。

>在這篇文章中,我將向您展示如何在電子郵件捕獲電子郵件時將其設置並通過界面運行。

>

預先準備的虛擬機

>為您節省了設置MailCatcher的麻煩,我創建了一個自定義的Vagrant Box,可以為您提供所有功能。確保已安裝了VirtualBox和Vagrant,然後使用以下命令克隆文章存儲庫的副本:

然後,在克隆的項目目錄中,運行以下命令:

<span>git clone git@github.com:sitepoint-examples/mailcatcher-article.git</span>
登入後複製
登入後複製
>這將啟動虛擬機配置過程,隨著配置過程的運行,顯示了很多輸出。配置的虛擬機非常簡約。它具有 sendmail>和
vagrant up
登入後複製
登入後複製
> nginx

已安裝。 > >手動安裝MailCatcher 如果您想自己安裝MailCatcher,並且擁有虛擬機(或可用的Linux機器),則是運行的步驟:

>您可能不必運行第三個命令。我這樣做了,因為我使用了非常簡約的Ubuntu精確的64 Vagrant Image,它需要包裝來構建MailCatcher。請注意,如果您使用不同的Linux發行版或版本,則單個軟件包名稱可能會有所不同。

注意:如果您遵循標準MailCatcher啟動過程,它將僅在IP 127.0.0.1和端口1025上收聽。使用此設置,我們將無法從主機計算機中看到它。因此,我在192.168.56.111上添加了公共IP,並更改了MailCatcher的配置,以便在所有IP上聽。

>現在,您可以在http://192.168.56.111:1080上查看MailCatcher Web UI。它看起來像下圖:

<span>sudo apt-get install -y vim curl python-software-properties lynx nginx
</span><span>sudo apt-get install -y php5-fpm php5-memcache memcached php-apc
</span><span>sudo apt-get install -y build-essential libsqlite3-dev ruby1.9.3
</span><span>sudo gem install mailcatcher
</span><span>sudo mailcatcher --http-ip 0.0.0.0</span>
登入後複製
登入後複製

>這是一個非常簡單的界面,在郵件捕獲隊列中列出了電子郵件,如果可用,則在頂部列出。當列表中有電子郵件時,底部窗格很好地向您展示了有關它們的信息,我們將在稍後看到。

示例代碼

>在本文中,我創建了一個簡單的PHP腳本,index.php,在項目存儲庫中可用,可以在http://192.168.56.111上訪問。它使用SwiftMailer連接到MailCatcher並在加載時發送電子郵件。您可以在相當標準的HTML頁面下方的代碼中看到。

<span>git clone git@github.com:sitepoint-examples/mailcatcher-article.git</span>
登入後複製
登入後複製

>包括郵件loader.php,可在下面可用。

>
vagrant up
登入後複製
登入後複製
如果您不熟悉SwiftMailer Aurelio在SitePoint上的文章,則提供了極好的介紹。順便說一句,這是我用於此示例的代碼。謝謝Aurelio。

基本上,只有一行對我們來說很重要,這是以下內容:>

>這將創建與我們剛剛設置的MailCatcher服務器的連接。就是這樣,沒什麼好看的!現在,我已經重新加載了該頁面三遍,該頁面已發送了三封電子郵件。您可以看到它們在下圖中的MailCatcher中列出。
<span>sudo apt-get install -y vim curl python-software-properties lynx nginx
</span><span>sudo apt-get install -y php5-fpm php5-memcache memcached php-apc
</span><span>sudo apt-get install -y build-essential libsqlite3-dev ruby1.9.3
</span><span>sudo gem install mailcatcher
</span><span>sudo mailcatcher --http-ip 0.0.0.0</span>
登入後複製
登入後複製
>

通過MailCatcher發送電子郵件調試>我單擊了第一個條目,該條目顯示了收到,從,和主題詳細信息以及電子郵件的正文。如果我們切換到源標籤,如下圖所示,我們可以看到原始的電子郵件詳細信息:>

通過第三個選項卡,我們可以使用分形來分析電子郵件的內容。今天我會跳過這一點,因為它超出了本文的範圍。 通過MailCatcher發送電子郵件調試

我們都是設置

>完成此操作,我們現在可以像以前那樣創建電子郵件,設置收件人,主題,附件等,如我上面的內容,並且知道它們永遠不會真正進入真實的地址。

我們可以編寫測試,以驗證代碼是否應有起作用。我們可以檢查發送工作流,檢查消息內容,收件人,標題等的郵件。它盡可能地實用,而沒有實際發送我們環境之外的任何東西。

>現在,我們可以放心,我們的客戶(及其客戶)將永遠不會收到任何從未打算給他們的電子郵件。真是一種解脫。

總結

現在,這是一個相當微不足道的示例,僅在示例中使用簡單的SwiftMailer代碼段。我敢肯定,您的代碼庫比這個示例要復雜得多。

>但是,我敢肯定,在您的應用程序中,您可以進行調試和測試配置,您可以在其中設置主機和端口,並將其與Live區分開。通過這樣做,沒有其他代碼需要更改,您可以從MindCatcher帶來的心靈的好處中獲得好處。

您已經使用MailCatcher嗎?您將其整合的經驗是什麼?有沒有發現您不知道的問題?在評論中分享您的想法。

經常詢問有關MailCatcher的問題

>如何在系統上安裝MailCatcher?

>安裝MailCatcher是一個簡單的過程。首先,您需要確保系統上安裝了Ruby和Rubygems。擁有這些先決條件後,您可以通過在終端中運行命令GEM安裝MailCatcher來安裝MailCatcher。安裝完成後,您可以通過在終端中運行命令MailCatcher來啟動MailCatcher。現在,您應該能夠訪問http:// localhost:1080。

>我如何配置我的應用程序以使用mailCatcher?

您的應用程序的SMTP設置指向MailCatcher的SMTP服務器。該服務器在Localhost上運行並在端口1025上傾聽。設置這些值的確切過程將取決於您的應用程序的語言和框架,但是通常,您需要將SMTP地址設置為“ Local -Host”,而SMTP端口則將其設置為'1025 '。

我可以在生產環境中使用MailCatcher嗎?

MailCatcher並非設計用於生產環境。它是一種用於在當地開發環境中使用的開發工具。在生產環境中使用MailCatcher會導致丟失的電子郵件和其他問題。對於生產環境,您應該使用可靠的,可生產的SMTP服務器。

>

>如何查看我在MailCatcher中的應用程序發送的電子郵件?

>

已經啟動了MailCatcher服務器,您的應用程序發送的任何電子郵件都將被MailCatcher捕獲並顯示在其Web界面中。您可以通過導航到Web瀏覽器中的http:// localhost:1080來訪問此界面。在這裡,您將看到MailCatcher捕獲的所有電子郵件的列表,您可以單擊任何電子郵件以查看其內容。

>

如何清除MailCatcher中的電子郵件?

清除MailCatcher中的電子郵件就像在MailCatcher Web界面中單擊“清除”按鈕一樣簡單。這將從接口中刪除所有電子郵件。請注意,一旦清除了電子郵件,就無法恢復它們。

>我可以將MailCatcher與Docker使用嗎?有包括MailCatcher的Docker圖像,您還可以創建自己的Dockerfile,以將MailCatcher包括在Docker設置中。在Docker容器中運行MailCatcher時,您將需要確保曝光適當的端口,以便您的應用程序可以連接到MailCatcher SMTP服務器。

>如何對MailCatcher進行故障排除?

如果您在MailCatcher上遇到麻煩,第一步是檢查終端中的輸出是否有任何錯誤消息。這些消息通常可以提供有關出現問題的線索。如果您在發送電子郵件時遇到困難,請確保正確配置了您的應用程序的SMTP設置以指向MailCatcher的SMTP服務器。

我可以將MailCatcher與多個項目使用嗎?帶有多個項目的MailCatcher。只要每個項目都配置為將電子郵件發送到同一SMTP服務器(即MailCatcher的SMTP服務器),MailCatcher就會從所有這些項目中捕獲電子郵件。

>如何停止MailCatcher服務器?

>您可以通過在啟動MailCatcher的終端中按CTRL C來停止MailCatcher服務器。另外,如果您啟動MailCatcher作為背景過程,則可以通過運行命令Killall MailCatcher來停止它。

我可以自定義MailCatcher Web界面的外觀和感覺嗎?

MailCatcher Web界面的感覺無法自定義。但是,由於MailCatcher是開源的,因此您可能會修改源代碼以自定義接口。請注意,這將需要對Ruby和Sinatra Web框架有很好的了解。

以上是通過MailCatcher發送電子郵件調試的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板