hyperf php,解决hyperf中phpmailer包超全局变量报错问题

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包的版本是最新版

a19431b06463ec8b5a5f2ac1bd1c27c2.png

最后详细看了phpmailer报错具体内容,发现Hostname获取走的是超全局变量,而hyperf默认是将超全局变量关闭的,所以导致了报错

d0e09e0af3cd655faab3e446b3a01c87.png

解决办法:

$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';即可

无论从事什么行业,只要做好两件事就够了,一个是你的专业、一个是你的人品,专业决定了你的存在,人品决定了你的人脉,剩下的就是坚持,用善良專業和真诚赢取更多的信任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值