phpmailer error SMTP Error: Could not connect to SMTP host Could not instantiate mail function

这几天用一个开源的项目进行集成。可惜自带的邮件发布系统不能正常使用,我使用了phpmailer。

接下来就是集成时的错误。

我本机环境为:XP SP3(操作系统) + zendserver5.1.0(php环境) + micrisoft security essentials(杀毒软件)

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = $INI['mail']['host'];
$mail->SMTPAuth = true;
$mail->Username = $INI['mail']['user'];
$mail->Password = $INI['mail']['pass'];

$mail->From = $INI['mail']['from'];
$mail->FromName = $INI['system']['sitename'];
$mail->AddAddress($to);
$mail->AddReplyTo($INI['mail']['reply'], $mail->FromName);
$mail->WordWrap = 50;

$mail->IsHTML(true);

$mail->Subject = $subject;
$mail->Body    = $message;
$mail->AltBody = $message;
if(!$mail->Send())
{
echo “Message could not be sent. <p>”;
echo “Mailer Error: ” . $mail->ErrorInfo;
exit;
}

这个没有讲头,如果连这个基本配置都不明白,请google一下。
本地能正常发送,没有任何问题。

服务器环境:windows2003(操作系统) + iis6.0 + php5.2.9(php环境) + Mcafee(麦咖啡杀毒软件)

好了,问题来了,第一个问题:

1. SMTP Error: Could not connect to SMTP host

原因:

不同邮件系统要求的smtp请求不同,但是都允许大写,有些不支持小写,比如网易,腾讯的邮箱。

解决方法:

public function IsSMTP() {
$this->Mailer = ‘SMTP’; // 将smtp ->SMTP ;即原来是小写,现在大写。
}

// Choose the mailer and send through it
switch($this->Mailer) {
case ‘sendmail’:
return $this->SendmailSend($header, $body);
case ‘SMTP’:                                             //同样 将smtp ->SMTP ;即原来是小写,现在大写。
return $this->SmtpSend($header, $body);
case ‘mail’:
default:
return $this->MailSend($header, $body);
}

2. Could not instantiate mail function

原因:

设置的参数不正确,我使用了gmail做一些基本测试,需要在次设置其他参数。

解决方法:

$mail->SMTPSecure = ‘tls’; //只需要加上这句

3. SMTP Error: Could not connect to SMTP host

原因:

再次回到这个问题上了。这次需要修改php.ini文件,和关闭相关的杀毒软件,关闭防火墙。这将会对服务器造成一些威胁。

解决方法:

首先,在php.ini中去掉下面的两个分号

;extension=php_sockets.dll

;extension=php_openssl.dll

然后,关闭杀毒软件,比如麦咖啡,360… LINUX不会出现这个问题。

总体说来是因为操作系统,以及国内邮箱供应商接口的问题。


 


发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>