首页 >后端开发 >php教程 >通过MailCatcher发送电子邮件调试

通过MailCatcher发送电子邮件调试

Jennifer Aniston
Jennifer Aniston原创
2025-02-21 11:15:09461浏览

通过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