备忘录:使用Spring发送各种类型的邮件,经测试,发送方和接收方可以是gmail,163。
当发送方是gmail时,设置有点不同。
Spring的设置:
<!-- Activates annotation-based bean configuration --> <!-- <context:component-scan base-package="com.aboy" /> --> <!-- JavaMailSender --> <!-- <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.163.com" /> <property name="username" value="obullxl@163.com" /> <property name="password" value="********" /> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.timeout">25000</prop> </props> </property> </bean> --> <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.gmail.com" /> <property name="username" value="obullxl@gmail.com" /> <property name="password" value="********" /> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.timeout">25000</prop> <prop key="mail.smtp.port">465</prop> <prop key="mail.smtp.socketFactory.port">465</prop> <prop key="mail.smtp.socketFactory.fallback">false</prop> <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop> </props> </property> </bean> <!-- 简单的message --> <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage"> <property name="to" value="obullxl@163.com" /> <property name="from" value="obullxl@gmail.com" /> <property name="subject" value="测试邮件" /> </bean> <!-- MimeMessage --> <bean id="mimeMessage" class="javax.mail.internet.MimeMessage" factory-bean="javaMailSender" factory-method="createMimeMessage" />
上面的设置中,第一个JavaMailSender的发送方为163邮箱,后面的一个为gmail邮箱的。
下面是单元测试代码:
private JavaMailSender mailSender; private MailMessage mailMessage; private MimeMessage mimeMessage; @Before public void setUp() { ApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/mail-context.xml"); Assert.notNull(context); this.mailSender = context.getBean(JavaMailSender.class); this.mailMessage = context.getBean(MailMessage.class); this.mimeMessage = context.getBean(MimeMessage.class); Assert.notNull(this.mailSender); Assert.notNull(this.mailMessage); Assert.notNull(this.mimeMessage); } /** * 普通文本邮件 */ @Test public void testSendPlainTextMail() { this.mailMessage.setSubject("普通文本邮件"); this.mailMessage.setText("测试Spring发送Email."); try { mailSender.send((SimpleMailMessage) this.mailMessage); } catch (MailException e) { System.out.println("Oops: 发送Email失败了...."); e.printStackTrace(); } } /** * HTML格式邮件 * @throws MessagingException */ @Test public void testSendHTMLMail() throws MessagingException { MimeMessageHelper messageHelper = new MimeMessageHelper(this.mimeMessage, true, "UTF-8"); messageHelper.setTo("obullxl@163.com"); messageHelper.setFrom("obullxl@gmail.com"); messageHelper.setSubject("HTML格式邮件"); messageHelper.setText("<html><head></head><body><h2>Hello! Spring!</h2><b>XXX(中国)信息技术有限公司</b></body></html>", true); this.mailSender.send(this.mimeMessage); } /** * 带附件的HTML格式邮件 * @throws MessagingException */ @Test public void testSetAttachMail() throws MessagingException { MimeMessageHelper messageHelper = new MimeMessageHelper(this.mimeMessage, true, "UTF-8"); messageHelper.setTo("obullxl@163.com"); messageHelper.setFrom("obullxl@gmail.com"); messageHelper.setSubject("带附件的HTML格式邮件"); messageHelper.setText("<html><head></head><body><h2>Hello! Spring!</h2><b>XXX(中国)信息技术有限公司</b></body></html>", true); FileSystemResource file = new FileSystemResource(new File("E:/Study/Spring/Spring-Validator.jpg")); // 根据个人情况设置 messageHelper.addInline("SpringValidator", file); messageHelper.addAttachment("SpringValidator", file); ClassPathResource resource = new ClassPathResource("jbpm.cfg.xml"); // 根据个人情况设置 messageHelper.addInline("jbpm.cfg.xml", resource); messageHelper.addAttachment("jbpm.cfg.xml", resource); this.mailSender.send(this.mimeMessage); }
运行测试用例,即可看到结果!