2016-10-25 7 views
1

Я отправляю электронную почту через smtp, но получен только файл или вложение, а не тело письма и темы. Может ли кто-нибудь рассказать мне, где лежит проблема?Электронная почта, полученная без тела и с указанием адреса электронной почты

общественного класса SendMail расширяет AppCompatActivity {

EditText edt_subject,edt_body,edt_choosenFile; 
private Button sendEmail; 
private Button chooseFileButton; 
private String filename; 
String uniqueId,subject,mailbody; 
private static final int REQUEST_CHOOSER = 1234; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_send_mail); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    edt_subject=(EditText)findViewById(R.id.et_Subject); 
    edt_body=(EditText)findViewById(R.id.et_mail_body); 
    subject=edt_subject.getText().toString(); 
    mailbody=edt_body.getText().toString(); 

    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 Authenticator() { 
            protected PasswordAuthentication getPasswordAuthentication() { 
             return new PasswordAuthentication(
               "[email protected]","password"); 
            } 
           }); 
         // TODO Auto-generated method stub 
         MimeMessage message = new MimeMessage(session); 
         message.setFrom(new InternetAddress("[email protected]")); 
         message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]")); 
         message.setSubject(subject); 
        message.setText(mailbody); 

         if (filename!=null) { 

          BodyPart messageBodyPart = new MimeBodyPart(); 
          messageBodyPart.setText(mailbody); 
          Multipart _multipart = new MimeMultipart(); 
          FileDataSource 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); 
     } 
    }); 
} 

ответ

0

Основная часть тела должна быть первой первой части тела многоголосных. Ваш вызов message.setText будет перезаписан вашим вызовом message.setContent. В JavaMail sample programs есть много примеров.