У меня настроен отправитель почты в конфигурационном файле: spring / servlet-context.xml
который имеет имя пользователя и пароль.
У меня есть конкретный вариант использования, в котором мне нужно отправить почту с на другую учетную запись электронной почты.
Можно ли настроить это в этом же файле конфигурации.
Сначала я подумал, что это будет означать просто добавить другой идентификатор компонента, в котором будут заданы имя пользователя и пароль другой учетной записи электронной почты, но тогда мне не было никакого смысла, как JavaMailSender собирается сообщать, какого отправителя я хочу, чтобы каждый время?!
Мой код:
В servlet-context.xml:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com" />
<property name="port" value="587" />
<property name="username" value="default_email@gmail.com" />
<property name="password" value="***1***" />
<property name="javaMailProperties">
<props>
<prop key="mail.transport.protocol">smtp</prop>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.debug">false</prop>
<prop key="mail.smtp.sendpartial">true</prop>
</props>
</property>
</bean>
[Я думал добавить сюда:
<bean id="anotherMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
...
<property name="username" value="another_email@gmail.com" />
<property name="password" value="***2***" />
...
</bean>
]
И класс Java, отвечающий за отправку электронной почты:
public class MailService {
private static JavaMailSender mailSender;
@SuppressWarnings("static-access")
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public void sendMail(final String aSubject, final String aContent, final String toMail, final List<String> attachedFileUrls, String aFilename) {
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true,"UTF-8");
helper.setFrom(simpleMailMessage.getFrom());
helper.setTo(toMail);
helper.setSubject("A subject");
helper.setText("some content", true);
} catch (Exception e) {...}
Thread thread = new SendMail1(message);
thread.start();
}
class SendMail1 extends Thread {
MimeMessage message;
SendMail1(MimeMessage message) {
this.message = message;
}
public void run() {
mailSender.send(message);
}
}
}
(Это не помогает изменить функции setFrom и setTo, потому что они только устанавливают visual"в" и "из" в почтовом ящике получателя)
В настоящий момент mailSender каким-то образом «знает», как указано выше в настройках конфигурации, отправлять электронную почту на адрес электронной почты, заданный в servlet-context.xml.
Я хотел бы добавить функцию sendMailFromSpecialSender, которая будет отправлять электронную почту от другого отправителя.
Возможно ли это?
Если это так, то как?
UPDATE:
После публикации этого вопроса я нашел частичный ответ на мой вопрос Билла Шеннона:
Простое решение - использовать отдельный сеанс для каждого отправителя и отправлять каждое сообщение по одному.
Итак ...
1. Как мне создать отдельный сеанс для моего другого дела отправителя?
2. Позволяет ли конфигурация в servlet-context.xml иметь отдельный сеанс с другой конфигурацией, или я могу оставить это как есть?
Спасибо-вы