не може да изпрати както текстово съобщение, така и прикачен файл

Не мога да изпратя съобщение след добавяне на файл с документ.

След добавяне на 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);}

  }

person Community    schedule 08.06.2015    source източник
comment
Можете ли да опитате да използвате BodyParts, както е споменато на stackoverflow.com/q/3177616/2231632? Ако е така, моля, маркирайте този въпрос като дубликат на това.   -  person Praba    schedule 08.06.2015


Отговори (1)


Трябва да добавите файла към основната част и да го добавите към 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....");
person Kaliappan    schedule 08.06.2015
comment
Освен това ще искате да поправите всички тези често срещани грешки. - person Bill Shannon; 08.06.2015
comment
Благодаря @BillShannon. Беше наистина полезно. - person Kaliappan; 09.06.2015