Я сталкивался с тем же, когда использовал apache camel на предохранителе jboss. Мне пришлось изменить мой pom.xml ... см. Фрагменты ниже:

ользую следующий код для отправки mail.Text сообщение работает нормально, но Mail с вложением не работает, это дает исключение. Как решить эту проблему

javax.mail.MessagingException: IOException при отправке сообщения; Вложенное исключение: javax.activation.UnsupportedDataTypeException: нет объекта DCH для типа MIME multipart / mixed; border = "---- = _ Part_0_10430987.1294298904906" на com.sun.mail.smtp.SMTPTransport.sendMessage (SMTPTransport.java:676) на javax.mail.Transport.send0 (Transport.java:189) на javax.mail .Transport.send (Transport.java:118) в Gmailer.GMailSender.sendMailAttach (GMailSender.java:114) в SendMail.main (SendMail.java:22) Причина: javax.activation.UnsupportedDataTypeException: нет объекта DCH для типа MIME многочастному / смешанный; border = "---- = _ Part_0_10430987.1294298904906" в javax.activation.ObjectDataContentHandler.writeTo (неизвестный источник) в javax.activation.DataHandler.writeTo (неизвестный источник) в javax.mail.internet.MimeBodyPart.writeTo ( : 1403) на javax.mail.internet.MimeMessage.writeTo (MimeMessage.java:1745) на com.sun.mail.smtp.SMTPTransport.sendMessage (SMTPTransport.java:636) ... еще 4

Почта с кодом вложения:

public synchronized void sendMailAttach(String subject, String body,
    String sender, String recipients)  {
try {
    MimeMessage message = new MimeMessage(session);

    message.setSender(new InternetAddress(sender));
    message.setSubject(subject);

    // Create the message part 
    BodyPart messageBodyPart = new MimeBodyPart();

    // Fill the message
    messageBodyPart.setText("hi Demo");

    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messageBodyPart);

    // Part two is attachment
    messageBodyPart = new MimeBodyPart();
    String filename = "mail.txt";
    DataSource source = new FileDataSource(filename);
    messageBodyPart.setDataHandler(new DataHandler(source));
    messageBodyPart.setFileName(filename);
    multipart.addBodyPart(messageBodyPart);

    // Put parts in message
    message.setContent(multipart);

    if (recipients.indexOf(',') > 0)
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(recipients));
    else
        message.setRecipient(Message.RecipientType.TO,
                new InternetAddress(recipients));
    Transport.send(message);

}
catch (MessagingException e) {
    System.out.println("MessagingException" + e.getMessage());
}
catch (Exception e) {
    System.out.println("Mail Send Exception " + e.getMessage());
}
 }

Текстовое письмо отправьте код:

public synchronized void sendMail(String subject, String body,
    String sender, String recipients) throws Exception {
try {
    MimeMessage message = new MimeMessage(session);
    DataHandler handler = new DataHandler(new ByteArrayDataSource(
            body.getBytes(), "text/plain"));
    message.setSender(new InternetAddress(sender));
    message.setSubject(subject);
    message.setDataHandler(handler);
    if (recipients.indexOf(',') > 0)
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(recipients));
    else
        message.setRecipient(Message.RecipientType.TO,
                new InternetAddress(recipients));
    Transport.send(message);
} catch (Exception e) {

}
}
 dkarp16 янв. 2011 г., 12:43
 Kartoch06 янв. 2011 г., 08:53
Трассировка стека неполная, пожалуйста, дайте полную.

Ответы на вопрос(8)

static {
     // add handlers for main MIME types
    MailcapCommandMap mcap = new MailcapCommandMap();
    mcap.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
    mcap.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
    mcap.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
    mcap.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed; x-java-fallback-entry=true");
    mcap.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
    CommandMap.setDefaultCommandMap(mcap);
}
 Korcholis06 февр. 2013 г., 18:38
Не могли бы вы объяснить код?

Установите это значение:

message.setContent(body, "text/html; charset=UTF-8");    
messageBodyPart.setContent(body, "text/html; charset=UTF-8");

Также проверьте путь к файлу, или, пожалуйста, напишите полный путь в вашем журнале

ерсии активации.jar). Смотри напримерhttp://forum.springsource.org/archive/index.php/t-69180.html

или Google еще

Решение Вопроса

вы можете сделать свой код немного более лаконичным, используяMimeBodyPart.attachFile() вместо того, чтобы споритьDataSource/DataHandler закодируй себя

Во-вторых, попробуйте установитьContent-Type а такжеContent-Disposition Заголовки на вашей части приложения с соответствующими значениями. (attachFile по умолчанию установит для вас Content-Disposition.) Например,

messageBodyPart = new MimeBodyPart();
messageBodyPart.attachFile(new File("mail.txt"));
messageBodyPart.setHeader("Content-Type", "text/plain; charset=\"us-ascii\"; name=\"mail.txt\"");


РЕДАКТИРОВАТЬ:

Подумав немного, это должно быть что-то не так с загрузкой классов. пожалуйста, проверьтеэтот другой так поток чтобы увидеть, исправит ли это вашу ситуацию. (Общая проблема: Вероятно, в вашем пути к классам может быть дополнительный файл Activation.jar; некоторые другие возможности также вызвали его.)

 Karthick Ramu08 янв. 2011 г., 07:26
Я пытаюсь это тоже. Но это не работает для меня

поместите этот код, а затем проверьте, что действительно работает. Фрист, импортируй этот пакет

import javax.activation.CommandMap;
import javax.activation.MailcapCommandMap;

MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
        mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
        mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
        mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
        mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
        mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
        CommandMap.setDefaultCommandMap(mc);

http://forum.spring.io/forum/osgi-related/dm-server-general/61205-problems-sending-mime-multipart-mails

Он объясняет вероятную причину проблемы и в целом советует по ее устранению.

Я сталкивался с тем же, когда использовал apache camel на предохранителе jboss. Мне пришлось изменить мой pom.xml ... см. Фрагменты ниже:

    <!-- add a depency on javax.mail, in addition to the dependency on camel-mail -->

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-mail</artifactId>
        <version>2.10.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.5.1</version>
    </dependency>

    <!-- explicitly import the com.sun.mail.handlers package under the Import-Package section of the pom.xml -->

    <Import-Package>com.sun.mail.handlers, *</Import-Package>

mail.txt.
Например, если это вC: затем идти вперед и включить весь путь, как

 String filename = ("c:\\users\\mail.txt"); 

и обратите внимание, что иногда у вас могут возникнуть проблемы с("c:\users\mail.txt") который имеет одинарные обратные косые черты, чтобы быть в безопасности, просто сделайте их двойные обратные косые черты

Также всегда убедитесь, что вы используете.printStackTrace() метод, поскольку он поможет вам определить, где именно возникнет ваша проблема, поэтому, когда вы будете искать эту проблему, вы будете в состоянии точно знать, что вы будете искать.

что ваша программа не может найти файл mail.txt. Пожалуйста, дайте правильный / полный путь. Трассировка стека исключений может дать больше идей. Если возможно, ответьте с этим. e.printStacktrace ();

 Karthick Ramu07 янв. 2011 г., 05:43
Я могу прочитать файл. Но я не могу его отправить

Ваш ответ на вопрос