java
  • ibm-mobilefirst
  • javamail
  • geronimo
  • 2016-11-03 2 views 0 likes 
    0

    Я использую ниже код для отправки электронной почты через java-адаптер в MFP 7.0, также есть приложение.Невозможно отправить письмо API JavaMail в MFP 7.0 Java-адаптер

    try { 
         StringBuffer sb = new StringBuffer(); 
         try { 
          sb.append("<p style='font-family:Sans-serif;font-size: 12px'>Dear Xyz,<br><br>Attachment :</p>"); 
          sb.append("<p style='font-family:Sans-serif;font-size: 12px'>Regards, <br><br> Team"); 
          String mailHost = "10.x.x.x"; 
          String mailFrom = "[email protected]"; 
          String mailTo = email; 
          String mailSubject = "Subject"; 
          String mailBody = sb.toString(); 
          String mailAttachment = "" + fileName; 
    
          Properties properties = System.getProperties(); 
          properties.setProperty("mail.smtp.host", mailHost); 
    
          Session session = Session.getDefaultInstance(properties); 
    
          Message message = new MimeMessage(session); 
          message.setFrom(new InternetAddress(mailFrom)); 
          Address[] toAddress = null; 
    
          if (mailTo != null) { 
           toAddress = InternetAddress.parse(mailTo); 
           message.setRecipients(Message.RecipientType.TO, toAddress); 
          } 
    
          message.setSubject(mailSubject); 
    
          MimeBodyPart messageBodyPart = new MimeBodyPart(); 
          messageBodyPart.setContent(mailBody, "text/html"); 
          Multipart multipart = new MimeMultipart(); 
          multipart.addBodyPart(messageBodyPart); 
          messageBodyPart = new MimeBodyPart(); 
          String attachmentLocation = mailAttachment; 
          DataSource source = new FileDataSource(attachmentLocation); 
          messageBodyPart.setDataHandler(new DataHandler(source)); 
          messageBodyPart.setFileName(new File(attachmentLocation) 
            .getName()); 
          multipart.addBodyPart(messageBodyPart); 
          message.setContent(multipart); 
    
          Transport.send(message); 
         } catch (AddressException e) { 
          e.printStackTrace(); 
         } catch (MessagingException e) { 
          e.printStackTrace(); 
         } 
    

    Я получаю следующую ошибку.

    java.lang.ClassCastException: org.apache.geronimo.mail.handlers.HttpHandler cannot be cast to javax.activation.DataContentHandler jax rs 
    

    Просьба предложить по этому вопросу, как класс HttpHandler от Worklight-Jee-library.jar, который я не могу переопределение. Это их альтернатива для отправки электронной почты с приложением из Java-адаптера.

    +0

    Похоже, вы используете версию JavaMail Gnu. Вероятно, вам повезет больше, если вы сможете переключиться на [эталонную реализацию JavaMail] (https://java.net/projects/javamail/pages/Home). Если версия Gnu встроена в библиотеку материалов, и вы не можете ее изменить, вам, возможно, потребуется обратиться в IBM за помощью. –

    +0

    @arun punnath, любые обновления в этом вопросе? –

    ответ

    0

    Мы делаем это немного по-другому ...

    1. В логике приложения:

      ... 
      ...  
      for (var i = 0; i < devices.resultSet.length; i++) { 
          var sendResult = com.SendMail.SendMail.sendMail(devices.resultSet[i].email, devices.resultSet[i].serial, devices.resultSet[i].manufacturer, devices.resultSet[i].days); 
          results.push(sendResult); 
      } 
      ... 
      
    2. И код Java (хранится в сервере/Java/COM/SendMail/Sendmail. Java) - вы, очевидно, необходимо изменить детали реализации ...:

      package com.SendMail; 
      
      import java.util.*; 
      import javax.mail.*; 
      import javax.mail.internet.*; 
      
      public class SendMail { 
          public static String sendMail(String emailAddress) { 
          String debugMessage = ""; 
      
      
            // Recipient's email ID needs to be mentioned. 
            //String to = "[email protected]"; 
            String to = emailAddress; 
      
            // Sender's email ID needs to be mentioned 
            String from = "the-senders-email-address"; 
      
            Properties props = new Properties(); 
            props.put("mail.smtp.host", "the.host.name.com"); 
            props.put("mail.smtp.port", "25"); 
      
            // Get the default Session object. 
            Session session = Session.getDefaultInstance(props); 
      
            try{ 
            // Create a default MimeMessage object. 
            MimeMessage message = new MimeMessage(session); 
      
            // Set From: header field of the header. 
            message.setFrom(new InternetAddress(from)); 
      
            // Set To: header field of the header. 
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
      
            // Set Subject: header field 
            message.setSubject("the email subject line"); 
      
            // Now set the actual message 
            message.setText("the email body message"); 
      
      
            // Send message 
            Transport.send(message); 
            debugMessage="Email sent successfully to " + emailAddress; 
      
            } catch (MessagingException mex) { 
            mex.printStackTrace(); 
            debugMessage=mex.toString(); 
            } 
      
            return debugMessage; 
          } 
      } 
      
    Смежные вопросы