В моем собственном Wordpress Rest API есть следующий код.Я получаю 500-Внутренняя ошибка сервера всякий раз, когда я разрешаю вызов функции send_mail2.Комментируя это, веб-сервис работает отлично.Функция, помещенная отдельно в файл .php с вызовом и открытая из браузера, также отлично работает.
add_action( 'rest_api_init', function () {
register_rest_route( 'registrations/v1', '/add', array(
'methods' => 'POST',
'callback' => 'handle_reg_create'
) );
} );
function handle_reg_create( $request ) {
$parameters = $request->get_json_params();
$url = "myurl";
$mail_object->to_email = $parameters['email_id'];
$mail_object->subject = "Camp Registration Successful for ".$parameters['name']."Camp Id".$parameters['camp_id'];
$mail_object->from = "sample@mailxyz.com";
$mail_object->message = '<p>Thanks for registering .</p>
<p>Following are the details you have entered :</p>
<p>Name : '.$parameters['name'].'<br/>Age :
'.$parameters['age'].'<br />Phone Number (Call):
'.$parameters['phone_number_2'].'<br/>Phone Number (Whatsapp) :
'.$parameters['phone_number_2'].'</p>
<p>You may edit your details by <a href="'.$url.'" target="_blank"rel="noopener">clicking here</a>.</p>
<p> </p>
<p>Thanking you,<br />Admin</p>';
send_mail2($mail_object);
//return $list;
}
function send_mail2( $parameters ) {
echo "Started";
var_dump($parameters);
$mail = new PHPMailer;
echo "Enable SMTP debugging. ";
$mail->SMTPDebug = 3;
echo "Set PHPMailer to use SMTP.";
$mail->isSMTP();
echo "Set SMTP host name" ;
$mail->Host = "hostname";
echo "Set this to true if SMTP host requires authentication to send email";
$mail->SMTPAuth = true;
echo "Provide username and password ";
$mail->Username = "noreply@sample.com";
$mail->Password = "samplepassword";
$mail->Port = 587;
$mail->From = "noreply@sample.com";
$mail->FromName = "Sample";
echo "To Email :".$parameters->to_email;
echo "Subject :".$parameters->subject;
$mail->addAddress($parameters->to_email, "Recepient Name");
$mail->isHTML(true);
$mail->Subject = $parameters->subject;
$mail->Body = $parameters->message;
$mail->AltBody = "HTML Email - No Support";
echo "Attempt Send ";
$mail->send();
}