Ich sende E-Mails mit Spring-Java-Mail und Microsoft Exchange.Konnte keine Verbindung zu Microsoft Exchange herstellen nach ein paar sendet
Wenn ich eine einzelne E-Mail sende funktioniert alles richtig, aber wenn ich ein paar Mails eng (nur 4 oder 5) senden, gibt der Server eine "Connection Timeout". Bei einem erneuten Versuch und erneutem Versuch werden schließlich alle Mails gesendet. Ich habe mit Microsoft-Support gesprochen und sie haben gesagt, dass 30 Mails/Minute erlaubt sind, aber ich kann nicht mehr als 3 oder 4 senden. Irgendeine Idee?
Das ist meine config:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mailHost}" />
<property name="port" value="${mailPort}" />
<property name="username" value="${mailUser}" />
<property name="password" value="${mailPassword}" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
</props>
</property>
</bean>
mailHost=smtp.office365.com
mailPort=25
mailUser=xxx
mailPassword=xxx
Der Code, der die E-Mail sendet:
private void sendMail(String subject, String body, boolean isHtml,int atttemp, Attachment attachment, String... to) {
log.info("Sending mail("+subject+" to:"+Arrays.toString(to));
try{
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(to);
helper.setFrom(from);
helper.setText(body, isHtml);
helper.setSubject(subject);
if (attachment != null){
log.debug("Adding attachment:"+attachment.getName());
helper.addAttachment(attachment.getName(), new ByteArrayResource(IOUtils.toByteArray(attachment.getAttachment())));
}
mailSender.send(message);
log.info("Mail sent");
}catch(MessagingException|MailSendException|MailAuthenticationException e){
log.error("Message:"+e.getMessage());
if (atttemp < 5){
log.error("Timeout Exception?. Retrying mail to...: "+Arrays.toString(to)+"; attempt:"+atttemp);
sendMail(subject, body,isHtml,atttemp++, attachment, to);
}else{
log.error("Mail not sent to:"+Arrays.toString(to)+" after "+atttemp+" attemps");
}
}catch(Throwable t){
log.error("Error sending message to:"+Arrays.toString(to)+". ",t);
}
}
Und das ist die Ausnahme, die ich bin immer:
2016-04-17 16:39:04,380 ERROR c.h.n.m.MailSender [Thread-2] Message:Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 25;
nested exception is:
java.net.ConnectException: Connection timed out. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 25;
nested exception is:
java.net.ConnectException: Connection timed out
Könnten Sie versuchen, den Port auf 587 zu ändern? – fateddy