powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Опять непонятки с JavaMail, помогите плииз
10 сообщений из 10, страница 1 из 1
Опять непонятки с JavaMail, помогите плииз
    #33518566
Urt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот начал читать документацию и как-то неясен стал такой вопрос - чтобы послать письмо. что вообще нужно? Нужно знать протомкол. по котрому шлёшь, или что? Во тя например хочу послать типа "спамовой рассылки" - 100 писем на адрес trampar@param.ru - и всё, больше мне ничего не надо. Если делать без явы(и вообще без языков любых других) - то открываю почтовый клиент и просто шлю письмо. А тут как? Если кто-то может привести работающий пример, то был бы очень благодарен.
...
Рейтинг: 0 / 0
Опять непонятки с JavaMail, помогите плииз
    #33518628
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Опять непонятки с JavaMail, помогите плииз
    #33518648
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиск творит чудеса...
Код: plaintext
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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
*
 * CmdMail.java
 *
 * Created on  10  Август  2005  г.,  9 : 23 
 *
 *
 */

 package  mail;
 import  java.util.*;
 import  javax.mail.*;
 import  javax.mail.internet.*;

/**
 * Проверка посылки почты с помощью библиотеки Javamail по протоколу SMTP.
 *
 * Основные проблемы:
 * - задание кодировки для русских букв в тексте письма и в полях 
 *   "кому", "от кого", "тема" (сделано).
 * - установка соответствия между именем пользователя и его адресом эл.почты,
 *   пользуясь LDAP или адресной книгой Outlook (не сделано).
 *
 * @author Partisan
 * @version 0.0.1
 */
 public   class  CmdMail {
    ResourceBundle m_appResources =  null ;
    /**
     * Creates a new instance of CmdMail
     */
     public  CmdMail() {
    }
    
    /**
     * @param args the command line arguments
     */
     public   static   void  main(String[] args) {
        // TODO code application logic here
        CmdMail app =  new  CmdMail();
        app.loadResources("mail.CmdMail");
         try  {
            app.sendSimpleMail();
        }  catch  (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
    
    /**
     * Простейшая функция посылки письма, позволяющая использовать русские буквы
     * в его тексте и строке темы.
     */
     public   void  sendSimpleMail()  throws  Exception {//TODO:правильные Exception
        Properties props =  new  Properties();
        
        props.setProperty("mail.transport.protocol", "smtp");
        props.put("mail.smtp.allow8bitmime", "true");
        props.setProperty("mail.host", m_appResources.getString("mail.smtp.host"));
        props.setProperty("mail.user", m_appResources.getString("mail.user"));
        props.setProperty("mail.password", m_appResources.getString("mail.password"));
        
        Session mailSession = Session.getDefaultInstance(props,  null );//javax.mail.Session
        mailSession.setDebug(true);
        fetchMessages (mailSession, "INTRAMAIL", "t01335", "bel123");
        
        Transport transport = mailSession.getTransport();
        
        MimeMessage message =  new  MimeMessage(mailSession);
        
        message.setFrom( new  InternetAddress(m_appResources.getString("mail.user")));
        
        //необходимо для русского языка в "теме" письма (подошло также UTF-8):
        message.setSubject(m_appResources.getString("message.theme"), "KOI8-R");
        //или:
        //message.setText(m_appResources.getString("message.body"), "UTF-8");
        message.setContent(m_appResources.getString("message.body"),
                "text/plain;charset=\"UTF-8\"");//не захотело UTF-16
        
        /*
         String Html = ...;
         String DefaultCharSet=
        MimeUtility.getDefaultJavaCharset();
        msg.setText(MimeUility.encodeText(Html,DefaultCharSet,"B"));
        msg.send();
         
        Q short for Quoted Printable
        B short for Base64
         */
        
        InternetAddress addrTo =  new  InternetAddress(m_appResources.getString("recipient.address"));
        //для русского языка в имени получателя (аналогично в имени отправителя): 
         try  {
            addrTo.setPersonal("заец зайцев", "KOI8-R");
        }  catch  (java.io.UnsupportedEncodingException uee) {
            System.out.println(uee.getMessage());
        }
        message.addRecipient(Message.RecipientType.TO,
                addrTo //Например:"=?koi8-r?Q?=E0=D2=C7=C9=CE_=E1=2E=EB=2E?=" - эти закорючки означают "Юргин А.К."
                );
        // Проверка задания натурального заголовка (работает, проще всего увидеть,задав mailSession.setDebug(true)):
        message.setHeader("X-Mailer", "org.sukhoi.mail"); //произвольное указание почтовой программы
        
        message.setSentDate( new  Date());
        message.setHeader("Content-Transfer-Encoding", "base64"); //должно быть после setText()

        transport.connect();
        //нужен поток, т.к. возможна долгая операция.
        //сравнить с send();
        //разрешить частичную посылку, если адресов много,чтоб при одном неправильном адресе
        //не прекращало работу.
        
        transport.sendMessage(message,
                message.getRecipients(Message.RecipientType.TO));
        
        //для отладки - список заголовков:
        Enumeration msgHeaders = message.getAllHeaders();
        System.out.println("HEADERS");
         while  (msgHeaders.hasMoreElements()) {
            Header header = (Header) msgHeaders.nextElement();
            System.out.println(header.getName() + "=" + header.getValue());
        }
        
        transport.close();
    }
    
    /**
     * Пытается соединиться с почтовым ящиком и получить список писем.
     */
     public   void  fetchMessages(Session session, String host, String username, String password) {
         try  {
            Store store = session.getStore("pop3");//"imap" не заработало(connection refuzed) - добавить проверку, что есть
            store.connect(host, username, password);

            Folder folder = store.getFolder("INBOX");
            folder.open(Folder.READ_ONLY);

            Message message[] = folder.getMessages();
             for  ( int  i= 0 ; i < message.length; i++) {
                System.out.println(i + ": " + message[i].getFrom()[ 0 ]//Дефект - getFrom... м.б. null
                        + "\t" + message[i].getSubject());
            }

            folder.close(false);
            store.close();
        }  catch  (NoSuchProviderException nspe) {
            System.out.println(nspe.getMessage());
        }  catch  (MessagingException me) {
            System.out.println(me.getMessage());
        }
    }
    
    /**
     * Загрузить строковые ресурсы.
     * @param resourceName имя файла свойств (без хвоста вида "..._ru_RU.properties").
     */
     private   void  loadResources(String resourceName) {
        m_appResources = PropertyResourceBundle.getBundle(resourceName);//TODO:использовать только для многоязычных сообщений
        //для отладки
        Enumeration keys = m_appResources.getKeys();
         while  (keys.hasMoreElements()) {
            String key = (String) keys.nextElement();
            System.out.println(key + "=" + m_appResources.getString(key));
        }
    }
}
...
Рейтинг: 0 / 0
Опять непонятки с JavaMail, помогите плииз
    #33518721
jdo123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ http://www.java2s.com/Code/Java/Network-Protocol/Email.htm

Спасибо за ссылку, запустил пример http://www.java2s.com/Code/Java/Network-Protocol/Sendersendanemailmessage.htm
и получил Exception:
javax.mail.MessagingException: Unknown SMTP host: mailhost;
nested exception is:
java.net.UnknownHostException: mailhost
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1006)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:197)
at javax.mail.Service.connect(Service.java:233)
at javax.mail.Service.connect(Service.java:134)
at javax.mail.Service.connect(Service.java:86)
at com.sun.mail.smtp.SMTPTransport.connect(SMTPTransport.java:104)
at javax.mail.Transport.send0(Transport.java:162)
at javax.mail.Transport.send(Transport.java:80)
at mail.Sender.doSend(Sender.java:87)
at mail.Sender.main(Sender.java:99)
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:324)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:78)
java.lang.ClassCastException
at mail.Sender.doSend(Sender.java:90)
at mail.Sender.main(Sender.java:99)
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:324)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:78)
Exception in thread "main"

