【发布时间】:2013-03-31 06:59:40
【问题描述】:
由于很难找到答案,我认为这可能是不可能的。如果是这样,我想确认这是不可能的。
【问题讨论】:
由于很难找到答案,我认为这可能是不可能的。如果是这样,我想确认这是不可能的。
【问题讨论】:
使用最新版本的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 ... */ }
【讨论】:
这并非不可能。
您可以自己对 SMTP 交互进行编程,并检查 SMTP 协议中的凭据是否被接受的确认。对于这种方法,您必须与 SMTP 服务器进行套接字级别的通信(例如,使用 [PHP Sockets] service1)。
要了解 SMTP 协议的工作原理,请尝试使用 Telnet 手动完成一次。
http://technet.microsoft.com/en-us/library/aa995718(v=exchg.65).aspx
【讨论】:
【讨论】: