2014-10-31 2 views
1

다른 메일 앱없이 이메일을 보낼 수 있도록 다른 jar 라이브러리가있는 간단한 코드가 있습니다.외부 앱을 사용하지 않고 첨부 파일이있는 이메일을 직접 보내는 방법

public class claimrewardemail extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.successful); 

    final String username = "[email protected]"; 
    final String password = "mypassword"; 



    new Thread(new Runnable() { 

     @Override 
     public void run() { 
      try { 
       Properties props = new Properties(); 
       props.put("mail.smtp.auth", "true"); 
       props.put("mail.smtp.starttls.enable", "true"); 
       props.put("mail.smtp.host", "smtp.gmail.com"); 
       props.put("mail.smtp.port", "587"); 

       Session session = Session.getInstance(props, 
         new javax.mail.Authenticator() { 
          protected javax.mail.PasswordAuthentication getPasswordAuthentication() { 
           return new javax.mail.PasswordAuthentication(
             username, password); 
          } 
         }); 
       // TODO Auto-generated method stub 
       Message message = new MimeMessage(session); 
       message.setFrom(new InternetAddress("[email protected]")); 
       message.setRecipients(Message.RecipientType.TO, 
         InternetAddress.parse("[email protected]")); 
       message.setSubject("email"); 
       message.setText("HI," 
         + "\n\n great"); 

       Transport.send(message); 
       System.out.println("Done"); 


      } catch (MessagingException e) { 
       throw new RuntimeException(e); 
      } 
     } 
    }).start(); 

    } 
} 

위의이 코드는 나를 하드 코딩 된 이메일, 제목 및 메시지와 함께 직접 메일을 보낼 수 있도록, 지금은 내가 전화에서 내 파일에 액세스하고 버튼에 추가 할 수 있습니다 첨부 부분을 추가 할 내가 할 수있는 이 메일과 함께 첨부 파일을 보내십시오. 누구든지 나를 도울 수 있습니까?

+0

http://www.javacodegeeks.com/2013/10/send-email-with-attachment-in-android.html –

+0

참조 : http://stackoverflow.com/questions/4149265/sending-an- 첨부 파일이 포함 된 전자 메일 –

+0

@ChiragJain, 이것은 외부로 전송 중이며 이전에 시도했습니다. – Confuser

답변

4

이 시도 :

String filename = "example_filename"; 
    Multipart _multipart = new MimeMultipart(); 
    BodyPart messageBodyPart = new MimeBodyPart(); 
    DataSource source = new FileDataSource(filename); 

    messageBodyPart.setDataHandler(new DataHandler(source)); 
    messageBodyPart.setFileName(filename); 

    _multipart.addBodyPart(messageBodyPart); 
    message.setContent(_multipart); 

편집 : 당신이 aFileChooser 라이브러리를 포함하면

, 당신은 (파일 선택 ""이메일 보내기 "와 활동의 레이아웃에 두 개의 버튼을 생성해야합니다 "), 활동 내역 :

private Button sendEmail; 
private Button chooseFileButton; 
private String filename; 
private static final int REQUEST_CHOOSER = 1234; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    sendEmail = (Button) findViewById(R.id.send_email_button_id); 
    sendEmail.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      new Thread(new Runnable() { 

       @Override 
       public void run() { 
        try { 
        Properties props = new Properties(); 
        props.put("mail.smtp.auth", "true"); 
        props.put("mail.smtp.starttls.enable", "true"); 
        props.put("mail.smtp.host", "smtp.gmail.com"); 
        props.put("mail.smtp.port", "587"); 

        Session session = Session.getInstance(props, 
         new javax.mail.Authenticator() { 
          protected javax.mail.PasswordAuthentication getPasswordAuthentication() { 
           return new javax.mail.PasswordAuthentication(
            username, password); 
         } 
        }); 
        // TODO Auto-generated method stub 
        Message message = new MimeMessage(session); 
        message.setFrom(new InternetAddress("[email protected]")); 
        message.setRecipients(Message.RecipientType.TO, 
         InternetAddress.parse("[email protected]")); 
        message.setSubject("email"); 
        message.setText("HI," 
         + "\n\n great"); 
        if (!"".equals(filename)) { 
         Multipart _multipart = new MimeMultipart(); 
         BodyPart messageBodyPart = new MimeBodyPart(); 
         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("Done"); 
     } catch (MessagingException e) { 
      throw new RuntimeException(e); 
     } 
    } 
}).start(); 
     } 
    }); 

    chooseFileButton = (Button) findViewById(R.id.choose_file_button_id); 
    chooseFileButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // Create the ACTION_GET_CONTENT Intent 
       Intent getContentIntent = FileUtils.createGetContentIntent(); 

       Intent intent = Intent.createChooser(getContentIntent, "Select a file"); 
       startActivityForResult(intent, REQUEST_CHOOSER); 
      } 
    }); 
} 

그런 다음 onActivityResult 메서드를 추가하면 선택한 파일을 가져올 수 있습니다. AME :

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
     case REQUEST_CHOOSER: 
      if (resultCode == RESULT_OK) { 

       final Uri uri = data.getData(); 

       // Get the File path from the Uri 
       filename = FileUtils.getPath(this, uri); 
      } 
      break; 
    } 
} 

당신의 AndroidManifest.xml에 FileChooserActivity을 추가하는 것을 잊지 마십시오 당신은 "보내기"버튼을 클릭하여 이메일을 보낼 수 후

<activity 
    android:name="com.ipaulpro.afilechooser.FileChooserActivity" 
    android:icon="@drawable/ic_launcher" 
    android:enabled="true" 
    android:exported="true" 
    android:label="@string/app_name" > 
    <intent-filter> 
     <action android:name="android.intent.action.GET_CONTENT" /> 

     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.OPENABLE" /> 

     <data android:mimeType="*/*" /> 
    </intent-filter> 
</activity> 

;

+0

안녕하세요 @romadja,이 파일을 어디에 넣어야합니까? 새 버튼을 올바르게 지정해야합니다. – Confuser

+0

예,이 파일 이름은 보내려는 파일의 파일 이름이고, 버튼을 추가해야하며, onclick 리스너 열기 파일 선택기입니다. 방법을 알고 싶으면이 링크를 참조하십시오. 에 파일을 선택하십시오. http://stackoverflow.com/a/7857102/3225458. – rom4ek

+0

내 앱에서 aFileChooser (https://github.com/iPaulPro/aFileChooser)를 포함하고 버튼을 사용하여 onclick 리스너와 연결해야한다는 의미입니다. – Confuser

0

예 코드에 mail.jar 및 activation.jar 파일을 추가 할 수 있습니다. 하나의 버튼을 검색하십시오. 해당 일반 파일이 아닌 일반 버튼을 클릭하면 해당 선택 창이 나타납니다. 디스크를 선택하고 전자 메일을 첨부 파일과 함께 보낼 수 있도록 코드의 경로에 지정하기 만하면됩니다.

+0

예, 이미 mail.jar 및 activation.jar와 함께 작동하지만 첨부 파일은 여기에 있습니다. 어떤 코드를 입력하여 첨부 파일을 만들 수 있는지 잘 모르겠습니다. @@@@@@@@@@@@. – Confuser

+0

첨부 파일이있는 예제가 많이 있습니다. refereed 예제와 알려주세요. – Aniket

+0

그래, 위의 @romadja 솔루션을 참조하십시오. 잘하면 도움이 될 수 있습니다. 문제가 있으면 코드를 확인하는 데 도움을 줄 수 있습니까? – Confuser

관련 문제