服务热线 400-660-8066

珠海网站建设
首页 站内资讯

珠海网站建设

站内资讯
珠海网站建设 / 站内资讯 / 产品资讯 / 正文

php异步群发邮件

来源: All文章
发布时间:2023-03-29 13:02:05

  当程序执行群发邮箱的时候,会出现等待程序反馈时间太长这对于用户体验来说是很不好的,用户大多会在程序没有执行完就关闭程序,这样发送邮件也会中断,所以我们的解决思路应该是用异步去执行发邮件的过程。

  一、创建一个连接用户操作页面和执行发件的方法:

  privatefunctionconnect($host,$path,$param=array()){

  $query=isset($param)?http_build_query($param):'';

  $port=80;

  $errno=0;

  $errstr='error';

  $timeout=30;//连接超时时间(S)

  $fp=@fsockopen($host,$port,$errno,$errstr,$timeout);

  if(!$fp){

  return'连接失败';

  }

  if($errno||!$fp){

  return$errstr;

  }

  stream_set_blocking($fp,0);//非阻塞

  stream_set_timeout($fp,1);//响应超时时间(S)

  $out=POST.$path.HTTP/

  1.1\r\n;

  $out.=host:.$host.\r\n;

  $out.=content-length:.strlen($query).\r\n;

  $out.=content-type:application/x-www-form-urlencoded\r\n;

  $out.=connection:close\r\n\r\n;

  $out.=$query;

  $result=@fputs($fp,$out);

  @fclose($fp);

  return$result;

  }

  二、用户操作方法传递参数页面

  publicfunctionindex(){

  $param=array(

  0='xxx@qq.com',

  1='xxx@qq.com',

  );

  $url='http://'.$_SERVER['HTTP_HOST']..'/Sends/emails';

  $info=parse_url($url);

  /*dump($info);*/$res=$thisConnect($info[host],$info['path'],$param);

  /*调用方法*/

  echo'发送成功';/*提示用户发送成功*/

  }

  三、发送邮件

  publicfunctionemails(){

  set_time_limit(0);/*设置程序运行时间没有限制防止运行超时*/

  ignore_user_abort(true);//设置与客户机断开是否会终止执行

  $data=I('post.');

  $email='';

  $sendTitle=邮件标题;

  $sendinfo='邮件内容';

  $send=array(

  'title'=$sendTitle,

  'detail'=$sendinfo,

  );

  $mail=newService\SendemailService();

  foreach($dataas$k=$v){

  $email.=$v.'|';

  $toMail=$v;

  $info=$mail-sendEmail($send,$toMail);

  /*执行发送邮箱*/

  }

  $log_name=Public/notify_url.log;//log文件路径

  $thislog_result($log_name,$email.date(time(),'H:i:s').';');

  /*记录一下日志看程序是否执行发件*/

  }

  用户运行结果(以上是测试)

  日志查看

  测试的两个邮箱都已经收到邮件

* 文章来源于网络,如有侵权,请联系客服删除处理。
在线 咨询

添加动力小姐姐微信

微信 咨询

电话咨询

400-660-8066

我们联系您

电话 咨询
微信扫码关注动力小姐姐 X
qr