0
  • 我通过 Greenmail 进行电子邮件类的单元测试

    公共类 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 = "hascode@localhost";
        private static final String EMAIL_TO = "someone@localhost.com";
        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 上测试电子邮件服务器。

  • 但是服务器没有返回任何消息

  • 我做错了什么。

  • 我更改代码请检查它

4

1 回答 1

1

GreenMail 在本地主机上运行。相应地调整您的 smtp 主机:

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

编辑

总结大量评论:额外的问题来自mock-javamail于类路径上的事实。

于 2015-04-01T21:47:20.723 回答