Гость
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Email ASA 12.0.1.3537 Использование java in database / 5 сообщений из 5, страница 1 из 1
14.08.2015, 14:48
    #39029519
Email ASA 12.0.1.3537 Использование java in database
Добрый день!
Задача следующая:
Надо отправлять из базы письма в HTML с вложенными в текст картинками

1) Стандартными средствами это решить не удалось + проблемы с некоторыми серверами

2) Кто- нибудь знает решение?

2) Написал прогу на яве (используя javax.mail) которая успешно работает из командной строки,
однако хотелось бы вставить ее в базу.
Это тоже почти получилось, с серверами без TLS работает и в базе.
Однако при работе с Gmail, требующим TLS возникает ошибка при выполнении bus.connect();

Фрагмент кода на яве
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
 public MyMaill(String to, String from, String host, String port, String login, String passw, String subject, Boolean tls) {
        // Only for java in database
        //add handlers for main MIME types 
        MailcapCommandMap mcap = new MailcapCommandMap();
        mcap.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
        mcap.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
        mcap.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
        mcap.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed; x-java-fallback-entry=true");
        mcap.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
        CommandMap.setDefaultCommandMap(mcap);
        //
        Properties props = new Properties();

        // Включение debug-режима
        //props.put("mail.debug", "true");
        props.setProperty("mail.user", login);
        props.setProperty("mail.password", passw);
        props.setProperty("mail.smtp.auth", "true");
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.host", host);
        if (!port.equals("")) {
            props.setProperty("mail.smtp.port", port);
        }
        if (tls) {
            props.setProperty("mail.smtp.starttls.enable", "true");
        }

        MailAuthenticator mauth = new MailAuthenticator(login, passw);
        mauth.getPasswordAuthentication();

        // Получение сессии
        Session session = Session.getDefaultInstance(props, mauth);
        try {
            bus = session.getTransport();
            bus.connect();

            // Создание объекта сообщения
            msg = new MimeMessage(session);


            // Установка атрибутов сообщения
            msg.setFrom(new InternetAddress(from));
            if (to != null) {
                msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            }

            msg.setSubject(subject);
            msg.setSentDate(new Date());

            // Создание экземпляра класса Multipart. Добавление частей сообщения в него.
            mp = new MimeMultipart();

        } catch (Exception ex) {
            // Печать информации обо всех возможных возникших исключениях
            ex.printStackTrace(System.out);
        }
    }




SQL код
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
REMOVE JAVA JAR 'mail';

INSTALL JAVA NEW
JAR 'mail'
FROM FILE 'D:\Netbeans Projects\HtmlMail\dist\lib\mail.jar';

REMOVE JAVA JAR 'HtmlMail';

INSTALL JAVA NEW
JAR 'HtmlMail'
FROM FILE 'D:\Netbeans Projects\HtmlMail\dist\HtmlMail.jar';




CREATE OR REPLACE FUNCTION  htmlMail(IN email_subject LONG VARCHAR , IN dirname LONG VARCHAR, IN docfile LONG VARCHAR, IN imgdirname LONG VARCHAR, IN email VARCHAR(200), IN  email_from VARCHAR(200), IN  email_host VARCHAR(200), IN  email_port VARCHAR(20), IN  email_login VARCHAR(200), IN  email_passw VARCHAR(200),  IN useTls INT) 
RETURNS LONG VARCHAR
EXTERNAL NAME 'htmlmail.HtmlMail.htmlMail(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;'
LANGUAGE JAVA;
 
 
//              IN email_subject LONG VARCHAR , IN dirname LONG VARCHAR, IN docfile LONG VARCHAR, IN imgdirname LONG VARCHAR, IN email VARCHAR(200), IN  email_from VARCHAR(200)  , IN  email_host VARCHAR(200), IN  email_port VARCHAR(20), IN  email_login VARCHAR(200), IN  email_passw VARCHAR(200),  IN useTls INT
SELECT htmlMail('Test HTML EMAIL '            , 'C:/testhtml'          , 'index.html'           ,'img'                      , 'avgritsenko@ya.ru'  , 'avgritsenko196106@gmail.com','smtp.gmail.com'            ,'25'                       ,'avgritsenko196106'          ,'gmailteoretik'              ,  1     );
//  SELECT htmlMail('ТЕСТ Test HTML EMAIL '            , 'C:/testhtml'          , 'index.html'           ,'img'                      , 'avgritsenko@ya.ru'  , 'gritsenko@centaursoftware.ru','mail.centaursoftware.ru'            ,'25'                       ,'gritsenko'          ,'sht94uwb38c'              ,  0    );
  




