我已经尝试了整整两天,但就是无法让最简单的事情发挥作用。
问题:无法通过 PHP 向我的电子邮件地址发送电子邮件
我一直在与视窗和发送邮件(Sendmail 在 XAMPP 软件包中)之前一切正常。但是 Linux 的 XAMPP 软件包(1.7.7)没有集成 Sendmail。所以在谷歌上搜索了一下后,我发现后缀更适合 LAMPP 环境。
到目前为止我已经尝试过:
我已经安装了后缀并希望将其配置为使用我的私人电子邮件提供商的 smtp 服务器(就像在 Windows 上一样)。所以我配置了我的php.ini像这样:
[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25
; For Win32 only.
;sendmail_from = [email protected]
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/别名不变:
# Required aliases
postmaster: root
MAILER-DAEMON: postmaster
# Common aliases
abuse: postmaster
spam: postmaster
密码:/etc/postfix/sasl_密码:
my.providers.smtp my_login:my_password
/etc/postfic/sender_canonical:
postmaster [email protected]
会发生什么:
所以当我这样做
> sudo /etc/init.d/postfix start
一切似乎都运行良好,/var/log/mail.log说:“ubuntu postfix/master[9720]: 守护进程已启动 -- 版本 2.8.5,配置 /etc/postfix”
但是当我运行我的 PHP 脚本(在 Windows 和 Sendmail 上运行良好)时,它只是运行,什么也没有发生,甚至没有记录任何错误。
我真正想要实现的是:
我在本地开发一个电子商务网站。它在专用网络服务器上运行良好,但出于显而易见的原因,我也希望它在本地运行。在某些情况下,它会发送电子邮件,我只想能够使用 Thunderbird 或任何其他方式接收它们。正在使用后缀是不是有点过分了?我不需要接收电子邮件 - 我只是想让已发送的邮件以某种方式可见。我似乎找不到任何有用的分步教程来解决这个问题(无论是关于 Senmail 还是 Postfix - 但说实话,我对 Linux 还很陌生)。
答案1
在您的 php.ini 中,以下内容:
sendmail_path = /etc/postfix
应该是 sendmail(或兼容)二进制文件的路径。
您已将其设置为 postfix 的配置目录,这是不正确的。
由于历史原因,通常/usr/bin/sendmail
将其作为兼容链接保留。
sendmail
首先出现(我猜)并且几乎所有东西都假设它位于已安装的 MTA 中。因此,当它不在时,替换会创建一个符号链接,这样就不会出现任何问题。
答案2
要从本地主机(WAMP、XAMP 或 LAMP)发送邮件,您可以使用 PHPMailer 包
- 点击此处从github下载https://github.com/shashidhark/PhpMailer并按照自述文件中给出的说明进行操作。
这将是自述文件中给出的相同说明。
WAMP(Windows):
首先,您必须编辑“php.ini”。要找到此文件,请使用 WAMP 服务器中的以下代码显示 phpinfo。在 C:/wamp/www/ 中创建一个 php 文件 [setting.php],并将以下内容添加到该文件。
<?php
echo phpinfo();
?>
类型本地主机/setting.php在浏览器中。在那里搜索“已加载的配置文件”,这将是您的php.ini。
在php.ini文件删除赋予“extension=php_openssl.dll”的 ;(分号)。现在服务器设置已结束...
- 从 github 下载 PHPMailer 文件夹后,
- 解压->将完整文件夹复制到你的项目文件夹,即 C:/wamp/www/
- 找到 index.php 文件。
- 根据需要更改参数。
- 然后在浏览器中输入本地主机/PHPMailer/index.php。
- 如果电子邮件已发送,它将显示成功消息,否则它将显示错误消息。
LAMP(Linux):
如果是 Linux,则无需编辑 php.ini 文件,正如我在 WAMP 下解释的第一点。
还有一个变化是项目或文档根文件夹不同。
- 在 Linux 中,默认文档根文件夹为 /var/www
- 您可以轻松更改文档根文件夹。要访问https://stackoverflow.com/a/17612396/1925943
- 将 PhpMailer 复制到此文档根文件夹并根据需要编辑 index.php。
- 然后输入本地主机/PhpMailer/index.php在浏览器中。
答案3
要从本地主机通过 Gmail 发送电子邮件(使用 sendmail 包),请检查PHP+Ubuntu 使用 gmail 表单本地主机发送电子邮件可能有另一个答案。