【问题标题】:How to setup PHP to use another mail server?如何设置 PHP 以使用另一个邮件服务器?
【发布时间】:2015-11-13 20:36:46
【问题描述】:

我有一个负载平衡器,也可以用作邮件服务器。

我希望集群使用负载平衡器邮件服务器作为 PHP mail() 函数的默认邮件系统


集群设置

PHP

php.ini 文件上的设置如下所示:

[mail function]
SMTP = mail.email.info
smtp_port = 25
sendmail_from = me@example.com
sendmail_path = /usr/sbin/sendmail -t -i

负载均衡器设置

后缀

我已将此添加到main.cf

myhostname = mail.email.info
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.71 192.168.0.*

因为集群位于192.168.0.* 子网上。

LB 上的邮件服务器运行良好。我将它用于许多虚拟主机,并且它设置在许多邮件软件(例如 sparrow)上,所以这不太可能是它的问题,但更可能与它的权限有关。


在集群上运行 PHP 脚本时:

<?php
mail("test@example.com","subject","msg");
?>

什么都没有发生。为什么?!


请不要害怕询问更多信息。

【问题讨论】:

  • 根据 lxg 的评论,邮件处理因操作系统而异,您没有说明您在网络服务器上运行的是什么操作系统。 (我看到了标签,但它可能指的是 LB)
  • @symcbean:因为sendmail路径是/usr/sbin/sendmail,所以不太可能是Windows机器。

标签: php linux email


【解决方案1】:

根据 PHP 文档,smtp_port 和其他选项为only used on Windows。一般来说,PHP 的mail() 并不是真正为使用远程 MTA 而设计的。

我建议使用第三方库,例如 SwiftMailer。您不仅可以将邮件发送到远程 MTA,而且还可以获得一些有价值的附加功能:

  • 符合 RFC 标准的邮件,
  • 附件和多部分邮件,
  • S/MIME 支持对电子邮件进行签名和加密,
  • 直观的面向对象的 API,

还有更多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2021-09-01
    • 2011-02-26
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多