初学Maven小例子--使用greenmail测试邮件

利用Maven构建的一个小工程,闲话少叙,直入正题:
1、利用mvn archetype:generate生成基本的项目骨架
2、修改pom.xml:
Xml代码   收藏代码
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   
  5.   <groupId>com.maven.account</groupId>  
  6.   <artifactId>account-email</artifactId>  
  7.   <version>1.0-SNAPSHOT</version>  
  8.   <name>Account Email</name>  
  9.   <packaging>jar</packaging>  
  10.   <url>http://maven.apache.org</url>  
  11.   
  12.   <properties>  
  13.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  14.     <springframework.version>2.5.6</springframework.version>  
  15.   </properties>  
  16.   
  17.   <dependencies>  
  18.     <dependency>  
  19.         <groupId>org.springframework</groupId>  
  20.         <artifactId>spring-core</artifactId>  
  21.         <version>${springframework.version}</version>  
  22.     </dependency>  
  23.     <dependency>  
  24.         <groupId>org.springframework</groupId>  
  25.         <artifactId>spring-beans</artifactId>  
  26.         <version>${springframework.version}</version>  
  27.     </dependency>  
  28.     <dependency>  
  29.         <groupId>org.springframework</groupId>  
  30.         <artifactId>spring-context</artifactId>  
  31.         <version>${springframework.version}</version>  
  32.     </dependency>  
  33.     <dependency>  
  34.         <groupId>org.springframework</groupId>  
  35.         <artifactId>spring-context-support</artifactId>  
  36.         <version>${springframework.version}</version>  
  37.     </dependency>  
  38.     <dependency>  
  39.         <groupId>javax.mail</groupId>  
  40.         <artifactId>mail</artifactId>  
  41.         <version>1.4.1</version>  
  42.     </dependency>  
  43.     <dependency>  
  44.         <groupId>com.icegreen</groupId>  
  45.         <artifactId>greenmail</artifactId>  
  46.         <version>1.3.1b</version>  
  47.         <scope>test</scope>  
  48.     </dependency>  
  49.   
  50.     <dependency>  
  51.       <groupId>junit</groupId>  
  52.       <artifactId>junit</artifactId>  
  53.       <version>4.7</version>  
  54.       <scope>test</scope>  
  55.     </dependency>  
  56.   </dependencies>  
  57. </project>  

3、写接口AccountEmailService.java
Java代码   收藏代码
  1. package com.maven.account;  
  2.   
  3. /** 
  4.  * @Author:liuxb 
  5.  * @Date: 2012-08-04 
  6.  */  
  7. public interface AccountEmailService   
  8. {  
  9.     void sendMail(String to,String subject,String htmlText) throws Exception;  
  10. }  

4、写实现类AccountEmailServiceImpl.java
Java代码   收藏代码
  1. package com.maven.account;  
  2.   
  3. /** 
  4.  * @Author:liuxb 
  5.  * @Date: 2012-08-04 
  6.  */  
  7.   
  8. import javax.mail.MessagingException;  
  9. import javax.mail.internet.MimeMessage;  
  10.   
  11. import org.springframework.mail.javamail.JavaMailSender;  
  12. import org.springframework.mail.javamail.MimeMessageHelper;  
  13.   
  14. public class AccountEmailServiceImpl implements AccountEmailService  
  15. {  
  16.     private JavaMailSender javaMailSender;  
  17.   
  18.     private String systemEmail;  
  19.       
  20.     public void sendMail(String to,String subject,String htmlText) throws Exception{  
  21.         try{  
  22.             MimeMessage msg = javaMailSender.createMimeMessage();  
  23.             MimeMessageHelper msgHelper = new MimeMessageHelper(msg);  
  24.   
  25.             msgHelper.setFrom(systemEmail);  
  26.             msgHelper.setTo(to);  
  27.             msgHelper.setSubject(subject);  
  28.             msgHelper.setText(htmlText,true);  
  29.   
  30.             javaMailSender.send(msg);  
  31.         }catch(MessagingException e){  
  32.             e.printStackTrace();  
  33.         }  
  34.     }  
  35.   
  36.     public JavaMailSender getJavaMailSender(){  
  37.         return javaMailSender;  
  38.     }  
  39.   
  40.     public void setJavaMailSender(JavaMailSender javaMailSender){  
  41.         this.javaMailSender = javaMailSender;  
  42.     }  
  43.       
  44.     public String getSystemEmail(){  
  45.         return systemEmail;  
  46.     }  
  47.   
  48.     public void setSystemEmail(String systemEmail)  
  49.     {  
  50.         this.systemEmail = systemEmail;  
  51.     }  
  52. }  

