使用PHPMail发送邮件遇到SMTP Error: Could not connect to SMTP host.错误的解决方法
简单的发送邮件类:
<?php
/**
* Created by PhpStorm.
* User: gyc
* Date: 2020/4/4
* Time: 下午2:42
* 邮件发送
*/
namespace app\plugins;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
class Mail
{
public static function send(string $sendto, string $title, string $content)
{
$config = config('mail');
$mail = new PHPMailer(true);
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->isSMTP();
$mail->CharSet = "utf8";// 编码格式为utf8
$mail->Host = $config['host']; // SMTP 服务器地址
$mail->SMTPAuth = $config['smtpAuth']; // 开启SMTP验证
$mail->Username = $config['userName']; // SMTP 用户名
$mail->Password = $config['password']; // SMTP 密码
$mail->SMTPSecure = 'ssl'; // //使用ssl协议方式
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->Port = $config['port']; // qq邮箱的ssl协议方式端口号是465/587
//信息设置
$mail->setFrom('727306285@qq.com', '自定义'); //发件人信息设置 这里会显示为Mailer(xxxx@qq.com),Mailer是当做名字显示
$mail->addAddress($sendto); // 设置收件人信息
//$mail->addReplyTo('', '');// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
// 邮件内容
$mail->isHTML(true);
$mail->Subject = $title; //邮件标题
$mail->Body = $content;// 邮件正文
if (!$mail->send()){
echo $mail->ErrorInfo;
}else{
echo '邮件发送成功!';
}
}
}
解决方法:
原来的:
$this->smtp_conn =fsockopen(
$host,
$port,
$errno,
$errstr,
$timeout
);
修改为:
$this->smtp_conn = @stream_socket_client(
$host,
$port,
$errno,
$errstr,
$timeout
);
### 另:邮件密码是在邮箱设置里面的授权码,而不是登录密码

浙公网安备 33010602011771号