2015-03-31 66 views
0
  • 我的單元測試通過訛詐訛詐服務器無法接收郵件類的電子郵件

    公共類GreenMailTest {

    private GreenMail greenMail; 
    private EmailServiceImpl emailService = new EmailServiceImpl(); 
    
    private MessageTemplateService messageTemplateService; 
    
    private EmailProperties emailProperties; 
    
    private Properties props; 
    
    private static final String USER_PASSWORD = "abcdef123"; 
        private static final String USER_NAME = "hascode"; 
        private static final String EMAIL_USER_ADDRESS = "[email protected]"; 
        private static final String EMAIL_TO = "[email protected]"; 
        private static final String EMAIL_SUBJECT = "Test E-Mail"; 
        private static final String EMAIL_TEXT = "This is a test e-mail."; 
        private static final String LOCALHOST = "localhost"; 
        // private GreenMail mailServer; 
    
    
    @Before 
    public void testSmtpInit() { 
        //ServerSetup setup = new ServerSetup(); 
        greenMail = new GreenMail(ServerSetupTest.SMTP); 
        greenMail.start(); 
        messageTemplateService = mock(MessageTemplateService.class); 
        emailProperties = mock(EmailProperties.class); 
        emailService.setEmailProperties(emailProperties); 
    } 
    
    @Test 
    public void testEmail() throws InterruptedException, IOException { 
    
        greenMail.setUser(EMAIL_USER_ADDRESS, USER_NAME, USER_PASSWORD); 
    
         // create the javax.mail stack with session, message and transport .. 
         Properties props = System.getProperties(); 
         props.put("mail.smtp.host", LOCALHOST); 
         props.put("mail.smtp.auth", "true"); 
         props.put("mail.smtp.port", ServerSetupTest.SMTP.getPort()); 
         Session session = Session.getInstance(props, null); 
         Message msg = new MimeMessage(session); 
         try { 
          msg.setFrom(new InternetAddress(EMAIL_TO)); 
          msg.setRecipients(Message.RecipientType.TO, 
             InternetAddress.parse(EMAIL_USER_ADDRESS, false)); 
             msg.setSubject(EMAIL_SUBJECT); 
             msg.setText(EMAIL_TEXT); 
             msg.setSentDate(new Date()); 
             Transport t = session.getTransport("smtp"); 
             t.connect(EMAIL_USER_ADDRESS, USER_PASSWORD); 
             t.sendMessage(msg, msg.getAllRecipients()); 
             // assertEquals("250 OK\n", t.getLastServerResponse()); 
             t.close(); 
         } catch (MessagingException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
    
    
    
    
    
        // fetch messages from server 
        MimeMessage[] messages = greenMail.getReceivedMessages(); 
    
  • 我用這個代碼來測試JUnit的電子郵件服務器。

  • 但是服務器不返回任何消息

  • 我做錯了什麼。

  • 我更改代碼,請審查

回答

1

訛詐在本地主機上運行。相應地調整你的SMTP主機:

props.put("mail.smtp.host", "localhost"); 

編輯

總結大量的評論:額外的問題,從事實mock-javamail是在類路徑來了。

+0

props.put(「mail.smtp.host」,「localhost」);如何將其更改爲特定的主機。 – 2015-04-16 10:47:09