2015-05-07 5 views
0

У меня есть фрагмент кода, где я отправляю электронное письмо с прикрепленным файлом excel. Все работает нормально, где я вижу заголовок и даже прикрепление файла. Единственное, что не отображается, это содержимое электронной почты. Я проверил, что моя переменная emailContent не пуста. Что еще я могу сделать, чтобы оно появилось? Я даже включил эту строку кодов messageBodyPart.setText (emailContent); но то же самое. Но если включена эта часть multipart1.addBodyPart (emailContent); Я получаю ошибкуСодержимое электронной почты Java пусто

error: no suitable method found for addBodyPart(String) 
           multipart1.addBodyPart(emailContent); 

try 
{ 

    Message emailMessage = new MimeMessage(mailSession);    
    emailMessage.setFrom(new InternetAddress(origin1)); 
    emailMessage.addRecipient(Message.RecipientType.TO,new InternetAddress(receiptnt1)); 
    emailMessage.addRecipient(Message.RecipientType.TO,new InternetAddress(receiptnt2)); 
    emailMessage.setRecipients(Message.RecipientType.CC,InternetAddress.parse(cc1)); 
    emailMessage.setSubject(emailTitle); 
    emailMessage.setText(emailContent); 

    BodyPart messageBodyPart = new MimeBodyPart(); 

    // Fill the message 
    //messageBodyPart.setText(emailContent);*/ 

    Multipart multipart1 = new MimeMultipart(); 
    // Part two is attachment 
    messageBodyPart = new MimeBodyPart(); 
    DataSource source = new FileDataSource(filename); 
    messageBodyPart.setDataHandler(new DataHandler(source)); 
    messageBodyPart.setFileName(filename); 
    multipart1.addBodyPart(messageBodyPart); 

    // Put parts in message 
    emailMessage.setContent(multipart1); 
    //System.out.println("\n\nSend email :"+eMArray[0]); 

    transport.sendMessage(emailMessage, emailMessage.getAllRecipients()); 


} 
catch (Exception e) 
{ 
System.out.println("Transport Problem"); 
e.printStackTrace(); 
} 

ответ

2

Вы настроите

BodyPart messageBodyPart = new MimeBodyPart(); 

два раза. А перед второй инициализацией вы добавляете содержимое тела. Так удалить строку

messageBodyPart = new MimeBodyPary(); 

линии, и он будет работать нормально.

Используйте следующий код.

Message emailMessage = new MimeMessage(mailSession); 
     emailMessage.setFrom(new InternetAddress(origin1)); 
     emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(receiptnt1)); 
     emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(receiptnt2)); 
     emailMessage.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc1)); 
     emailMessage.setSubject(emailTitle); 
//   emailMessage.setText(emailContent); 

     Multipart multipart1 = new MimeMultipart(); 
     BodyPart messageBodyPart = new MimeBodyPart(); 
     // Fill the message 
     messageBodyPart.setText(emailContent); 
     // Part two is attachment 
     BodyPart attachment = new MimeBodyPart(); 
     DataSource source = new FileDataSource(filename); 
     attachment.setDataHandler(new DataHandler(source)); 
     attachment.setFileName(filename); 
     multipart1.addBodyPart(attachment); 
     multipart1.addBodyPart(messageBodyPart); 
     // Put parts in message 
     emailMessage.setContent(multipart1); 
     //System.out.println("\n\nSend email :"+eMArray[0]); 
     transport.sendMessage(emailMessage, emailMessage.getAllRecipients()); 
+0

ОК У меня есть вторая строка, но у меня есть эта ошибка здесь multipart1.addBodyPart (emailContent); как "ошибка: не найдено подходящего метода для addBodyPart (String) multipart1.addBodyPart (emailContent);" – user4126382

+0

ОК .. я отредактировал ответ. попробуйте этот код. – ELITE

+0

Итак, это «emailMessage.setText (emailContent)»; ничего не делает правильно? Я удалил его. Я хотел бы еще раз понять, почему у нас есть 2 части тела, потому что файл является поддержкой, чтобы быть частью много прав? Я немного потерялся здесь. – user4126382

Смежные вопросы