powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaMail - нет отправки/получения письма
10 сообщений из 10, страница 1 из 1
JavaMail - нет отправки/получения письма
    #34222484
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
//set MY_HOST, USER_NAME, USER_PASS, SEND_TO, SEND_FROM

Properties props = System.getProperties();
props.setProperty("mail.smtp.host", MY_HOST);
props.setProperty("mail.smtp.auth", "true");
props.put("mail.smtp.user", USER_NAME);
props.put("mail.smtp.password", USER_PASS);
			
Session session = Session.getInstance(props,  null );
MimeMessage message =  new  MimeMessage(session);

message.setFrom( new  InternetAddress(SEND_FROM, "Administrator"));
message.addRecipient(Message.RecipientType.TO,  new  InternetAddress(SEND_TO, "me"));
message.setSubject("Test");
message.setText("empty");
message.setHeader("Content-Type","text/plain;charset=UTF-8");

SMTPTransport transport = (SMTPTransport)session.getTransport("smtp");
transport.connect(MY_HOST, USER_NAME, USER_PASS);
 if  (transport.isConnected())
	transport.sendMessage(message, message.getAllRecipients());

Нет никаких ошибок, при дебаггинге конструкция if(transport.isConnected()) выполняется, есть пауза, свидетельствующая об отправке, но тестовые письма не приходят.

В чем может быть дело?

Также был попробован и такой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Properties props =  new  Properties();
props.put("mail.smtp.host", MY_HOST);
props.put("mail.smtp.user", USER_NAME);
props.put("mail.smtp.auth", "true");

Session sess = Session.getInstance(props,  null );
Message msg =  new  MimeMessage(sess);
msg.setFrom( new  InternetAddress(SEND_FROM));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(SEND_TO, false));
msg.setSubject("Subject");
msg.setContent("empty", "text/plain; Charset=UTF-8");
msg.setHeader("X-Mailer", "JSPtechEmail");
msg.setSentDate( new  Date());
Transport transport = sess.getTransport("smtp");
transport.connect(MY_HOST, USER_NAME, USER_PASS);
msg.saveChanges();
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();

То же самое - никаких ошибок, пауза, но письмо не приходит.
Возможно, можете что-то посоветовать.

Спасибо.
...
Рейтинг: 0 / 0
JavaMail - нет отправки/получения письма
    #34222525
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй включить отладочную информацию:

Код: plaintext
1.
2.
Session sess = Session.getInstance(props,  null );
sess.setDebug(true);

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
JavaMail - нет отправки/получения письма
    #34226080
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это парадоксально, конечно, но без всяких изменений письма стали не только отправляться, но и получаться. Сработал 2-ой вариант из двух предложенных мной.

Но все равно спасибо.
...
Рейтинг: 0 / 0
JavaMail - нет отправки/получения письма
    #34226418
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не хочу плодить еще топики по JavaMail, но есть еще один интересный вопрос по нему.
Мне необходимо отправить юзеру письмо с форматированием. Для этого я использую Header - "text/html". Все показывает просто отлично - натуральная веб-страничка. Однако мне надо добавить суда графику, точнее - флеш. И именно в теле письма. С атачментом я разобрался - посылается, принимается - работает замечательно.

Но как поместить флешку в тело письма??? К тому же флешка получает данные извне, но это уже моя забота. Главное - вставить ее туда.

Если упростить вопрос, то спрошу иначе: как что-то, что не является текстом, поместить в контект письма с хидером "text/html"?

Очень, очень буду признателен.

P.S. Конечно, на крайний случай у меня будет вариант с аттачем html-ки, в который встроена флешка, но этот вариант нежелателен, так как требует от получателя сохранения на диске самой странички и прилагаемой флешки с последующим запуском.
...
Рейтинг: 0 / 0
JavaMail - нет отправки/получения письма
    #34226433
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз уж флешка тянет данные извне, может и её саму разместить где-нибудь, а в документе ссылку?
...
Рейтинг: 0 / 0
JavaMail - нет отправки/получения письма
    #34226447
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет.
Во-первых, это может нарушить защиту сайта, с которого посылается письмо, так как флешка находится в защищенной области, а выделять шаринг для подобных вещей - это неправильно. Во-вторых, данные я задаю буквально при инициализации флешки (на момент отправки письма из сервлета они уже вычислены и известны), поэтому не надо никаких подгрузок.