javax.mail.MessagingException: Could not convert socket to TLS;
nested exception is:
java.net.SocketException: java.security.NoSuchAlgorithmException: Default SSLContext not available

at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:2000)

at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:709)

at javax.mail.Service.connect(Service.java:386)

at javax.mail.Service.connect(Service.java:245)

at javax.mail.Service.connect(Service.java:194)

at MyMail.MyMaill.<init>(MyMaill.java:75)

at htmlmail.HtmlMail.htmlMail(HtmlMail.java:132)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at ianywhere.sa.jvm.SAJvm.executeMethod(SAJvm.java:1336)

at ianywhere.sa.jvm.SAJvm.run(SAJvm.java:304)

Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Default SSLContext not available

at javax.net.ssl.DefaultSSLSocketFactory.throwException(SSLSocketFactory.java:179)

at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:199)

at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:523)

at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1995)

... 12 more

Caused by: java.security.NoSuchAlgorithmException: Default SSLContext not available

at sun.security.jca.GetInstance.getInstance(GetInstance.java:142)

at javax.net.ssl.SSLContext.getInstance(SSLContext.java:125)

at javax.net.ssl.SSLContext.getDefault(SSLContext.java:68)

at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:102)

at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:518)

... 13 more

java.lang.NullPointerException

at MyMail.MyMaill.AddRecipient(MyMaill.java:101)

at htmlmail.HtmlMail.htmlMail(HtmlMail.java:134)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at ianywhere.sa.jvm.SAJvm.executeMethod(SAJvm.java:1336)

at ianywhere.sa.jvm.SAJvm.run(SAJvm.java:304)



СПАСИБО!
...
Рейтинг: 0 / 0
14.08.2015, 15:59
    #39029588
Email ASA 12.0.1.3537 Использование java in database
Те если ява сама по себе ( у меня версия 1.8.0_40) то все работает во всех вариантах
Если в базе то TLS не работает

Понятно что ява в базе другой версии (компилю под JDK 6) но она еще и урезанная либо имеет другие настройки

Никто не может подсказать что надо сделать/настроить чтобы это заработало?

Спасибо!
...
Рейтинг: 0 / 0
15.08.2015, 21:53
    #39030122
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Email ASA 12.0.1.3537 Использование java in database
Ну в базе она то ли 1.3, то ли 1.4... Вы можете оформить свою процедуру в виде библиотеки и осуществлять ее вызов из базы...
...
Рейтинг: 0 / 0
19.08.2015, 10:10
    #39032098
Email ASA 12.0.1.3537 Использование java in database
Sergey OrlovНу в базе она то ли 1.3, то ли 1.4... Вы можете оформить свою процедуру в виде библиотеки и осуществлять ее вызов из базы...

Что Вы имеете в виду , можно поподробнее?
Не так а как-то по другому?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
INSTALL JAVA NEW
JAR 'mail'
FROM FILE 'D:\Netbeans Projects\HtmlMail\dist\lib\mail.jar';

INSTALL JAVA NEW
JAR 'HtmlMail'
FROM FILE 'D:\Netbeans Projects\HtmlMail\dist\HtmlMail.jar';

CREATE OR REPLACE FUNCTION  htmlMail(IN email_subject LONG VARCHAR , IN dirname LONG VARCHAR, IN docfile LONG VARCHAR, IN imgdirname LONG VARCHAR, IN email VARCHAR(200), IN  email_from VARCHAR(200), IN  email_host VARCHAR(200), IN  email_port VARCHAR(20), IN  email_login VARCHAR(200), IN  email_passw VARCHAR(200),  IN useTls INT) 
RETURNS LONG VARCHAR
EXTERNAL NAME 'htmlmail.HtmlMail.htmlMail(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;'
LANGUAGE JAVA;



Так как раз она и не работает с Gmail
...
Рейтинг: 0 / 0
20.08.2015, 12:39
    #39033076
Email ASA 12.0.1.3537 Использование java in database
Всем спасибо.

Неожиданно выяснилось что в стандартной базе все работает, проблема возникает именно в нашей базе.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Email ASA 12.0.1.3537 Использование java in database / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]