Ошибка проверки Джерси, получающая 404 вместо 400 [дубликат]

Если у вас возникли проблемы с отправкой писем с помощью 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, см. в официальной документации .

7
задан Paul Samsotha 19 April 2016 в 01:53
поделиться

2 ответа

Поведение по умолчанию с Джерси, когда есть статус ошибки (4xx, 5xx), заключается в использовании сервлета Response.sendError, что приводит к переадресации на страницу с ошибкой. Поскольку нет страницы с ошибкой, это приводит к 404.

Мы можем изменить это поведение, установив свойство Jersey

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
11
ответ дан Paul Samsotha 21 August 2018 в 12:38
поделиться
  • 1
    Или вы можете добавить его в файл web.xml, как <init-param> вашего сервлета Джерси ServletContainer. спасибо – watery 19 July 2016 в 11:03

У меня тоже была эта проблема, и я решил ее, исключив ErrorMvcAutoConfiguration из автоматической конфигурации загрузки весны:

@EnableAutoConfiguration(exclude = { ErrorMvcAutoConfiguration.class })
3
ответ дан Jan Hoeve 21 August 2018 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: