2015-06-08 3 views
0

Я не могу отправить сообщение после добавления файла документа.невозможно отправить как текстовое сообщение, так и вложенный файл

После добавления msg.setFileName() в код msg.setText() не работает.

Сообщение успешно доставляется с прикрепленным файлом, но текст не является телом. не может отправлять как текстовое сообщение, так и вложенный файл.

ниже мой код файл-

public static void sendTo(String seniorId,String seniorName){ 

     final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 
     // Get a Properties object 
     Properties props = System.getProperties(); 
     props.setProperty("mail.smtp.host", "smtp.gmail.com"); 
     props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); 
     props.setProperty("mail.smtp.socketFactory.fallback", "false"); 
     props.setProperty("mail.smtp.port", "465"); 
     props.setProperty("mail.smtp.socketFactory.port", "465"); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.debug", "true"); 
     props.put("mail.store.protocol", "pop3"); 
     props.put("mail.transport.protocol", "smtp"); 
     final String username = "[email protected]";// 
     final String password = "xxxxxxxxxxxxxxxx"; 
     try{ 
     Session session = Session.getDefaultInstance(props, 
           new Authenticator(){ 
           protected PasswordAuthentication getPasswordAuthentication() { 
            return new PasswordAuthentication(username, password); 
           }}); 

     // -- Create a new message -- 
     Message msg = new MimeMessage(session); 

     // -- Set the FROM and TO fields -- 
     msg.setFrom(new InternetAddress("[email protected]")); 
     msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(seniorId,false)); 
     msg.setSubject("Suject"); 
     msg.setText("Hi "+seniorName+"Sir"+"\n\nI am in India\nplease find my attached FILE.\n\nthanks\n\ndubey-theHarcourtian"); 

     String filename = "C:\\Users\\arpit.dubey\\Desktop\\sysofnI\\Myfile.docx"; 
     DataSource source = new FileDataSource(filename); 

     msg.setDataHandler(new DataHandler(source)); 
     msg.setFileName("MyFile"); 
     msg.setSentDate(new Date()); 
     Transport.send(msg); 
     System.out.println("Message sent."); 
     }catch (MessagingException e){ System.out.println("Erreur d'envoi, cause: " + e);} 

    } 
+0

Вы можете попробовать использовать Частитела как упомянуто в http://stackoverflow.com/q/3177616/2231632? Если это так, пожалуйста, отметьте этот вопрос как дубликат этого. – prabugp

ответ

0

Вам нужно добавить файл к части тела и добавить его в MULTIPART. Мы не должны добавлять его в заголовок сообщения напрямую.

  Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(from)); 
     message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to)); 
     message.setSubject("Testing Subject"); 
     BodyPart messageBodyPart = new MimeBodyPart(); 
     messageBodyPart.setText("This is message body"); 
     Multipart multipart = new MimeMultipart(); 
     multipart.addBodyPart(messageBodyPart); 
     messageBodyPart = new MimeBodyPart(); 
     String filename = "/Mydocuments/kali/file.txt"; 
     DataSource source = new FileDataSource(filename); 
     messageBodyPart.setDataHandler(new DataHandler(source)); 
     messageBodyPart.setFileName(filename); 
     multipart.addBodyPart(messageBodyPart); 
     message.setContent(multipart); 
     Transport.send(message); 

     System.out.println("Sent message successfully...."); 
+0

Спасибо, Дуби! – Kaliappan

+0

Кроме того, вы захотите исправить все эти [распространенные ошибки] (http://www.oracle.com/technetwork/java/javamail/faq/index.html#commonmistakes). –

+0

Спасибо @BillShannon. Это было действительно полезно. – Kaliappan

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