没有使用mail()函数发送电子邮件的任何PHP函数

4

我正在使用mail()函数在PHP中发送电子邮件,不需要任何身份验证。

这个函数只在我的Web服务器上工作,但在本地机器上无法工作。

我正在寻找最佳的PHP函数来发送带有身份验证的电子邮件,可以在任何机器上工作,而不需要修改php.ini文件。

我正在使用PHP和IIS以及Windows操作系统。

谢谢。

4个回答

3
另一种可能性是通过pear安装邮件和net_smtp。
pear install Mail
pear install Net_Smtp

然后您可以使用SMTP身份验证将邮件发送到另一台服务器:

require_once "Mail.php";

$body = "Mein Mail Body\n";
$subject = "Mail mit SMTP Authentifizierung";
$mail_to = "zumir@meinemailserver.de";
$mail_from = "phpmailer@meinemailserver.de";

//SMTP Verbindungsdaten
$host = "smtp.meinemailserver.de";
$username = "phpmailer";
$password = "SuperGeheim";

$smtp = Mail::factory('smtp',
 array (
 'host' => $host,
 'auth' => true,
 'username' => $username,
 'password' => $password
));

$headers = array (
 'From' => $mail_from,
 'To' => $mail_to,
 'Subject' => $subject
);
$mail = $smtp->send($mail_to, $headers, $body);

if (PEAR::isError($mail)) {
 echo "Fehler beim Versender der E-Mail : ". $mail->getMessage();
}

(摘自http://www.jgeppert.com/2009/06/php-e-mail-mit-smtp-authentifizierung-versenden/

该文讲述如何使用SMTP身份验证在PHP中发送电子邮件。

另一种方法是配置php.ini文件。 - Aurril
你也可以在Windows上安装PEAR: 在你的PHP安装文件夹中应该有一个名为“go-pear.bat”的批处理文件。 使用此文件来安装pear。 - Aurril
抱歉我不知道如何安装PEAR,我有以下的go-pear.bat文本:@ECHO OFF set PHP_BIN=php.exe %PHP_BIN% -d output_buffering=0 PEAR\go-pear.phar pause你能告诉我如何安装吗? - air
打开cmd.exe并进入您的php目录,其中go-pear.bat位于其中。 然后只需键入“go-pear”,并按照屏幕上的说明操作即可。 - Aurril
谢谢你的帮助,我完成后复制并粘贴了你的代码,但是它没有起作用... - air

1

你应该运行一个本地的smtp服务器。只要这个程序正在运行,就可以让mail()正常工作。还有其他类似的服务器,它们会将邮件写入文件,因此在开发环境中实际上不会发出任何邮件。

Mail()是发送邮件的最佳方式。你只需要在本地进行配置即可 :D


我发现它甚至在没有SMTP服务器的情况下也能工作...现在想想似乎有点奇怪! - Rich Bradshaw

1
如果您只需要一个工作的SMTP服务器来在自己的计算机上进行测试,请在您的计算机上运行这个小程序,这样您就可以在不改变邮件处理代码的情况下测试邮件功能。 http://www.softstack.com/freesmtp.html(免费独立简单SMTP服务器)。

1

本周早些时候我遇到了这个问题,并找到了SwiftMailer。我只听说过它的好处。对我很有效。

它可以通过SMTP、sendmail或mail()发送。 对于本地开发,您需要连接到SMTP服务器,无论是在本地运行的还是外部服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接