Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> javamail 
V
    Опции темы
batigoal
Дата 3.10.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 2
Всего: 151



А ты переподключаешься, или шлешь по уже установленному соединению?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
kkorsakoff
Дата 3.10.2006, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 14



Поможет только
1. слать в одной сессии (как сказано batigoal)
2. добавить все адреса в CC или BCC. Письмо уйдет разом. Но там есть свои тонкости, чтобы адресаты друг друга не увидели.
PM MAIL WWW ICQ   Вверх
Bulat
Дата 4.10.2006, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(batigoal @  3.10.2006,  17:00 Найти цитируемый пост)
уже установленному соединению

угу.

Тут еще такая фишка, что и через типичный Bat по нашему почтовому серверу письма медленно отсылаются, но побыстрее чем у меня.

Цитата(kkorsakoff @  3.10.2006,  19:47 Найти цитируемый пост)
добавить все адреса в CC или BCC. Письмо уйдет разом. Но там есть свои тонкости, чтобы адресаты друг друга не увидели. 

А вот можно поподробнее или хотя бы ссылочку smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
kkorsakoff
Дата 4.10.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 14



При добавлении адресата, указать Message.RecipientType.BCC и всех адресатов добавить туда. 

Код

Message.addRecipients(Message.RecipientType.BCC, Address[] addresses)


Письмо уйдет быстро и одно точно, но я затрудняюсь сказать, что увидят в поле "адресат" все эти пользователи smile  Возможно себя, возможно всех BCC, а возможно "основого адресата", добавленного как Message.RecipientType.TO. Кстати не забудь одного из адресатов добавить как TO.

Это сообщение отредактировал(а) kkorsakoff - 4.10.2006, 13:15
PM MAIL WWW ICQ   Вверх
Bulat
Дата 9.10.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Как тады преобразовать java.util.List data = new java.util.ArrayList() в javax.mail.Address[] addresses? Перепробовал с десяток способов, но каждый раз ошибка smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
y3u
Дата 9.10.2006, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: нет
Всего: 13



на эту тему в факу полно информации... Если у тебя в data лежат действительно объекты Address, то делается, к примеру, так:

Код

(Address[])data.toArray(new Address[data.size()]);



--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
Bulat
Дата 10.10.2006, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



y3u, так я тоже пробовал
Код

javax.mail.Address[] addresses = (javax.mail.Address[]) data.toArray(new javax.mail.Address[data.size()]);


но
Цитата

Exception in thread "AWT-EventQueue-0" java.lang.ArrayStoreException
    at java.lang.System.arraycopy(Native Method)
    at java.util.ArrayList.toArray(ArrayList.java:305)
    at MailSender.MailSend.MailSendTest.sendMail(MailSendTest.java:36)
    at MailSender.MailSend.MailSendTest.<init>(MailSendTest.java:20)
    at MailSender.MailInterface.MainForm.ButtonSend.actionPerformed(ButtonSend.java:21)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
    at java.awt.Component.processMouseEvent(Component.java:5488)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
    at java.awt.Component.processEvent(Component.java:5253)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3955)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1774)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


сам список заполняется подобным образом
Код

java.util.List data = new java.util.ArrayList();
for (int i = 0; i < rowCount; i++) {
    data.add(tableAddress.getValueAt(i, 0));
}



--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
y3u
Дата 10.10.2006, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: нет
Всего: 13



Код

tableAddress

это что? приведи более полный код


--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
Bulat
Дата 10.10.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Ок, по названию может не сразу понятно что таблица адресов:
Код

public class ButtonSend extends java.awt.Component implements java.awt.event.ActionListener {
    private javax.swing.JTextArea mailTextArea;
    private javax.swing.JTable tableAddress;

    public ButtonSend(javax.swing.JTextArea mailTextArea, javax.swing.JTable tableAddress) {
        this.mailTextArea = mailTextArea;
        this.tableAddress = tableAddress;
    }

    public void actionPerformed(java.awt.event.ActionEvent ae) {
        String mailText = mailTextArea.getText();
        int rowCount = tableAddress.getRowCount();
        if ((rowCount > 0) && (!mailText.equals(""))) {
            java.util.List data = new java.util.ArrayList();
            for (int i = 0; i < rowCount; i++) {
                data.add(tableAddress.getValueAt(i, 0));
            }
            new MailSender.MailSend.MailSendTest(data);
        } else if (rowCount == 0) {
            javax.swing.JOptionPane.showMessageDialog(this, "Список адресатов пуст", "Ошибка", javax.swing.JOptionPane.ERROR_MESSAGE);
        } else if (mailText.equals("")) {
            javax.swing.JOptionPane.showMessageDialog(this, "Отсутствует текст письма", "Ошибка", javax.swing.JOptionPane.ERROR_MESSAGE);
        }
    }

}


Вообще, через ТО отправляется и все в прядке, а вот если весь список e-mail адресов переводить в тип javax.mail.Address[] проблема.


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
y3u
Дата 10.10.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: нет
Всего: 13



а, ну естественно, у тебя в коллекции стринги, а ты кастишь к Address smile (вот почему надо использовать дженерики)

тебе надо делать не 

