2016-09-09 45 views
13

Uruchamianie tej usługi Java na moim laptopie (Windows 10) lub na naszym serwerze programistycznym (CentOS) wszystko działa zgodnie z oczekiwaniami . Ale gdy uruchomię go na naszej żywej serwerze (CentOS) pojawia się następujący błąd:Pobieranie javax.mail.MessagingException: [EOF] na naszym serwerze na żywo, ale wszystko działa zgodnie z oczekiwaniami na naszym serwerze dev

09/Sep/2016 08:31:07,005 [ERROR] [pool-2-thread-2] - EmailSender: A Messaging exception occurred in EmailSender 
javax.mail.MessagingException: [EOF] 
     at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1363) ~[jar:rsrc:mail-1.4.jar!/:?] 
     at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:838) ~[jar:rsrc:mail-1.4.jar!/:?] 
     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:375) ~[jar:rsrc:mail-1.4.jar!/:?] 
     at javax.mail.Service.connect(Service.java:275) ~[jar:rsrc:mail-1.4.jar!/:?] 
     at javax.mail.Service.connect(Service.java:156) ~[jar:rsrc:mail-1.4.jar!/:?] 
     at com.awesomecompany.messaging.server.EmailSender.sendEmail(EmailSender.java:99) [rsrc:./:?] 
     at com.awesomecompany.messaging.server.MonitorDevicesRunnable.run(MonitorDevicesRunnable.java:82) [rsrc:./:?] 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_75] 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) [?:1.7.0_75] 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) [?:1.7.0_75] 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.7.0_75] 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [?:1.7.0_75] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [?:1.7.0_75] 
     at java.lang.Thread.run(Thread.java:745) [?:1.7.0_75] 

Mój kod email:

public void sendEmail(User user) { 

     to[0] = user.getEmail(); 
     Properties props = new Properties(); 
     props.put("mail.smtp.host", host); 
     props.put("mail.smtp.user", from); 
     props.put("mail.smtp.password", password); 
     props.put("mail.smtp.port", "587"); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.debug", "true"); 
     props.put("mail.store.protocol", "imap"); 
     subject = user.getEmailBuilder().getEmailSubject(); 

     try { 

      Session session = Session.getDefaultInstance(props, 
        new Authenticator() { 
         protected PasswordAuthentication getPasswordAuthentication() { 
          return new PasswordAuthentication(from, 
            password); 
         } 
        }); 

      MimeMessage message = new MimeMessage(session) { 
       protected void updateMessageID() throws MessagingException { 
        if (getHeader("Message-ID") == null) 
         super.updateMessageID(); 
       } 
      }; 
      message.setFrom(new InternetAddress(from)); 

      InternetAddress[] to_addresses = new InternetAddress[to.length]; 

      for (int i = 0; i < to.length; i++) { 
       to_addresses[i] = new InternetAddress(to[i]); 

      } 

      message.addRecipients(javax.mail.Message.RecipientType.TO, 
        to_addresses); 

      String messageHtml = user.getEmailMessage(); 
      message.setSubject(subject); 
      message.setContent(messageHtml, "text/html;charset=UTF-8;"); 
      message.saveChanges(); 
      user.setEmailMessageId(message.getMessageID()); 
      log.info("Email message ID: " + message.getMessageID()); 
      Transport transport = session.getTransport("smtp"); 
      transport.connect(host, from, password); 
      transport.sendMessage(message, message.getAllRecipients()); 
      transport.close(); 
      user.setEmailStatus(DistinctNotification.STATUS_SENT); 

     } catch (AddressException e) { 

      log.error("An AddressException occurred in EmailSender", e); 
      user.setEmailStatus(DistinctNotification.STATUS_READY); 
     } catch (MessagingException e) { 

      log.error("A Messaging exception occurred in EmailSender", e); 
      user.setEmailStatus(DistinctNotification.STATUS_READY); 
     } 

    } 

Błąd występuje na tej linii:

transport.connect(host, from, password); 

EDYTOWANIE:

Powróciłem do wcześniejszej wersji, o której wiem Fakt zadziałał, może kilka miesięcy temu. To już nie działa, pojawia się ten sam błąd.
Moi pozostali koledzy, którzy mają dostęp do serwera, mówią, że nie wprowadzili w nim żadnych zmian.

Nie mam absolutnie pojęcia, gdzie się z tym zabrać. Nie mam problemu z kontaktowaniem się z serwerami googles za pomocą telnetu. Zamierzam zrobić więcej kontroli na różnych portach, żeby się upewnić, ale nie sądzę, że to jest problem. EDIT 2:

Oto problem: 501-5.5.4 Empty HELO/EHLO argument not allowed, closing connection.
Ale dlaczego miałoby to być dzieje się tylko na jednym serwerze?

Dodatkowe logi z konsoli:

DEBUG SMTP: connected to host "smtp.gmail.com", port: 587 

