Я часто тестирую свое приложение с копией действующей базы данных, но нужно быть осторожным, чтобы не выполнять никаких действий, которые вызывают отправку пользователю электронного письма. Я хотел бы иметь возможность настроить Spring так, чтобы, когда я нахожусь в режиме разработки или тестирования, чтобы никакие электронные письма не отправлялись реальным пользователям. В идеале я хотел бы, чтобы все электронные письма, которые должны были быть отправлены пользователю, вместо этого отправлялись в почтовый ящик, который я могу проверить. И я не хочу изменять какой-либо код, чтобы это произошло, просто файлы конфигурации xml.
Я уже использую PropertyPlaceholderConfigurer и читаю в разных файлах свойств в зависимости от того, работаю ли я в рабочем, тестовом или dev-режимах. Я настраиваю JavaMailSenderImpl на основе значений в файле свойств. Я также использую SimpleMailMessage для создания шаблона с адресом From.
В идеале был бы способ переписать на адрес TO всех исходящих электронных писем тестовую учетную запись, если я работаю в режиме разработки или в тестовом режиме.
Моей первой мыслью было использование другого SMTP-сервера для разработки и тестирования. Но тогда мне пришлось бы также управлять другим почтовым сервером, и ему нужно было бы настроить его так, чтобы он не отправлял почту куда-либо, а вместо этого доставлял ее в один почтовый ящик. Я не хочу добавлять дополнительные требования к управлению, если это возможно.
Возможно, это лучшее решение, но, похоже, должен быть способ перехватить электронные письма и изменить получателя.
Кто-нибудь имел дело с этой проблемой раньше? Какие решения вы придумали?