Magento 是怎么发邮件的

很多用 Magento 的人可能并不是技术人员,他们也不关心 Magento 是怎么发邮件的,只要能用就好了。不过知道这些会有助于发生问题时更快定位问题所在。

Magento 发送邮件的功能是建立在 Zend Framework 的 Zend_Mail 类基础上。负责完成该工作的是 Zend_Mail_Transport_Sendmail.php ,这个类又是建立在 PHP 的 Mail 基础上的。PHP 的 Mail 使用的是服务器提供的 sendmail 脚本来发送邮件。

如果你不知道 Magento 默认是使用服务器的 sendmail 来发邮件的,那么在后台弄好邮件相关设置后,就会莫名其妙地发现 Magento 还是不能发送邮件。

如何搭建一个简单的邮件服务器(邮件传输代理)呢?可以使用 postfix、sendmail 等等。这种做法的直接好处是,可以使用许多个邮箱地址,完成不同的工作。比如:一般的邮件用 owner@yourdomain.com ,销售相关的用 sales@yourdomain.com。下面的方式就不能使用多个邮箱地址了。

下面要说到的这种方式是使用 SMTP 插件。这种插件的原理是使用新的类代替 Zend_Mail_Transport_Sendmail.php 完成工作(实际上是\Magento\Framework\Mail\Transport 负责的),这个新的类可以设置 SMTP 。这种方式相当于你把账户名,密码告诉他,他直接用外部的邮件服务器发邮件。

这种方式只能配置一个账户,所以后台邮件地址得设置地和他一样。

以上是博主的个人理解,有错误还请各位纠正,谢谢!

SMTP 插件的实现可参考:https://webkul.com/blog/magento-2-send-mail-using-your-smtp-detail/

2 comments

  1. 从容の哈哈

    博主您好,我现在碰到的问题就是设置了自动回复邮件,但是不能发送到客户的邮箱。如果我在webmail里自己写邮件发送给客户的话,还是能够发送给客户的。这是哪里设置错了?

    1. Pisces Post author

      取决于你 smtp 插件的功能和设置。

发表评论

电子邮件地址不会被公开。 必填项已用*标注