Код

        for (int i = 0; i < rowCount; i++) {
                data.add(tableAddress.getValueAt(i, 0));
        }


а

Код

        for (int i = 0; i < rowCount; i++) {
                data.add(new InternetAddress(tableAddress.getValueAt(i, 0)));
        }


еще бы я подобные сравнения 
Код

        mailText.equals("")

заменил бы на

Код

        mailText != null && mailText.trim().length > 0




--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
Bulat
Дата 11.10.2006, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(y3u @ 10.10.2006,  11:58)
Код

        for (int i = 0; i < rowCount; i++) {
                data.add(new InternetAddress(tableAddress.getValueAt(i, 0)));
        }


Вот с этого и надо было начинать smile  smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Bulat
Дата 17.11.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



вернулся господа к своему детищу, и с таким вопросом, письма на домены, зарегестрированные в нашей почтовой службе отправляются, вот только на иные домены нет, типа на маил.ру и т.п.

Цитата

javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
    com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)

    at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1196)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584)
    at javax.mail.Transport.send0(Transport.java:169)
    at javax.mail.Transport.send(Transport.java:98)
    at MailSender.MailSend.MailSend.sendMail(MailSend.java:40)
    at MailSender.MailSend.MailSend.<init>(MailSend.java:14)
    at MailSender.MailInterface.MainForm.ButtonSend.actionPerformed(ButtonSend.java:26)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
    at java.awt.Component.processMouseEvent(Component.java:5488)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
    at java.awt.Component.processEvent(Component.java:5253)
    at java.awt.Container.processEvent(Container.java:1966)
    at java.awt.Component.dispatchEventImpl(Component.java:3955)
    at java.awt.Container.dispatchEventImpl(Container.java:2024)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
    at java.awt.Container.dispatchEventImpl(Container.java:2010)
    at java.awt.Window.dispatchEventImpl(Window.java:1774)
    at java.awt.Component.dispatchEvent(Component.java:3803)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)

    at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1047)
    ... 30 more



Код

public class MailSend extends java.awt.Component {
    private java.util.List data = new java.util.ArrayList();

    static String MAILTEXT = "";
    static final String ENCODING = "koi8-r";
    static final String FROM = " OAO \"KOMTAT\" <[email protected]>";

    public MailSend(java.util.List data, String mailText) {
        this.data = data;
        MAILTEXT = mailText;

        sendMail();
    }

    public void sendMail() {

        javax.mail.Address[] addresses = (javax.mail.Address[]) data.toArray(new javax.mail.Address[data.size()]);
        java.util.Properties mailProps = new java.util.Properties();

        mailProps.put("mail.store.protocol","pop3");
        mailProps.put("mail.transport.protocol","smtp");
        mailProps.put("mail.user","myaccount");

        mailProps.put("mail.pop3.host","mail.kazan.ru");
        mailProps.put("mail.smtp.host","mail.kazan.ru");

        javax.mail.Session session = javax.mail.Session.getDefaultInstance(mailProps);
        javax.mail.internet.MimeMessage message = new javax.mail.internet.MimeMessage(session);

        try {
            message.setFrom(new javax.mail.internet.InternetAddress(FROM));

            message.addRecipients(javax.mail.Message.RecipientType.BCC, addresses);

            message.setSubject("Информационное письмо",ENCODING);
            message.setText(MAILTEXT, ENCODING);

            javax.mail.Transport.send(message);

            javax.swing.JOptionPane op = new javax.swing.JOptionPane("Рассылка успешно отправлена");
            javax.swing.JDialog d = op.createDialog(this, "Сообщение о доставке");
            d.setVisible(true);
        } catch (Exception e){
            javax.swing.JOptionPane.showMessageDialog(this, e, "Ошибка", javax.swing.JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
        }
    }

}


так то вроде и понятно отчего ошибка, но как обойти, что дописать не знаю smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
kkorsakoff
Дата 19.11.2006, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 14



Тут уже проблема не в java. Твой SMTP сервер не желает отправлять письма на домены вне вашей организации. В принципе можно понять почемуsmile

Варианта три: 
1. найти SMTP сервер, который будет разрешать это делать
2. попросить админа разрешить отправку писем (установив при этом какие-то ограничения, например авторизацию или контроль по ip)
3. разбивать отправку на несколько этапов. Каждый домен (например mail.ru) - коннектишься к почтовому серверу mail.ru, отправляешь письма конкретно на этот домен. И так далее для каждого домена. Узнать адреса почтовых серверов можно при помощи dns (тип записи MX). 
PM MAIL WWW ICQ   Вверх
Bulat
Дата 20.11.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



kkorsakoff, но тот же самый TheBat через наш сервер отправляет, а моя прога нет, вот мне и кажется что все же что-то еще есть.......
А линки никакие не можешь дать по этому поводу....

P.S. гугл не предлагать, я там искал, но по этому поводу ничего конкретного smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
armixx
Дата 9.9.2010, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 16.8.2010

Репутация: нет
Всего: нет



Помогите, пожалуйста,  новичку. 
Хочу отправить письма с [email protected] куда-нибудь. Никакого почтового сервера не знаю.
Где взять имя сервера?
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.1040 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.