dongwolu5275 2015-07-11 15:03
浏览 87

响应状态200但没有JSON

I am using PHPMailer to send mails but its from my localhost in xampp. When I test my API in Postman, it takes too long to process the request but renders response status 200 but no JSON response returned. Below are my codes.

    public function actionSendMail() {
    //Getting request from frontend
    $request = file_get_contents('php://input');

    //Decoding input into an array
    $input = json_decode($request, true);

    //Validating request
    if (is_null($input)) {
        $response = json_encode(['error' => 'Bad Input']);
        die($response);

    } else {
        //mail parameters
        $to      = $input['to'];
        $subject = $input['subject'];
        $body    = $input['body'];
        $headers = $input['headers'];

        //Sending mail 
        if($result = $this->sendMail($to, $subject, $body, $headers) === true) {
            $response = json_encode(['success' => true]);
            echo $response;
        } else {
            $response = json_encode(['error' => 'Mail Not Sent']);
            die($response);
        }
    }
}

private function sendMail ($to, $subject, $body, $headers) {
    //Configurating PHP Mailer
    $mail = new PHPMailer();

    $mail->IsSMTP();                                 
    $mail->Host = 'secure.emailsrvr.com';  
    $mail->Port = 995;
    $mail->SMTPAuth = true;                            
    $mail->Username = 'example@example.com';                           
    $mail->Password = '****';                          
    $mail->SMTPSecure = 'ssl';                   
    $mail->WordWrap = 50;      
    $mail->IsHTML(true); 

    $mail->SetFrom('REDACTED@example.com');
    $mail->AddReplyTo($headers);
    $mail->Subject = $subject;
    $mail->MsgHTML($body);
    $mail->AddAddress($to, "");

    if(!$mail->Send())
        return $mail->ErrorInfo;

    return true;
}

Thanks for your time.

  • 写回答

2条回答 默认 最新

  • dtkp51520 2015-07-11 18:48
    关注

    You need to test your mail sending code in isolation - errors are being hidden behind your other code. A long delay most likely means you're having a network timeout, either due to bad connectivity or DNS timeout. Try setting $mail->SMTPDebug = 3; so you can see connection errors. Check the PHPMailer troubleshooting guide.

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?