• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用phpmailer发送邮件提示SMTP Error错误的解决办法

php 搞代码 4年前 (2022-01-22) 27次浏览 已收录 0个评论

之前做项目的时候做了一个用phpmailer发送邮件的功能《CI框架结合PHPmailer发送邮件》,昨天步署上线(刚开始用新浪云,嫌贵,换成阿里了),测试的时候,发送邮件却意外报错了……….

我擦,没上线的时候好好的,次次成功,刚开始我以为是smtp地址的问题(我用的163邮箱),后来改成了QQ邮箱,发现还是没有用,没办法,只好问度娘了,后来看着百度上的答案才明白除了google的smtp服务器收到请求"smtp"会接受,其他的服务器就像我用的163,QQ什么的必须要收到大写的 "smtp"请求才行……….emmmmm…..

然后我在class.phpmailer.php中,将

public function IsSMTP() {    $this->Mailer = 'smtp';  }//改成public function IsSMTP() {    $this->Mailer = 'SMTP';  }

然后将:

 switch($this->Mailer) {        case 'sendmail':          return $this->SendmailSend($header, $body);        case 'smtp':          return $this->SmtpSend($header, $body);        default:          return $this->MailSend($header, $body);      }//改成switch($this->Mailer) {        case 'sendmail':          return $this->SendmailSend($header, $body);        case 'SMTP':          return $this-&gt<p>4本文¥来源gao!%daima.com搞$代*!码$网9</p><pre>搞代gaodaima码

;SmtpSend($header, $body); default: return $this->MailSend($header, $body); }

我本来以为这样就可以了,重启Apache,再次测试一下,结果第一个错误是解决了,又出现了一个报错:

Could not instantiate mail function

?????

不知道你们有没有出现,我运气差,只好又求助度娘,终于找到原因:有的虚拟主机,或服务器,为了安全起见屏蔽了“fsockopen()函数”导致无法发送邮件。

下面说一下解决办法:

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

;extension=php_sockets.dll

;extension=php_openssl.dll

之前我用PHPmailer的时候已经去掉了,这里仅仅提示一下。

然后替换fsockopen函数

将class.smtp.php文件中fsockopen函数换成pfsockopen函数:

$this->smtp_conn = @fsockopen($host,    // the host of the server                                 $port,    // the port to use                                 $errno,   // error number if any                                 $errstr,  // error message if any                                 $tval);   // give up after ? secs//fsockopen改为:$this->smtp_conn = @pfsockopen($host,    // the host of the server                                 $port,    // the port to use                                 $errno,   // error number if any                                 $errstr,  // error message if any                                 $tval);   // give up after ? secs

这样设置完,我的已经可以成功发送邮件了,如果同样有这方面问题的,可以参考上面的例子试一下。

以上就是使用phpmailer发送邮件提示SMTP Error错误的解决办法的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用phpmailer发送邮件提示SMTP Error错误的解决办法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址