我正在使用PHPMailer发送邮件,但它来自xampp中的localhost。当我在Postman中测试我的API时,处理请求所需的时间太长但呈现响应状态200但没有返回JSON响应。以下是我的代码。
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;
}
感谢您的时间。
答案 0 :(得分:0)
您需要单独测试邮件发送代码 - 错误隐藏在其他代码后面。长时间延迟很可能意味着您由于连接错误或DNS超时而导致网络超时。尝试设置$mail->SMTPDebug = 3;
,以便查看连接错误。查看PHPMailer troubleshooting guide。
答案 1 :(得分:0)
在检查邮件回复时使用此功能
if($this->sendMail($to, $subject, $body, $headers)) {
$response = json_encode(['success' => true]);
echo $response;
}
else {
$response = json_encode(['error' => 'Mail Not Sent']);
die($response);
}