使用PHP,LAMPP和PostFix发送邮件


9

我已经尝试了整整2天了,但是我无法让最简单的事情起作用。

问题:无法将电子邮件从PHP发送到我的电子邮件地址

之前,我一直在使用WindowsSendmail(Sendmail在XAMPP软件包中),一切正常。但是,Linux的XAMPP软件包(1.7.7)没有集成Sendmail。因此,在四处搜寻之后,我发现Postfix更适合LAMPP环境。


到目前为止我尝试过的是:

我已经安装了Postfix,并希望将其配置为仅使用我的私人电子邮件提供程序的smtp服务器(就像在Windows上一样)。所以我像这样配置了我的php.ini

[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

sendmail_path = /etc/postfix
mail.add_x_header = On

请注意,我已经注释掉了“仅Win32”的东西。在/etc/postfix/main.cf文件看起来像这样:

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
myhostname = ubuntu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
sender_canonical_maps = hash:/etc/postfix/sender_canonical
mydestination = ubuntu, localhost.localdomain, localhost
relayhost = mail.gmx.net
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

/ etc / aliases不变:

# Required aliases
postmaster: root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:      postmaster
spam:       postmaster

/ etc / postfix / sasl_password

my.providers.smtp my_login:my_password

/ etc / postfic / sender_canonical:

postmaster my.email@ddress.com

怎么了:

所以当我这样做

> sudo /etc/init.d/postfix start

一切似乎都工作正常,/ var / log / mail.log说:“ ubuntu postfix / master [9720]:守护程序已启动-版本2.8.5,配置/ etc / postfix”

但是,当我运行我的PHP脚本(在Windows和Sendmail上运行良好)时,它一直运行并且什么也没有发生,甚至没有记录错误。


我实际上想要实现的目标:

我正在本地的电子商务网站上工作。它可以在专用的Web服务器上正常运行,但是出于明显的原因,我也希望它在本地运行。在某些情况下,它会发送电子邮件,而我只是希望能够通过Thunderbird或以任何其他方式接收它们。在这里使用Postfix过度杀伤力吗?我不需要接收电子邮件-我只想使发送的邮件以某种方式可见。对于该问题,我似乎找不到任何有用的分步教程(与Senmail和Postfix无关-但是,老实说,我对Linux非常陌生)。

Answers:


13

在您的php.ini中:

sendmail_path = /etc/postfix

应该是sendmail(或兼容)二进制文件的路径。
您已将其设置为不正确的postfix配置目录。

由于历史原因,通常/usr/bin/sendmail将其保留为兼容性链接。
sendmail(我想)是第一位的,几乎所有东西都假设它在已安装的MTA中。因此,如果不是,替换将建立符号链接,因此不会中断任何操作。


非常感谢!即使我不太了解,为什么Sendmail和Postfix可以一起工作以及以什么方式工作-现在也可以工作!我不记得在哪里阅读过有关将其设置为后缀的信息,但这对我来说是正确的设置:sendmail_path = "/usr/sbin/sendmail -t -i"
Quasdunk 2011年

添加了更多的信息-基本上它们不能一起工作,您没有sendmail,但假装是postfix,因为很多东西都希望它存在:)您可以同样地将sendmail_path设置为指向后缀二进制文件。

1
我记得!sendmail一次又一次地接一个错误接一个月接一个月的错误。有时,您可以在〜/ .forward中包含仅root用户命令,向自己发送邮件,然后在Unix / Linux系统上执行任何操作。有大量的出埃及记,新的邮件服务器包括一个类似于sendmail的程序,该程序设计为具有类似于sendmail的行为,因此,所有围绕sendmail构建自身的其他程序仍然可以轻松工作。

非常感谢您提供其他信息!现在,一切都变得更有意义了;)如果可以的话,我会再给您+1,但我希望其他认为同样有用的人也会对我有用:-D
Quasdunk 2011年

1

要从本地主机(WAMP,XAMP或LAMP)发送邮件,可以使用PHPMailer软件包

这将与自述文件中给出的指令相同。

WAMP(Windows):

首先,您必须编辑“ php.ini”。要查找此文件,请使用WAMP服务器中的以下代码来显示phpinfo。在C:/ wamp / www /中创建一个php文件[setting.php],并将以下内容添加到该文件中。

<?php
     echo phpinfo();
?>

在浏览器中键入localhost / setting.php。在那里搜索“已加载的配置文件”,这将是您的php.ini的路径。

php.ini文件中,删除指定给`extension = php_openssl.dll的;(半冒号)。现在服务器设置结束了...

  • 从github下载PHPMailer文件夹后,
  • 提取->将整个文件夹复制到您的项目文件夹,即C:/ wamp / www /
  • 找到index.php文件。
  • 根据需要更改参数。
  • 然后在浏览器中输入localhost / PHPMailer / index.php
  • 然后,如果发送了电子邮件,它将显示成功消息,否则将给出错误消息。

LAMP(Linux):

  • 如果是linux,则无需编辑php.ini文件,因为我在WAMP下解释了第一点。

  • 另一个更改是项目或文档根文件夹不同。

  • 在Linux中,默认的文档根文件夹为/ var / www
  • 您可以轻松更改文档根文件夹。为此请访问https://stackoverflow.com/a/17612396/1925943
  • 将PhpMailer复制到此文档的根文件夹,然后根据需要编辑index.php。
  • 然后在浏览器中键入localhost / PhpMailer / index.php

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.