5、在src目录下新建文件夹resources
6、在resources目录下建立spring配置文件account-email.xml
Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  5.   
  6.     <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  7.         <property name="location" value="classpath:service.properties" />  
  8.     </bean>  
  9.   
  10.     <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">  
  11.         <property name="protocol" value="${email.protocol}" />  
  12.         <property name="host" value="${email.host}" />  
  13.         <property name="port" value="${email.port}" />  
  14.         <property name="username" value="${email.username}" />  
  15.         <property name="password" value="${email.password}"/>  
  16.         <property name="javaMailProperties">  
  17.             <props>  
  18.                 <prop key="mail.${email.protocol}.auth">${email.auth}</prop>  
  19.             </props>  
  20.         </property>  
  21.     </bean>  
  22.   
  23.     <bean id="accountEmailService" class="com.maven.account.AccountEmailServiceImpl">  
  24.         <property name="javaMailSender" ref="javaMailSender" />  
  25.         <property name="systemEmail" value="${email.systemEmail}" />  
  26.     </bean>  
  27.   
  28. </beans>  

7、在resources目录下建立service.properties文件
Properties代码   收藏代码
  1. email.protocol=smtp  
  2. email.host=localhost  
  3. email.port=25  
  4. email.username=test@maven.com  
  5. email.password=123456  
  6. email.auth=true  
  7. email.systemEmail=liuxb@maven.com  

8、建立测试类AccountEmailServiceTest.java
Java代码   收藏代码
  1. package com.maven.account;  
  2.   
  3. import static junit.framework.Assert.assertEquals;  
  4.   
  5. import javax.mail.Message;  
  6. import org.junit.After;  
  7. import org.junit.Before;  
  8. import org.junit.Test;  
  9. import org.springframework.context.ApplicationContext;  
  10. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  11.   
  12. import com.icegreen.greenmail.util.GreenMail;  
  13. import com.icegreen.greenmail.util.GreenMailUtil;  
  14. import com.icegreen.greenmail.util.ServerSetup;  
  15.   
  16. //import junit.framework.Test;  
  17. //import junit.framework.TestCase;  
  18. //import junit.framework.TestSuite;  
  19.   
  20. /** 
  21.  * Unit test for simple App. 
  22.  */  
  23. public class AccountEmailServiceTest   
  24. {  
  25.     private GreenMail greenMail;  
  26.   
  27.     @Before  
  28.     public void startMailServer() throws Exception{  
  29.         greenMail = new GreenMail(ServerSetup.SMTP);  
  30.         greenMail.setUser("test@maven.com","123456");  
  31.         greenMail.start();  
  32.     }  
  33.   
  34.     @Test  
  35.     public void testSendMail() throws Exception{  
  36.         ApplicationContext ctx = new ClassPathXmlApplicationContext("account-email.xml");  
  37.         AccountEmailService accountEmailService = (AccountEmailService)ctx.getBean("accountEmailService");  
  38.   
  39.         String subject = "Test Subject";  
  40.         String htmlText = "<h3>Test</h3>";  
  41.         accountEmailService.sendMail("test2@maven.com",subject,htmlText);  
  42.   
  43.         greenMail.waitForIncomingEmail(2000,1);  
  44.   
  45.         Message[] msgs = greenMail.getReceivedMessages();  
  46.         System.out.println("msgs.length="+msgs.length);  
  47.         System.out.println("subject="+msgs[0].getSubject());  
  48.         System.out.println("htmlText="+GreenMailUtil.getBody(msgs[0]).trim());  
  49.   
  50.         assertEquals(1,msgs.length);  
  51.         assertEquals(subject,msgs[0].getSubject());  
  52.         assertEquals(htmlText,GreenMailUtil.getBody(msgs[0]).trim());  
  53.     }  
  54.   
  55.     @After  
  56.     public void stopMailServer() throws Exception{  
  57.         greenMail.stop();  
  58.     }  
  59. }  

9、在项目根目录下使用命令mvn clean test进行测试。
输出如下:




10、使用命令mvn dependency:tree查看依赖树:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值