php版本:7.4
调用方法:
$config = config('mailbox');
$channel = new \Swoole\Coroutine\Channel();
co(function() use ($channel, $config, $content) {
$mail = new PHPMailer; //PHPMailer对象
$mail->CharSet = 'UTF-8';
$mail->IsSMTP(); // 设定使用SMTP服务
$mail->SMTPDebug = 0; // 关闭SMTP调试功能
$mail->SMTPAuth = true; // 启用 SMTP 验证功能
$mail->SMTPSecure = 'ssl'; // 使用安全协议
$mail->Host = $config['host']; // SMTP 服务器
$mail->Port = $config['port']; // SMTP服务器的端口号
$mail->Username = $config['username']; // SMTP服务器用户名
$mail->Password = $config['password']; // SMTP服务器密码
$mail->SetFrom($config['from'], $config['fromName']); // 邮箱,昵称
$mail->Subject = $content['Subject'];
$mail->MsgHTML($content['MsgHTML']);
$mail->AddAddress($content['AddAddress']); // 收件人
$result = $mail->Send();
$channel->push($result);
});
return $channel->pop();
报错如下:
PHP Deprecated: array_key_exists(): Using array_key_exists() on objects is deprecated. Use isset() or property_exists() instead in /vendor/phpmailer/phpmailer/src/PHPMailer.php on line 3888
这个报错是phpmailer代码里报的,尝试composer update一下,结果还是不行,查了phpmailer包的版本是最新版
最后详细看了phpmailer报错具体内容,发现Hostname获取走的是超全局变量,而hyperf默认是将超全局变量关闭的,所以导致了报错
解决办法:
$config = config('mailbox');
$channel = new \Swoole\Coroutine\Channel();
co(function() use ($channel, $config, $content) {
$mail = new PHPMailer; //PHPMailer对象
$mail->Hostname = '127.0.0.1';
$mail->CharSet = 'UTF-8';
$mail->IsSMTP(); // 设定使用SMTP服务
$mail->SMTPDebug = 0; // 关闭SMTP调试功能
$mail->SMTPAuth = true; // 启用 SMTP 验证功能
$mail->SMTPSecure = 'ssl'; // 使用安全协议
$mail->Host = $config['host']; // SMTP 服务器
$mail->Port = $config['port']; // SMTP服务器的端口号
$mail->Username = $config['username']; // SMTP服务器用户名
$mail->Password = $config['password']; // SMTP服务器密码
$mail->SetFrom($config['from'], $config['fromName']); // 邮箱,昵称
$mail->Subject = $content['Subject'];
$mail->MsgHTML($content['MsgHTML']);
$mail->AddAddress($content['AddAddress']); // 收件人
$result = $mail->Send();
$channel->push($result);
});
return $channel->pop();
在PHPMailer实例化后添加:$mail->Hostname = '127.0.0.1';即可
无论从事什么行业,只要做好两件事就够了,一个是你的专业、一个是你的人品,专业决定了你的存在,人品决定了你的人脉,剩下的就是坚持,用善良專業和真诚赢取更多的信任。