Я даже догадываюсь, отчего это - там в комментариях написано
// Your LAN must define the local SMTP server as "mailhost"
// for this simple-minded version to be able to send mail...

вот тольк как это сделать, может быть и это для полного счастья скажете?
ОС WinXP
...
Рейтинг: 0 / 0
Опять непонятки с JavaMail, помогите плииз
    #33518861
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jdo123
Я даже догадываюсь, отчего это - там в комментариях написано
// Your LAN must define the local SMTP server as "mailhost"
// for this simple-minded version to be able to send mail...

вот тольк как это сделать, может быть и это для полного счастья скажете?
ОС WinXP
если я пользуюсь почтовым сервисом mail.ru, то smtp-сервер в этом случае
smtp.mail.ru.
...
Рейтинг: 0 / 0
Опять непонятки с JavaMail, помогите плииз
    #33518896
Urt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал props.put("mail.smtp.host", "smtp.mail.ru");

А.Грасоff™ jdo123
Я даже догадываюсь, отчего это - там в комментариях написано
// Your LAN must define the local SMTP server as "mailhost"
// for this simple-minded version to be able to send mail...

вот тольк как это сделать, может быть и это для полного счастья скажете?
ОС WinXP
если я пользуюсь почтовым сервисом mail.ru, то smtp-сервер в этом случае
smtp.mail.ru.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
javax.mail.MessagingException:  503  Administrative prohibition -- authorization required.  Users in your domain are not allowed to send email without authorization.  See http://www.mail.ru/pages/help/261.html for details.

	at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java: 1020 )
	at com.sun.mail.smtp.SMTPTransport.data(SMTPTransport.java: 937 )
	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java: 390 )
	at javax.mail.Transport.send0(Transport.java: 163 )
	at javax.mail.Transport.send(Transport.java: 80 )
	at mail.Sender.doSend(Sender.java: 88 )
	at mail.Sender.main(Sender.java: 100 )
	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: 324 )
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java: 78 )