EHLO 
501-5.5.4 Empty HELO/EHLO argument not allowed, closing connection. 
501 5.5.4 https://support.google.com/mail/?p=helo l10sm686448lfd.19 - gsmtp 
HELO 
DEBUG SMTP: EOF: [EOF] 
09:07:00.277 [pool-2-thread-1] - A Messaging exception occurred in EmailSender 
javax.mail.MessagingException: [EOF] 
     at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1363) ~[jar:rsrc:mail-1.4.jar!/:?] 
     at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:838) ~[jar:rsrc:mail-1.4.jar!/:?] 
     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:375) ~[jar:rsrc:mail-1.4.jar!/:?] 
     at javax.mail.Service.connect(Service.java:275) ~[jar:rsrc:mail-1.4.jar!/:?] 
     at javax.mail.Service.connect(Service.java:156) ~[jar:rsrc:mail-1.4.jar!/:?] 
     at com.watersprint.messaging.server.EmailSender.sendEmail(EmailSender.java:99) [rsrc:./:?] 
     at com.watersprint.messaging.server.MonitorDevicesRunnable.run(MonitorDevicesRunnable.java:82) [rsrc:./:?] 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_75] 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) [?:1.7.0_75] 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) [?:1.7.0_75] 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.7.0_75] 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [?:1.7.0_75] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [?:1.7.0_75] 
     at java.lang.Thread.run(Thread.java:745) [?:1.7.0_75] 
2016-09-15 09:07:00,760 ERROR Error occurred while sending e-mail notification. javax.mail.MessagingException: [EOF] 
     at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1363) 
     at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:838) 
     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:375) 
     at javax.mail.Service.connect(Service.java:297) 
     at javax.mail.Service.connect(Service.java:156) 
     at javax.mail.Service.connect(Service.java:105) 
     at javax.mail.Transport.send0(Transport.java:168) 
     at javax.mail.Transport.send(Transport.java:98) 
     at org.apache.logging.log4j.core.net.SmtpManager.sendMultipartMessage(SmtpManager.java:241) 
     at org.apache.logging.log4j.core.net.SmtpManager.sendEvents(SmtpManager.java:150) 
     at org.apache.logging.log4j.core.appender.SmtpAppender.append(SmtpAppender.java:173) 
     at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:99) 
     at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:430) 
     at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:409) 
     at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:367) 
     at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:112) 
     at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:727) 
     at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:716) 
     at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:354) 
     at com.watersprint.messaging.server.EmailSender.sendEmail(EmailSender.java:110) 
     at com.watersprint.messaging.server.MonitorDevicesRunnable.run(MonitorDevicesRunnable.java:82) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 

2016-09-15 09:07:00,762 ERROR An exception occurred processing Appender SMTPAppender org.apache.logging.log4j.LoggingException: Error occurred while sending email 
     at org.apache.logging.log4j.core.net.SmtpManager.sendEvents(SmtpManager.java:153) 
     at org.apache.logging.log4j.core.appender.SmtpAppender.append(SmtpAppender.java:173) 
     at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:99) 
     at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:430) 
     at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:409) 
     at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:367) 
     at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:112) 
     at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:727) 
     at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:716) 
     at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:354) 
     at com.watersprint.messaging.server.EmailSender.sendEmail(EmailSender.java:110) 
     at com.watersprint.messaging.server.MonitorDevicesRunnable.run(MonitorDevicesRunnable.java:82) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.mail.MessagingException: [EOF] 
     at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1363) 
     at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:838) 
     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:375) 
     at javax.mail.Service.connect(Service.java:297) 
     at javax.mail.Service.connect(Service.java:156) 
     at javax.mail.Service.connect(Service.java:105) 
     at javax.mail.Transport.send0(Transport.java:168) 
     at javax.mail.Transport.send(Transport.java:98) 
     at org.apache.logging.log4j.core.net.SmtpManager.sendMultipartMessage(SmtpManager.java:241) 
     at org.apache.logging.log4j.core.net.SmtpManager.sendEvents(SmtpManager.java:150) 
     ... 18 more 
+1

Co pokazuje komunikat [Wyjście debugowania JavaMail] (http://www.oracle.com/technetwork/java/javamail/faq/index.html#debug)? Czy na twoim serwerze na żywo znajduje się zapora? Wypróbuj wskazówki [dotyczące debugowania połączenia w często zadawanych pytaniach JavaMail] (http://www.oracle.com/technetwork/java/javamail/faq/index.html#condebug). –

+1

Powyższy błąd jest jedynym wyjątkiem w dziennikach. Czy istnieje inny sposób, aby konkretnie zobaczyć wyjście do debugowania JavaMail? Myślałem, że powyższy błąd był. Mogę połączyć się z serwerami pocztowymi Google za pomocą telnetu, więc nie wygląda to na problem z zaporą sieciową ani nic takiego. Również starsze wersje tej usługi e-mail działały i nie sądzę, że zmieniłem coś w tym zakresie. Moją pierwszą myślą jest, że musi to być coś na samym serwerze, ponieważ kod działa na innych serwerach. Ale nie widzę, gdzie jest problem. –

+1

Masz na myśli inny sposób poza linkiem powyżej? Cóż, możesz skonfigurować java.util.logging; szczegóły rejestratora znajdują się na stronach [JavaMail javadocs] (https://javamail.java.net/nonav/docs/api/) dla każdego pakietu. Jeśli nie otrzymujesz żadnych wyników debugowania, musisz dowiedzieć się, gdzie działa System.out. Powinieneś również naprawić te [typowe błędy JavaMail] (http://www.oracle.com/technetwork/java/javamail/faq/index.html#commonmistakes), które mogą rozwiązać niektóre z twoich problemów. –

Odpowiedz

9

jakiś serwer $HOSTNAME została wykreślona z /etc/hosts. W wyniku tego serwery google otrzymały null lub pustą wartość jako nazwę hosta i odrzuciły połączenie.

+0

Uratowałeś mój dzień! Bardzo Ci dziękuję! Próbowałem także innych usług pocztowych, ale nie działały przed zmianą nazwy hosta. – MewX

+0

haha! Nie ma problemu. Miło, że mogłem pomóc. –