Почему моя программа javamail не работает через jdeveloper?

Я работаю над приложением Oracle MAF и использую API почты Java для отправки запросов на собрания Outlook. Я могу успешно отправлять почту из командной строки java, но при попытке использовать то же самое с помощью мобильного приложения код не идет после того, как создается объект класса «MimeMessage».

MimeMessage message = new MimeMessage(mailSession);

printStackTrace () показывает это исключение:

06-09 10: 54: 43.146: D / JVM (16075): [СЕРЬЕЗНО - oracle.adfmf.framework - Утилита - вызвать] InvocationTargetException Ошибка: ОШИБКА [oracle.adfmf.framework.exception.AdfException] - Ошибка при вызове метода sendMail 'in' класс beans.UtilBean '

06-09 12: 14: 07.466: I / System.out (3760): [СЕРЬЕЗНО - oracle.adfmf.framework - adf.mf.internal - logError] Запрос: {"classname": "oracle.adfmf.framework.api .Model "," method ":" processBatchRequests "," params ": [false, [{" classname ":" oracle.adfmf.framework.api.Model "," method ":" calculateMethodExpression "," params ": [ "# {UtilBean.sendMail}", [{". Type": "oracle.adfmf.amx.event.ActionEvent"}], "void", ["oracle.adfmf.amx.event.ActionEvent"]]}] ]} исключение: {"message": "Ошибка при вызове метода 'sendMail' в 'классах beans.UtilBean'", ". exception": true, "severity": "ERROR", ". type": "oracle.adfmf. framework.exception.AdfException "}

Full source code of my class is here:

package beans;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import oracle.adfmf.amx.event.ActionEvent;

public class Email {

    private static final String SMTP_HOST_NAME = "mail_host_name";
    private static final String SMTP_AUTH_USER = "smtp_user_id";
    private static final String SMTP_AUTH_PWD = "smtp_auth_pass";
    private static final String SMTP_AUTH_PORT = "smtp_port";
    private static final String MAIL_FROM_ADDRESS = "from_addr";
    private static final String RECEIPENT_1 = "receipent_1_addr";
    private static final String RECEIPENT_2 = "receipent_2_addr";

    public void sendEmail(ActionEvent actionEvent) {

        Properties props = new Properties();
        props.put("mail.smtp.host", SMTP_HOST_NAME);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", SMTP_AUTH_PORT);

        Authenticator auth = new SMTPAuthenticator();

        //Get the session object
        Session mailSession = Session.getDefaultInstance(props, auth);

        //compose message
        try {
            System.out.print("CALLED0"); //I can see this in Logcat Logs
            MimeMessage message = new MimeMessage(mailSession); // Program stuck here
            System.out.print("CALLED1");//I can not see this in Logcat Logs
            message.addHeaderLine("method=REQUEST");
            message.addHeaderLine("charset=UTF-8");
            message.addHeaderLine("component=vevent");
            message.setFrom(new InternetAddress(MAIL_FROM_ADDRESS));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(RECEIPENT_1));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(RECEIPENT_2));
            message.setSubject("Outlook Meeting Request Using JavaMail");

            StringBuffer sb = new StringBuffer();
            StringBuffer buffer =
                sb.append("BEGIN:VCALENDAR\n" + "PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN\n" +
                          "VERSION:2.0\n" + "METHOD:REQUEST\n" + "BEGIN:VEVENT\n" +
                          "ATTENDEE;CN=\"Attendee1\";ROLE=REQ-PARTICIPANT;MAILTO:[email protected]\n" +
                          "ATTENDEE;CN=\"Attendee2\";ROLE=OPT-PARTICIPANT;MAILTO:[email protected]\n" +
                          "ORGANIZER:MAILTO:[email protected]\n" + "DTSTART:20050406T073000Z\n" +
                          "DTEND:20050406T080000Z\n" + "LOCATION:conf\n" + "TRANSP:OPAQUE\n" + "SEQUENCE:0\n" +
                          "UID:040000008200E00074C5B7101A82E00800000000A0A742E5073AC5010000000000000000100\n" +
                          " 0000029606C073D82204AB6C77ACE6BC2FBE2\n" + "DTSTAMP:20050405T122004Z\n" +
                          "CATEGORIES:Meeting\n" + "DESCRIPTION:What are you doing?\n\n" + "SUMMARY:How are you?\n" +
                          "PRIORITY:5\n" + "CLASS:PUBLIC\n" + "BEGIN:VALARM\n" + "TRIGGER:PT1440M\n" +
                          "ACTION:DISPLAY\n" + "DESCRIPTION:Reminder\n" + "END:VALARM\n" + "END:VEVENT\n" +
                          "END:VCALENDAR\n");
            // Create the message part
            BodyPart messageBodyPart = new MimeBodyPart();

            messageBodyPart.setHeader("Content-Class", "urn:content-classes:calendarmessage");
            messageBodyPart.setHeader("Content-ID", "calendar_message");
            messageBodyPart.setContent(buffer.toString(), "text/calendar");
            // Create a Multipart
            Multipart multipart = new MimeMultipart();
            // Add part one
            multipart.addBodyPart(messageBodyPart);
            // Put parts in message
            message.setContent(multipart);

            //send message
            Transport.send(message);
            System.out.println("message sent successfully");
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }

    private class SMTPAuthenticator extends javax.mail.Authenticator {
        public PasswordAuthentication getPasswordAuthentication() {
            String username = SMTP_AUTH_USER;
            String password = SMTP_AUTH_PWD;
            return new PasswordAuthentication(username, password);
        }
    }
}

В классе электронной почты я добавил оператор печати до и после создания объекта класса «MimeMessage», я могу видеть первую печать в logcat, но не вторую.


person Himanshu    schedule 09.06.2015    source источник
comment
Добавьте полную трассировку стека.   -  person Jens    schedule 09.06.2015
comment
Обновлено. Пожалуйста, проверьте. printStackTrace () отображает только эти исключения.   -  person Himanshu    schedule 09.06.2015
comment
Попробуйте исправить эти распространенные ошибки и посмотрите, помогает. Если нет, добавьте try / catch вокруг вызова и распечатайте исключение и трассировку стека; похоже, что ADF скрывает важную часть трассировки стека.   -  person Bill Shannon    schedule 09.06.2015


Ответы (1)


Развертывание java-проекта на сервере веб-логики в качестве веб-службы (как пакет .war) сработало для меня.

person Himanshu    schedule 24.06.2015