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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужно в линуксе послать html письмо с картинками. 
:(
    Опции темы
x4444
Дата 6.9.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нужно в линуксе послать html письмо с картинками.

требование - использовать mail или sendmail
на машине есть java, perl

как это сделать?
как сказать mail что контент идет в html?


сейчас делаю так
(cat test.html; uuencode PIC.gif PIC.gif) |mail [email protected]

получаю просто html скрипт и приатаченную картинку

Это сообщение отредактировал(а) x4444 - 6.9.2007, 15:24
PM MAIL   Вверх
IDVsbruck
Дата 6.9.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Например, вот усложненный пример отправки динамически создаваемой картинки (график, таблицы и т.д.):

На странице отрабатывается нажатие определенной кнопки "отправить письмо", через AJAX идет вызов определенного метода в служебном сервлете.
Вот реализация метода и его части, где идет непосредственная отсылка письма:
Код

    String textBody = "(This letter was generated automatically)<br><br>";
    textBody += "<br><img src=\"cid:our_pic.jpg\" width=800 height=200><br>";

    try {
        MimeMultipart multipart = new MimeMultipart();
        MimeBodyPart messageBodyPart1 = new MimeBodyPart();
        messageBodyPart1.setContent(textBody, "text/html; charset=utf8");
        messageBodyPart1.setContentID("LetterBody");
        messageBodyPart1.setDisposition(Part.INLINE);

        JPEGcreator _jpeg = new JPEGcreator(установочные данные); // JPEGcreator - созданный класс, в котором рисуется наша картинка
        MimeBodyPart imagePart1 = new MimeBodyPart();
        imagePart1.setDataHandler(new DataHandler(new ByteArrayDataSource(_jpeg.getPicture(), "image/jpeg; name=\"our_pic.jpg\""))); 
            // getPicture - метод в JPEGcreator, в котором непосредственно рисуется картинка, метод заканчивается следующими строками (buffer - переменная типа BufferedImage - фактически, канвас для рисования)
            // ByteArrayOutputStream dest = new ByteArrayOutputStream();
            // JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(dest);
            // JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(buffer);
            // param.setQuality(0.75f, false);
            // encoder.setJPEGEncodeParam(param);
            // encoder.encode(buffer);
            // dest.close();
            // return dest.toByteArray();

        imagePart1.setDisposition(Part.INLINE);
        imagePart1.setContentID("our_pic.jpg");

        multipart.addBodyPart(messageBodyPart1);
        multipart.addBodyPart(imagePart1);

        Properties props = System.getProperties();
        props.put("mail.smtp.auth", "true"); 
        Session session = Session.getInstance(props, null);
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(<sender e-mail>, "kak-to-tam"));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(<recipient e-mail>, false));
        message.setSubject(<subject>);
        message.setContent(multipart);
        message.setSentDate(new Date()); 
        Transport transport = session.getTransport("smtp");
        transport.connect(_properties.getString("mail.smtp.host"), _properties.getString("mail.smtp.user"), _properties.getString("mail.smtp.password"));
        message.saveChanges();
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
        result = "true";
    } catch(Exception e) {
        e.printStackTrace();
        result = "Message sending failed";
    }


В зависимости от результата выдаете данные на страничке ...
Платформа, на которой крутится сайт, не имеет значение ...

Единственно, что крайне неприятно - это почтовик, которым принимается письмо. Если "людскими", типа MS Outlook или Bat!, то отображается абсолютно нормально, но если прием осуществляется Outlook Express, то последний устроен так, что он показывает и само письмо и прилагаемые картинки в одном контексте, то есть мы видим на экране его 2 раза, причем он показывает линейно: то есть, если сделать сначала аттач, а потом боди письма, то он покажет сначала картинки друг за дружкой, а потом само письмо, так как мы его хотели передать. Это не специфика отсылаемого письма, а самого почтовика. Поэтому советую сначала сделать тело письма, а в конце сделать аттач (как это реализовано у меня) - так создается впечатление, что письмо нормально показывается.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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