做过一些开发的同学,往往有这种体会,就是在涉及系统间交互整合集成的工作时并不能一蹴而就。虽然,一些接口规范事先都非常明确,但实际操作时,总会有各种细小的可能打乱我们的节奏,这时候我们就需要简化问题,界定问题,最终排除问题所在。业务开发中,我们经常能碰到发送邮件功能的配置了,往往可能某个很小的参数会导致我们调用失败,像这种在Spring框架中要测试一个邮件发送Bean,再构造一个Spring的本地配置,工作量就有点大了,这里我给大家介绍一种最原始简单的办法。
在Spring中我们通常会以类似如下代码配置发送邮件的Bean:
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="hwsmtp.exmail.qq.com" />
<property name="port" value="465" />
<property name="username" value="kyle-soft@foxmail.com" />
<property name="password" value="xxxxxx" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.ssl.enable">true</prop>
<prop key="mail.smtp.from">kyle-soft@foxmail.com</prop>
<prop key="mail.debug">true</prop>
</props>
</property>
</bean>
这时候,我们可以参照这个配置,构造一个最简单的Java程序或者测试用例,而不用绕进Spring进行测试,事情是不是就变得清晰明了多了,下面是我写的简单测试程序,当然我们也可以写成JUnit测试用例。
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.JavaMailSenderImpl;
public class Mail {
public static void main(String[] args) {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost("hwsmtp.exmail.qq.com");
javaMailSender.setPort(465);
javaMailSender.setUsername("kyle-soft@qq.com");
javaMailSender.setPassword("******"); // 替换成真实密码
Properties javaMailProperties = new Properties();
javaMailProperties.put("mail.smtp.auth", "true");
javaMailProperties.put("mail.smtp.ssl.enable", "true");
//javaMailProperties.put("mail.transport.protocol", "smtps");
javaMailProperties.put("mail.smtp.from", "kyle-soft@qq.com");
javaMailSender.setJavaMailProperties(javaMailProperties);
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper;
try {
messageHelper = new MimeMessageHelper(message, true, "UTF-8");
messageHelper.setSubject("通知面单接收22");
messageHelper.setFrom((String)javaMailSender.getJavaMailProperties().get("mail.smtp.from"));
messageHelper.setTo("kyle-soft@foxmail.com");
messageHelper.setText("通知邮件接收,记得及时打印出来。谢谢", true);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
javaMailSender.send(message);
}
}
用到的包:
javax.mail-1.5.6.jar
javax.mail-api-1.5.6.jar
spring-context-support-4.3.8.RELEASE.jar
spring-core-4.3.8.RELEASE.jar
spring-beans-4.3.8.RELEASE.jar