4

由于很难找到答案,我认为这可能是不可能的。如果是这样,我想确认这是不可能的。

4

3 回答 3

7

使用最新版本的PHPMailer有一种非常简单的方法。

require_once 'phpmailer/class.phpmailer.php';
require_once 'phpmailer/class.smtp.php';

$mail = new PHPMailer(true);
$mail->SMTPAuth = true;
$mail->Username = 'email@example.com';
$mail->Password = 'my_awesome_password';
$mail->Host = 'smtp.example.com';
$mail->Port = 465;

// This function returns TRUE if authentication
// was successful, or throws an exception otherwise
$validCredentials = $mail->SmtpConnect();

您可能需要根据目标 SMTP 服务更改端口号并启用 SSL。例如,Gmail需要SSL 连接。

要启用 SSL,请添加$mail->SMTPSecure = 'ssl';


注意:PHPMailer在失败时抛出异常。例如,用户名/密码不匹配可能会触发异常。为避免错误消息被打印在整个页面上,请将函数包装在 try/catch 块中。

$validCredentials = false;

try {
    $validCredentials = $mail->SmtpConnect();
}
catch(Exception $error) { /* Error handling ... */ }
于 2013-03-07T22:30:22.767 回答
1

这并非不可能。

您可以自己对 SMTP 交互进行编程,并检查 SMTP 协议中的凭据是否被接受的确认。对于这种方法,您必须与 SMTP 服务器进行套接字级别的通信(例如,使用 [PHP Sockets] 服务1)。

要了解 SMTP 协议的工作原理,请尝试使用 Telnet 手动进行一次。

http://technet.microsoft.com/en-us/library/aa995718(v=exchg.65).aspx

于 2012-12-18T19:55:32.967 回答
0

PHP邮件功能不支持 SMTP 认证。

您可以考虑第三方库,例如

http://swiftmailer.org/

http://pear.php.net/package/Mail

或者你可以试试这里的脚本

于 2012-12-18T19:58:55.197 回答