0
  • Greenmail を介した電子メールのクラスの My Unit Test

    パブリック クラス 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 は localhost で実行されています。それに応じて smtp ホストを調整します。

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

編集

多数のコメントを要約すると、追加の問題はmock-javamail、クラスパスにあったという事実に起因していました。

于 2015-04-01T21:47:20.723 に答える