2016-08-31 1 views
1

2 개의 첨부 파일이있는 Javamail을 사용하여 전자 메일을 보내려고합니다. 그 중 하나는 json 파일이고 다른 하나는 txt 파일 (logcat.txt)입니다. logcat.txt의 크기는 약 1MB입니다. 내 코드에 addAttachment(multipart,reportPath,"logcat.txt");이 있으면 이메일을 보내지 않습니다. addAttachment(multipart,reportPath,"logcat.txt");을 제거하면 제대로 작동합니다. json 파일의 크기가 커지면 한 지점에서 약 500kb까지 전송되지 않습니다.
내 코드 :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 아니오, 그렇지 않습니다. –

답변

0

내 고객의 개인 메일 서버를 사용하여 전자 메일을 보내고 공용 메일 서버이기 때문에 내가 볼 수있는 오류가 표시되지 않습니다. 그럼 구글의 메일 서버를 사용하고,이 내 이메일 계정에 Gmail 서버에서 응답입니다 : 영구 오류의

기술 세부 사항 : Google은 귀하의 메시지를 전달하려했지만 그것은받는 사람의 서버에 의해 거부되었습니다 도메인 mailinator.com 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); 

거대한 파일을 업로드하는 데 문제가 없습니다.이 코드를 사용해보십시오.

관련 문제