Но за идею спасибо, сначала попробовал за нее взяться.
...
Рейтинг: 0 / 0
JavaMail - нет отправки/получения письма
    #34226505
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckкак что-то, что не является текстом, поместить в контект письма с хидером "text/html"?
Вот картинку поместить в текст письма удается легко, там имхо принцип такой же, как и с вложением файла, просто вложение именуется и на него дается ссылка:
Код: 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.
    Properties props =  new  Properties();
    props.setProperty("mail.transport.protocol", "smtp");
    props.setProperty("mail.smtp.host", <host>);
    props.setProperty("mail.smtp.auth", "true");
    props.setProperty("mail.smtp.user", <user>);
    props.setProperty("mail.smtp.password", <password>);

    Session mailSession = Session.getDefaultInstance(props,  null );
    mailSession.setDebug(true);
    Transport transport = mailSession.getTransport();

    MimeMessage message =  new  MimeMessage(mailSession);
    message.setSubject("HTML mail with image");
    message.setFrom( new  InternetAddress(<from>));
    message.addRecipient(Message.RecipientType.TO,  new  InternetAddress(<to>));
    MimeMultipart multipart =  new  MimeMultipart("related");

    // First part (the html)
    BodyPart messageBodyPart =  new  MimeBodyPart();
    String htmlText = "<h1>Hello</h1><img src=\"cid:image123\"><h1>QWERTY</h1>";
    messageBodyPart.setContent(htmlText, "text/html;charset=utf8");
    multipart.addBodyPart(messageBodyPart);

    // Second part (the image)
    BodyPart imagePart =  new  MimeBodyPart();
    imagePart.setDataHandler(
       new  DataHandler(
         new  FileDataSource("C:/Tmp/monster.gif")
      )
    );
    imagePart.setHeader("Content-ID", "<image123>");
    multipart.addBodyPart(imagePart);

    message.setContent(multipart);

    transport.connect(<host>, <user>, <password>);
    transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
    transport.close();
Остается выяснить, что надо прописать в случае флешки.
...
Рейтинг: 0 / 0
JavaMail - нет отправки/получения письма
    #34226545
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идея замечательная.
Делаю аналогичные действия:

Код: 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.
String aaa = "";
htmlText += "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" width=790 height=420 align=middle valign=middle>";
htmlText += "<param name=allowScriptAccess value=sameDomain />";
htmlText += "<param name=movie value=\"cid:fleshka\" />";
htmlText += "<param name=quality value=high />";
htmlText += "<embed src=\"cid:fleshka\" quality=\"high\" width=\"760\" height=\"460\" name=\"circle\" align=center allowScriptAccess=\"sameDomain\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" swliveconnect=\"true\" />";
htmlText += "</object>";

 try {
   Properties props =  new  Properties();
   props.put("mail.smtp.host", HOST);
   props.put("mail.smtp.user", NAME);
   props.put("mail.smtp.auth", PASSWORD);

   Session session = Session.getInstance(props,  null );

   Message message =  new  MimeMessage(session);
   message.setFrom( new  InternetAddress(FROM, FROM_WHO));
   message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(TO, false));
   message.setSubject(SUBJECT);
					
   Multipart multipart =  new  MimeMultipart("related");

   BodyPart messageBodyPart =  new  MimeBodyPart();
   messageBodyPart.setContent(htmlText, "text/html;charset=utf8");
   multipart.addBodyPart(messageBodyPart);
					
   BodyPart imagePart =  new  MimeBodyPart();
   imagePart.setDataHandler( new  DataHandler( new  FileDataSource(FILENAME)));
   imagePart.addHeader("Content-Disposition", " attachment; Filename=\"fleshka.swf\"");
   imagePart.setHeader("Content-Type", "application/x-shockwave-flash");
   imagePart.setHeader("Content-ID", "<fleshka>");
   multipart.addBodyPart(imagePart);

   message.setContent(multipart);
   Transport transport = session.getTransport("smtp");
   transport.connect(HOST, NAME, PASS);
   transport.sendMessage(message, message.getAllRecipients());
}  catch (Exception e) {
   e.printStackTrace();
}

Письмо уходит.
Приходит письмо с вложенным файлом fleshka.swf (скачивается и запускается как флеш).
Но тело письма пустое. При просмотре HTML-кода (MSNM-совский почтовый ящик xxx@hotmail.com) нигде нет даже упоминания об объекте флеш. Аналогичная ситуация с gmail.com.
Видимо, все же дело в том, что вставляется <OBJECT>
...
Рейтинг: 0 / 0
JavaMail - нет отправки/получения письма
    #34227778
Fili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый IDVsbruck. Насколько мне известно, редкий почтовый клиент может позволить играть флеш в теле письма (inline flash). Можете проверить что реально отправляется на сервер (очень сомнительно, что JavaMail отправляет пустое тело сообщения), вероятней всего виноваты gmail и MSNM, тем более если вы пользутесь их веб-клиентами.
Советую почитать вот эту статью http://www.campaignmonitor.com/blog/archives/2006/01/the_truth_about_1.html
...
Рейтинг: 0 / 0
JavaMail - нет отправки/получения письма
    #34228220
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Это оно.
О чем-то таком я предполагал, но исключительно интуитивно.
И заодно искал упоминания о флеше в письмах, перерыл достаточно много, но не нашел.
Огромное спасибо за статью. Значит, будем делать с публикацией во вложении ... :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaMail - нет отправки/получения письма
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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