2016-06-21 7 views
0

私は、Java GUIを使用してマルチファイル添付ファイルを使用してメールを送信する方法を作成しました。メソッドがメールを送信すると、Microsoft Officeやpdfのような添付ファイルタイプがBitSarverとして受信メールに送信されます。他の自動システムでも添付ファイルを読み込んで印刷できるように、ファイルをタイプして送信する必要があります。JavaMailがBitSarverファイルを送信しましたが、PDFファイルではありません

これが方法です。

static public boolean sendMail(String to,String subject,String text_filed) 
{ 
    Properties props = new Properties(); 
    props.put("mail.smtp.host","smtp.gmail.com"); 
    props.put("mail.smtp.socketFactory.port ","465"); 
    props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.auth","true"); 
    props.put("mail.smtp.port","465"); 
    Session session = Session.getDefaultInstance(props, 
      new javax.mail.Authenticator(){ 
       protected PasswordAuthentication getPasswordAuthentication() 
       { 
        return new PasswordAuthentication("eamil", pass); 
       } 
      } 
    ); 
    try 
    { 
     Message m = new MimeMessage(session); 
     m.setFrom(new InternetAddress(userMAil)); 

     System.out.println("from "+userMAil); 

     m.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); 

     System.out.println("to "+to); 

     m.setSubject(subject); 

     System.out.println("the subject "+subject); 

     MimeBodyPart bodypart = new MimeBodyPart(); 
     bodypart.setText(text_filed); 
     Multipart multipart = new MimeMultipart(); 
     multipart.addBodyPart(bodypart); 

     System.out.println("the content "+text_filed); 
     for(int i = 0;i< main_controller.attachments_path.size();i++) 
     { 
      bodypart = new MimeBodyPart(); 
      DataSource source = new FileDataSource(main_controller.attachments_path.get(i)); 
      System.out.println("the file location"+main_controller.attachments_path.get(i)); 
      bodypart.setDataHandler(new DataHandler(source)); 
      //bodypart.setFileName(main_controller.filesFrame.getFilename()); 

      System.out.println("the file name"+main_controller.filesFrame.getFilename()); 
      multipart.addBodyPart(bodypart); 
     } 


     m.setContent(multipart); 
     //m.setText(text_filed); 

     Transport.send(m); 

     JOptionPane.showMessageDialog(null, "done!"); 
     return true; 
    } 
    catch(Exception e) 
    { 
     String m = e.getMessage(); 
     JOptionPane.showMessageDialog(null, e); 
     System.out.println(m); 
     return false; 
    } 
} 

はあなたが私を助けることができると思います。問題はこれに関連している可能性が似D

答えて

0

は思え:

How to set MimeBodyPart ContentType to "text/html"?

得るために提出する前に)(MimeMessage.saveChangesを呼び出すようにしてくださいコンテンツタイプはDataHandlerから正しく設定されます。

+0

私は試しましたが、私はまだ同じ結果を得ます。 'm.saveChanges(); m.setContent(multipart); Transport.send(m); ' –

0

JavaBeans Activation Framework(JAF)を介してJavaMailは、ファイル名拡張子に基づいてMIMEタイプを選択します。 「既知の」ファイル名拡張子のリストは比較的小さい。 javadocsのMimetypesFileTypeMapに記載されているように追加することができます。または、MimeBodyPart.attachFileメソッドを使用してMIMEタイプを直接指定することもできます。

ああ、あなたはこれらを整理したいと思うでしょうcommon JavaMail mistakes

+0

私は電子メールにファイルを添付するという意味を理解していません より具体的にすることができます。 –

+0

私が提供したすべてのリンクを読みましたか?どの部分があなたを混乱させましたか? –

関連する問題