И куда этот autorization писать?
...
Рейтинг: 0 / 0
Опять непонятки с JavaMail, помогите плииз
    #33518907
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrtИ куда этот autorization писать?
а именно этот топик не смотерл внимательно?

props.setProperty("mail.user", "user");
props.setProperty("mail.password", "pass");
...
Рейтинг: 0 / 0
Опять непонятки с JavaMail, помогите плииз
    #33519372
Urt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ UrtИ куда этот autorization писать?
а именно этот топик не смотерл внимательно?

props.setProperty("mail.user", "user");
props.setProperty("mail.password", "pass");

Извините...
Вобщем, спасибо за советы, письмо я послал таки, через JavaMail первый раз в жизни, что очень приятно! Но через mail.ru не получилось(послал через другой). А в варианте с mail.ru я заполнил эти два свойства - user, это у них адрес в системе mail.ru, а пароль - это пароль входа в систему, но почему-то это не помогло. Можте быть, есть идеи, почему? Всё-таки было бы приятно разобраться с этим до конца.
...
Рейтинг: 0 / 0
Опять непонятки с JavaMail, помогите плииз
    #33522854
Urt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё-таки какая-то фигня получается. Мне удалось только послать письмо самому себе. в остальлных случая получаю exeption
Код: plaintext
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.
javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
	 class  javax.mail.SendFailedException:  554  Relay rejected  for  policy reasons.
;
  nested exception is:
	 class  javax.mail.SendFailedException:  554  Relay rejected  for  policy reasons.

	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java: 926 )
	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java: 389 )
	at javax.mail.Transport.send0(Transport.java: 163 )
	at javax.mail.Transport.send(Transport.java: 80 )
	at mail.Sender.doSend(Sender.java: 90 )
	at mail.Sender.main(Sender.java: 102 )
	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: 324 )
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java: 78 )
javax.mail.SendFailedException:  554  Relay rejected  for  policy reasons.
;
  nested exception is:
	 class  javax.mail.SendFailedException:  554  Relay rejected  for  policy reasons.

	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java: 830 )
	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java: 389 )
	at javax.mail.Transport.send0(Transport.java: 163 )
	at javax.mail.Transport.send(Transport.java: 80 )
	at mail.Sender.doSend(Sender.java: 90 )
	at mail.Sender.main(Sender.java: 102 )
	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: 324 )
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java: 78 )
javax.mail.SendFailedException:  554  Relay rejected  for  policy reasons.

	at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java: 830 )
	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java: 389 )
	at javax.mail.Transport.send0(Transport.java: 163 )
	at javax.mail.Transport.send(Transport.java: 80 )
	at mail.Sender.doSend(Sender.java: 90 )
	at mail.Sender.main(Sender.java: 102 )
	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: 324 )
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java: 78 )
Что делать???
...
Рейтинг: 0 / 0
Опять непонятки с JavaMail, помогите плииз
    #33566496
leafox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
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.
Properties mailProps =  new  Properties();

      mailProps.put( "mail.smtp.host","smtp.mail.ru" );
      mailProps.put( "mail.smtp.auth", "true" );
      
      Authenticator auth =  new  Authenticator()
      {
          protected  PasswordAuthentication getPasswordAuthentication()
         {
             return (  new  PasswordAuthentication("user","password") );
         }
      };
      
      Session mailSession = 
          Session.getDefaultInstance( mailProps, auth );
      
      MimeMessage message =  new  MimeMessage( mailSession );
      message.setFrom(  new  InternetAddress("user@mail.ru") );
      
      InternetAddress dests[] =
           new  InternetAddress[]{  new  InternetAddress("user@host.ru") };
      message.setRecipients(Message.RecipientType.TO, dests );
      message.setSubject( "Привет!", encoding );
      Multipart mp =  new  MimeMultipart();
      MimeBodyPart mbp1 =  new  MimeBodyPart();
      mbp1.setText( text, encoding );
      mp.addBodyPart( mbp1 );
      message.setContent( mp );
      message.setSentDate(  new  Date() );
      
      Transport.send( message );
Работает 100%
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Опять непонятки с JavaMail, помогите плииз
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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