如何让我的 PHP 发送邮件?

JM *_*ork 74 php mail

我使用tasksel安装了Ubuntu 11.04和LAMP。

我发现 PHPmail()不起作用。

我想我需要启用它还是什么?我怎么做?

Dim*_* L. 64

如前所述,如果您只需要在家用计算机上开发应用程序时从 php 发送电子邮件,那么 postfix 将是一种矫枉过正。

我个人使用非常简单和轻量级的包 ssmtp。它将使用任何 smtp 服务器发送出站电子邮件。通过运行安装它:

sudo apt-get install ssmtp
Run Code Online (Sandbox Code Playgroud)

然后编辑/etc/ssmtp/ssmtp.conf文件,注释掉现有的 mailhub 行并添加以下行(此示例适用于 gmail smtp 服务器):

mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<YOUR-EMAIL>@gmail.com
AuthPass=<YOUR-PASSWORD>
Run Code Online (Sandbox Code Playgroud)

(提供您的 gmail 用户名和密码。当然您可以使用任何其他 SMTP 服务器)。

现在确保您的 php.ini 具有正确的sendmail_path. 它应该读作:

sendmail_path = /usr/sbin/sendmail -t
Run Code Online (Sandbox Code Playgroud)

来自@dima-l 和@omar-sabic 的评论:您不必ssmtp在此处指定,因为安装应该创建了一个符号链接 for /usr/sbin/sendmail,它正确指向ssmtp。否则您必须指定sendmail_path = /usr/sbin/ssmtp -t

重新加载 apache,您的 php 现在应该可以发送外发电子邮件了。

  • 我想你的意思是`sendmail_path = /usr/sbin/ssmtp -t`。这有效,谢谢 (4认同)
  • 更多关于配置`ssmtp`(找到一些有用的注释):[如何在Debian中设置PHP邮件](http://www.thewireframecommunity.com/node/39) - 这个问题+这个链接有助于设置程序. (2认同)

con*_*use 50

来自 php 的邮件手册:

要求

要使邮件功能可用,PHP 需要安装并运行的电子邮件系统。要使用的程序由 php.ini 文件中的配置设置定义。

这意味着您必须安装某种邮件服务器并配置 php 才能使用它。通常这个邮件服务器是 Ubuntu 中的 postfix。但是 - 如果您正在编码的 php 端最终将存储在托管服务端(例如 xmission),则邮件服务器很可能已经安装在那里。在这种情况下,只需在线而不是本地测试您的网站。

如果您需要在自己的系统上测试它或打算在自己的家庭服务器上托管它,请继续:

后缀安装

安装:后缀 安装后缀/sudo apt-get install postfix 在此过程中,系统会询问您希望以哪种模式安装 postfix。有四种可能的模式:

  • Internet:您自己的邮件服务器。
  • 卫星:外部邮件提供商(例如 Google)将用于发送和接收邮件。服务器将不会收到任何邮件。
  • Smarthost:两者之间的混合。邮件存储在本地,但通过外部邮件提供商发送。
  • 仅本地:不会关心您。那是一个系统实习生邮件服务器。您只能在系统上从用户向用户发送邮件。

其余的安装选项取决于您对此常规配置的选择。

您很可能会选择卫星安装。这意味着将使用外部提供程序发送邮件。作为 smtp-server(外发邮件服务器),您必须指定您的提供商 smtp。其余的选项是不言自明的。

安装后配置

大多数 smtp 服务器需要密码验证才能发送邮件。所以 postfix 需要知道那个密码。还有一些事情需要考虑加密(你必须谷歌)。这是使用密码身份验证 (sasl) 配置 postfix 的方式:

在大多数情况下应该这样做。然而,一些 smtp 提供商需要一个特定的地址作为发件人或加密。

相关:PEAR::Mail界面可能也对您感兴趣。

Gmail(可能还有其他服务)可能不喜欢您尝试以这种方式发送邮件,因为按照他们的标准,这可能被视为不安全,并且会阻止您的尝试,即屏幕上不会发生任何事情,或者整个过程的某个地方会阻止您的身份验证。此外,您的 POP3 必须启用。

要反击,请参见此处。(如果您想安全起见,请创建一个虚拟 Gmail 帐户)

  • 现在包 **libsasl2** 不存在。我正在使用 11.04。它的 **libsasl2-2** 根据更新的包.. (2认同)

col*_*lan 29

PHP 需要一个 SMTP 客户端来发送邮件。您可以安装像Postfix这样的全功能邮件传输代理 (MTA)来提供此功能,但如果您只需要通过 PHP 发送邮件,那就有点过分了。相反,安装msmtp。它是轻量级的,配置起来也简单得多。

安装 msmtp

sudo apt-get install msmtp-mta ca-certificates
Run Code Online (Sandbox Code Playgroud)

配置它

创建一个新的配置文件:

sudo vi /etc/msmtprc
Run Code Online (Sandbox Code Playgroud)

...具有以下配置信息:

# Set defaults.
defaults

# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

# Set up a default account's settings.
account default
host <smtp.example.net>
port 587
auth on
user <username@example.net>
password <password>
from <address-to-receive-bounces@example.net>
syslog LOG_MAIL
Run Code Online (Sandbox Code Playgroud)

您需要替换由“<”和“>”中的所有内容表示的配置数据(包括,删除这些)。对于主机/用户名/密码,使用您的普通凭据通过邮件提供商发送邮件。

告诉 PHP 使用它

sudo vi /etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)

添加这一行:

sendmail_path = /usr/bin/msmtp -t
Run Code Online (Sandbox Code Playgroud)

  • 要使 msmtp 在系统范围内可用,请安装“msmtp-mta”。 (2认同)