2016-08-31 49 views
1

添付ファイルが2つあるJavamailを使用してメールを送信します。そのうちの1つはjsonファイルで、もう1つはtxtファイル(logcat.txt)です。 logcat.txtのサイズは約1MBです。 addAttachment(multipart,reportPath,"logcat.txt");が自分のコードに含まれていると電子メールを送信しません。私がaddAttachment(multipart,reportPath,"logcat.txt");を取り除くと、それは機能します。 jsonファイルのサイズが大きくなると、約500kbの1点でも送信されません。
マイコード:Javamailは添付ファイルが大きいメールを送信しません

public synchronized void sendReport(String subject, String body, String filepath, String filename, String reportPath, String sender, String recipients){ 
    try { 
     Multipart multipart = new MimeMultipart("mixed"); //try adding "mixed" here as well but it doesn't work 
     MimeMessage message = new MimeMessage(session); 
     message.setSender(new InternetAddress(sender)); 
     message.setSubject(subject); 

     //body 
     BodyPart messageBodyPart2 = new MimeBodyPart(); 
     messageBodyPart2.setText(body); 

     Log.d(TAG, "sendReport: " + reportPath); 
     //this prints sendReport: /storage/emulated/0/Android/data/**app package name**/files/LOG-1472631395.json 
     Log.d(TAG, "sendReport: " + filepath); 
     //sendReport: /storage/emulated/0/Android/data/**app package name**/files/logcat.txt 
     addAttachment(multipart,filepath,filename); 
     addAttachment(multipart,reportPath,"logcat.txt"); 
     multipart.addBodyPart(messageBodyPart2); 

     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 (Exception e) { 
     e.printStackTrace(); 
    } 
} 

private static void addAttachment(Multipart multipart, String filepath, String filename) throws MessagingException 
{ 
    DataSource source = new FileDataSource(filepath); 
    BodyPart messageBodyPart = new MimeBodyPart(); 
    messageBodyPart.setDataHandler(new DataHandler(source)); 
    messageBodyPart.setFileName(filename); 
    multipart.addBodyPart(messageBodyPart); 
} 

私も添付ファイルを送信するために別の方法を使用しますが、それは動作しません。次のいずれか

private static void addAttachment(Multipart multipart, String filepath, String filename) throws Exception 
    { 
     MimeBodyPart mimeBodyPart = new MimeBodyPart(); 
     mimeBodyPart.attachFile(filepath); 
     mimeBodyPart.setFileName(filename); 
     multipart.addBodyPart(mimeBodyPart); 
    } 

誰もがこの問題を解決する方法のアイデアを持っていますか?前もって感謝します。

+0

ログにエラーが表示されますか? –

+0

@ J.Chomel no、そうではありません。 –

答えて

0

お客様の個人メールサーバーを使用して電子メールを送信しましたが、(公開メールサーバーであるため)表示されるエラーは表示されません。私は、Googleのメールサーバーを使用しており、これが私の電子メールアカウントにGmailのサーバーからの応答である:

永久故障の技術的な詳細:Googleが メッセージを配信しようとしましたが、それは、受信者のために、サーバーによって拒否されましたドメイン mailinator.com by mail2.mailinator.com。 [45.79.147.26]。

他のサーバが返されたというエラーでした:552 5.3.4メッセージサイズ は、それが表示されないように、ドメインmailinator.comは、いくつかのメッセージサイズの制限がありますので、だから、これは

一定の制限を超えています。私はGmailの電子メールアカウントに物事を送信し、それは動作します。

1
//In this list set the path from the different files you want to attach 
    String[] attachments; 

    Multipart multipart = new MimeMultipart(); 

    //Add attachments 
    if(attachments != null && attachments.length > 0) { 
     for (String str : attachments) { 
      MimeBodyPart messageBodyPart = new MimeBodyPart(); 
      DataSource source = new FileDataSource(str); 
      messageBodyPart.setDataHandler(new DataHandler(source)); 
      messageBodyPart.setFileName(source.getName()); 
      multipart.addBodyPart(messageBodyPart); 
     } 
    } 

    message.setContent(multipart); 

巨大なファイルのアップロードに問題はありません。このコードを試すことができます。

関連する問題