Если у вас возникли проблемы с отправкой писем с помощью PHP, рассмотрите альтернативу, например PHPMailer или SwiftMailer .
Обычно я использую SwiftMailer всякий раз, когда мне нужно для отправки писем с PHP.
require 'mail/swift_required.php';
$message = Swift_Message::newInstance()
// The subject of your email
->setSubject('Jane Doe sends you a message')
// The from address(es)
->setFrom(array('jane.doe@gmail.com' => 'Jane Doe'))
// The to address(es)
->setTo(array('frank.stevens@gmail.com' => 'Frank Stevens'))
// Here, you put the content of your email
->setBody('New message
Here goes the rest of my message
', 'text/html');
if (Swift_Mailer::newInstance(Swift_MailTransport::newInstance())->send($message)) {
echo json_encode([
"status" => "OK",
"message" => 'Your message has been sent!'
], JSON_PRETTY_PRINT);
} else {
echo json_encode([
"status" => "error",
"message" => 'Oops! Something went wrong!'
], JSON_PRETTY_PRINT);
}
Подробнее о том, как использовать SwiftMailer, см. в официальной документации .
Поведение по умолчанию с Джерси, когда есть статус ошибки (4xx, 5xx), заключается в использовании сервлета Response.sendError
, что приводит к переадресации на страницу с ошибкой. Поскольку нет страницы с ошибкой, это приводит к 404.
Мы можем изменить это поведение, установив свойство Jersey
blockquote>
ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR
Вы можете сделать это в своем подклассе
ResourceConfig
public JerseyConfig extends ResourceConfig { public JerseyConfig() { property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, true); } }
Или (с помощью Spring Boot) вы можете добавить его в свой
application.properties
файл.spring.jersey.init.jersey.config.server.response.setStatusOverSendError=true
У меня тоже была эта проблема, и я решил ее, исключив ErrorMvcAutoConfiguration из автоматической конфигурации загрузки весны:
@EnableAutoConfiguration(exclude = { ErrorMvcAutoConfiguration.class })
web.xml
, как<init-param>
вашего сервлета ДжерсиServletContainer
. спасибо – watery 19 July 2016 в 11:03