提交 191a2d3f 编写于 作者: J Juergen Hoeller

JavaMailSenderImpl calls sendMessage with empty array instead of null

Issue: SPR-17540

(cherry picked from commit 16e9b83d)
上级 a46a4372
/* /*
* Copyright 2002-2015 the original author or authors. * Copyright 2002-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -24,6 +24,7 @@ import java.util.List; ...@@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import javax.activation.FileTypeMap; import javax.activation.FileTypeMap;
import javax.mail.Address;
import javax.mail.AuthenticationFailedException; import javax.mail.AuthenticationFailedException;
import javax.mail.MessagingException; import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException; import javax.mail.NoSuchProviderException;
...@@ -390,7 +391,7 @@ public class JavaMailSenderImpl implements JavaMailSender { ...@@ -390,7 +391,7 @@ public class JavaMailSenderImpl implements JavaMailSender {
/** /**
* Actually send the given array of MimeMessages via JavaMail. * Actually send the given array of MimeMessages via JavaMail.
* @param mimeMessages MimeMessage objects to send * @param mimeMessages the MimeMessage objects to send
* @param originalMessages corresponding original message objects * @param originalMessages corresponding original message objects
* that the MimeMessages have been created from (with same array * that the MimeMessages have been created from (with same array
* length and indices as the "mimeMessages" array), if any * length and indices as the "mimeMessages" array), if any
...@@ -445,7 +446,8 @@ public class JavaMailSenderImpl implements JavaMailSender { ...@@ -445,7 +446,8 @@ public class JavaMailSenderImpl implements JavaMailSender {
// Preserve explicitly specified message id... // Preserve explicitly specified message id...
mimeMessage.setHeader(HEADER_MESSAGE_ID, messageId); mimeMessage.setHeader(HEADER_MESSAGE_ID, messageId);
} }
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients()); Address[] addresses = mimeMessage.getAllRecipients();
transport.sendMessage(mimeMessage, (addresses != null ? addresses : new Address[0]));
} }
catch (Exception ex) { catch (Exception ex) {
Object original = (originalMessages != null ? originalMessages[i] : mimeMessage); Object original = (originalMessages != null ? originalMessages[i] : mimeMessage);
......
/* /*
* Copyright 2002-2015 the original author or authors. * Copyright 2002-2018 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -56,6 +56,7 @@ public class JavaMailSenderTests { ...@@ -56,6 +56,7 @@ public class JavaMailSenderTests {
@Rule @Rule
public final ExpectedException thrown = ExpectedException.none(); public final ExpectedException thrown = ExpectedException.none();
@Test @Test
public void javaMailSenderWithSimpleMessage() throws MessagingException, IOException { public void javaMailSenderWithSimpleMessage() throws MessagingException, IOException {
MockJavaMailSender sender = new MockJavaMailSender(); MockJavaMailSender sender = new MockJavaMailSender();
...@@ -105,7 +106,8 @@ public class JavaMailSenderTests { ...@@ -105,7 +106,8 @@ public class JavaMailSenderTests {
assertEquals("my text", sentMessage.getContent()); assertEquals("my text", sentMessage.getContent());
} }
public void testJavaMailSenderWithSimpleMessages() throws MessagingException, IOException { @Test
public void javaMailSenderWithSimpleMessages() throws MessagingException {
MockJavaMailSender sender = new MockJavaMailSender(); MockJavaMailSender sender = new MockJavaMailSender();
sender.setHost("host"); sender.setHost("host");
sender.setUsername("username"); sender.setUsername("username");
...@@ -133,7 +135,8 @@ public class JavaMailSenderTests { ...@@ -133,7 +135,8 @@ public class JavaMailSenderTests {
assertEquals("she@mail.org", ((InternetAddress) tos2.get(0)).getAddress()); assertEquals("she@mail.org", ((InternetAddress) tos2.get(0)).getAddress());
} }
public void testJavaMailSenderWithMimeMessage() throws MessagingException { @Test
public void javaMailSenderWithMimeMessage() throws MessagingException {
MockJavaMailSender sender = new MockJavaMailSender(); MockJavaMailSender sender = new MockJavaMailSender();
sender.setHost("host"); sender.setHost("host");
sender.setUsername("username"); sender.setUsername("username");
...@@ -180,7 +183,7 @@ public class JavaMailSenderTests { ...@@ -180,7 +183,7 @@ public class JavaMailSenderTests {
sender.setUsername("username"); sender.setUsername("username");
sender.setPassword("password"); sender.setPassword("password");
final List<Message> messages = new ArrayList<Message>(); final List<Message> messages = new ArrayList<>();
MimeMessagePreparator preparator = new MimeMessagePreparator() { MimeMessagePreparator preparator = new MimeMessagePreparator() {
@Override @Override
...@@ -206,7 +209,7 @@ public class JavaMailSenderTests { ...@@ -206,7 +209,7 @@ public class JavaMailSenderTests {
sender.setUsername("username"); sender.setUsername("username");
sender.setPassword("password"); sender.setPassword("password");
final List<Message> messages = new ArrayList<Message>(); final List<Message> messages = new ArrayList<>();
MimeMessagePreparator preparator1 = new MimeMessagePreparator() { MimeMessagePreparator preparator1 = new MimeMessagePreparator() {
@Override @Override
...@@ -394,7 +397,7 @@ public class JavaMailSenderTests { ...@@ -394,7 +397,7 @@ public class JavaMailSenderTests {
} }
@Test @Test
public void failedMailServerConnect() throws Exception { public void failedMailServerConnect() {
MockJavaMailSender sender = new MockJavaMailSender(); MockJavaMailSender sender = new MockJavaMailSender();
sender.setHost(null); sender.setHost(null);
sender.setUsername("username"); sender.setUsername("username");
...@@ -415,7 +418,7 @@ public class JavaMailSenderTests { ...@@ -415,7 +418,7 @@ public class JavaMailSenderTests {
} }
@Test @Test
public void failedMailServerClose() throws Exception { public void failedMailServerClose() {
MockJavaMailSender sender = new MockJavaMailSender(); MockJavaMailSender sender = new MockJavaMailSender();
sender.setHost(""); sender.setHost("");
sender.setUsername("username"); sender.setUsername("username");
...@@ -434,7 +437,7 @@ public class JavaMailSenderTests { ...@@ -434,7 +437,7 @@ public class JavaMailSenderTests {
} }
@Test @Test
public void failedSimpleMessage() throws Exception { public void failedSimpleMessage() throws MessagingException {
MockJavaMailSender sender = new MockJavaMailSender(); MockJavaMailSender sender = new MockJavaMailSender();
sender.setHost("host"); sender.setHost("host");
sender.setUsername("username"); sender.setUsername("username");
...@@ -466,7 +469,7 @@ public class JavaMailSenderTests { ...@@ -466,7 +469,7 @@ public class JavaMailSenderTests {
} }
@Test @Test
public void fFailedMimeMessage() throws Exception { public void failedMimeMessage() throws MessagingException {
MockJavaMailSender sender = new MockJavaMailSender(); MockJavaMailSender sender = new MockJavaMailSender();
sender.setHost("host"); sender.setHost("host");
sender.setUsername("username"); sender.setUsername("username");
...@@ -498,14 +501,14 @@ public class JavaMailSenderTests { ...@@ -498,14 +501,14 @@ public class JavaMailSenderTests {
} }
@Test @Test
public void testConnection() throws Exception { public void testConnection() throws MessagingException {
MockJavaMailSender sender = new MockJavaMailSender(); MockJavaMailSender sender = new MockJavaMailSender();
sender.setHost("host"); sender.setHost("host");
sender.testConnection(); sender.testConnection();
} }
@Test @Test
public void testConnectionWithFailure() throws Exception { public void testConnectionWithFailure() throws MessagingException {
MockJavaMailSender sender = new MockJavaMailSender(); MockJavaMailSender sender = new MockJavaMailSender();
sender.setHost(null); sender.setHost(null);
...@@ -533,7 +536,7 @@ public class JavaMailSenderTests { ...@@ -533,7 +536,7 @@ public class JavaMailSenderTests {
private String connectedUsername = null; private String connectedUsername = null;
private String connectedPassword = null; private String connectedPassword = null;
private boolean closeCalled = false; private boolean closeCalled = false;
private List<Message> sentMessages = new ArrayList<Message>(); private List<Message> sentMessages = new ArrayList<>();
private MockTransport(Session session, URLName urlName) { private MockTransport(Session session, URLName urlName) {
super(session, urlName); super(session, urlName);
...@@ -592,7 +595,8 @@ public class JavaMailSenderTests { ...@@ -592,7 +595,8 @@ public class JavaMailSenderTests {
if ("fail".equals(message.getSubject())) { if ("fail".equals(message.getSubject())) {
throw new MessagingException("failed"); throw new MessagingException("failed");
} }
if (!ObjectUtils.nullSafeEquals(addresses, message.getAllRecipients())) { if (addresses == null || (message.getAllRecipients() == null ? addresses.length > 0 :
!ObjectUtils.nullSafeEquals(addresses, message.getAllRecipients()))) {
throw new MessagingException("addresses not correct"); throw new MessagingException("addresses not correct");
} }
if (message.getSentDate() == null) { if (message.getSentDate() == null) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册