2014-10-09 1 views
0

내 응용 프로그램은 현재까지 AIX에서 websphere 6.1에서 실행되고 있습니다. 여기에는 오늘까지 잘 작동하는 전자 메일 알림 모듈이 있습니다. 이제 동일한 애플리케이션이 Linux 서버에서 실행되는 Tomcat 기반 클라우드 플랫폼으로 마이그레이션되고 있습니다. 새 Linux 기반 플랫폼에서 의도 된 수신자에게 전자 메일이 발송되지만 제목이없고 수신자 전자 메일 주소가 없거나 첨부 파일이 적합하지 않은 등 전자 메일이 이상하게 보입니다.spring과 java mail api로 이메일 문제

이전에는 개미 기반 빌드 및 이제 나는 maven으로 프로젝트를 빌드한다. 그리고 나는 봄과 메일 api 항아리의 동일한 버전을 유지하려고했습니다.

무엇이 문제 일 수 있으며 내가 뭘 잘못하고 있니? 전자 메일을 보내는 동안 예외는 없으며 문제를 식별하기가 정말 어렵습니다. 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

Generated Email with no to, subject, attachment 코드 : 사용중인 JavaMail에 버전

public synchronized void sendwithAttachment(MailMessage mailMessage) throws MailException, MessagingException { 
     String methodName = "sendwithAttachment"; 
    LogManager.info(LogConstants.NOTIFICATION, 
      Constants.ENTERING_METHOD + methodName, this.getClass()); 
    try{ 
     MailSender MailSender = (MailSender) mailSender; 
     Session session = MailSender.getSession(); 
     MimeMessageHelper message = new MimeMessageHelper(new MimeMessage(session), true, "UTF-8"); 
     message.setFrom(mailMessage.getFrom()); 
      message.setTo(mailMessage.getTo()); 
       message.setSubject(mailMessage.getSubject()); 
     message.setSentDate(new Date()); 
     message.setText(mailMessage.getText()); 

     DiskFileAttacher[] diskFileAttachments = mailMessage.getDiskFileAttachments(); 
     for (int i = 0; ((diskFileAttachments != null) && i < diskFileAttachments.length); i++) { 
      message.addAttachment(diskFileAttachments[i].getAttachmentFilename(), new File(diskFileAttachments[i].getFilePath())); 
     } 
     InMemoryFileAttacher[] inMemoryFileAttachments = mailMessage.getInMemoryFileAttachments(); 
     for (int i = 0; ((inMemoryFileAttachments != null) && i < inMemoryFileAttachments.length); i++) { 
      if(inMemoryFileAttachments[i].getFileObj()!=null){ 
      message.addAttachment(inMemoryFileAttachments[i].getFileName(), 
        inMemoryFileAttachments[i].getFileObj()); 
      }else{ 
      message.addAttachment(inMemoryFileAttachments[i].getFileName(), 
        inMemoryFileAttachments[i]); 
      } 
     } 
     List mimeMessageList = new ArrayList(); 
     mimeMessageList.add(message.getMimeMessage()); 
     MimeMessage[] mimeMessages = (MimeMessage[]) mimeMessageList.toArray(new MimeMessage[mimeMessageList.size()]); 
     LogManager.info(LogConstants.NOTIFICATION,"before MailSender.send is called " + methodName, this.getClass()); 
     MailSender.send(mimeMessages); 
    }catch(MailException e){ 
     LogManager.info(LogConstants.NOTIFICATION, "Some exception occured while sending emails...", this.getClass()); 
} 

답변

0

확인합니다. 응용 프로그램에 JavaMail jar 파일을 포함하는 경우 Linux 시스템에 GNM 버전의 JavaMail 사본이있을 수 있습니다. libgnumail-java 패키지를 찾으십시오.

+0

답장을 보내 주셔서 감사합니다. 이 문제는 Maven 종속성을 가진 다른 메일 병과 비교적 유사하며 지금 해결되었습니다. – kumar

0

문제점을 발견하여 해결했습니다. "geronimo-javamail_1.4_spec"에 대한 종속성이있는 공리 jar에 대한 maven 종속성을 포함하며이 geronimo java 메일 jar도 다운로드됩니다. 이메일을 보내는 동안이 geronimo 메일 api가 원래 Java 메일 API 대신 사용되었습니다. 나는 제외 사항을 추가하고 이제는 해결되었습니다.