powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Email ASA 12.0.1.3537 Использование java in database
5 сообщений из 5, страница 1 из 1
Email ASA 12.0.1.3537 Использование java in database
    #39029519
Добрый день!
Задача следующая:
Надо отправлять из базы письма в 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
Email ASA 12.0.1.3537 Использование java in database
    #39029588
Те если ява сама по себе ( у меня версия 1.8.0_40) то все работает во всех вариантах
Если в базе то TLS не работает

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

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

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

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


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