Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaMail - нет отправки/получения письма / 10 сообщений из 10, страница 1 из 1
25.12.2006, 13:36:00
    #34222484
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaMail - нет отправки/получения письма
Код:

Код: 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
25.12.2006, 13:47:05
    #34222525
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaMail - нет отправки/получения письма
Попробуй включить отладочную информацию:

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

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

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

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

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

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

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

Но за идею спасибо, сначала попробовал за нее взяться.
...
Рейтинг: 0 / 0
27.12.2006, 00:13:35
    #34226505
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaMail - нет отправки/получения письма
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
27.12.2006, 01:47:59
    #34226545
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaMail - нет отправки/получения письма
Идея замечательная.
Делаю аналогичные действия:

Код: 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
27.12.2006, 13:28:01
    #34227778
Fili
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaMail - нет отправки/получения письма
Уважаемый IDVsbruck. Насколько мне известно, редкий почтовый клиент может позволить играть флеш в теле письма (inline flash). Можете проверить что реально отправляется на сервер (очень сомнительно, что JavaMail отправляет пустое тело сообщения), вероятней всего виноваты gmail и MSNM, тем более если вы пользутесь их веб-клиентами.
Советую почитать вот эту статью http://www.campaignmonitor.com/blog/archives/2006/01/the_truth_about_1.html
...
Рейтинг: 0 / 0
27.12.2006, 15:18:48
    #34228220
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaMail - нет отправки/получения письма
О! Это оно.
О чем-то таком я предполагал, но исключительно интуитивно.
И заодно искал упоминания о флеше в письмах, перерыл достаточно много, но не нашел.
Огромное спасибо за статью. Значит, будем делать с публикацией во вложении ... :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaMail - нет отправки/получения письма / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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