2013-03-22 2 views
3

В моем приложении для Android мне нужно отправить письмо с изображением в качестве вложения. Я закончил с отправкой mail.but, как отправить почту с изображением в виде вложения в mail.Here я отправляю код для отправки почты. Пожалуйста, помогите мне отправить изображение в виде вложения в следующий код.Как отправить почту с изображением в виде вложения в android?

Вот код-

public class MailImageFile extends javax.mail.Authenticator { 

     public MailImageFile(){} 

public void Mail(String user, String pass) { 
    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("[email protected]", "pqr123%"); 
     } 
     }); 
    try { 
     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO,  InternetAddress.parse("[email protected]")); 
     message.setSubject("Testing Subject"); 
     message.setContent("Hi...", "text/html; charset=utf-8"); 

     Transport.send(message); 

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

} 

}

ответ

0
public class MailImageFile extends javax.mail.Authenticator { 

      public MailImageFile(){} 

    public void Mail(String user, String pass) { 
     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("[email protected]", "pqr123%"); 
      } 
      }); 
     try { 
      Message message = new MimeMessage(session); 
      message.setFrom(new InternetAddress("[email protected]")); 
      message.setRecipients(Message.RecipientType.TO,  InternetAddress.parse("[email protected]")); 
    message.setContent(_multipart); 
      message.setSubject("Testing Subject"); 
      message.setContent("Hi...", "text/html; charset=utf-8"); 

      Transport.send(message); 

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

// Got this solution form here

private Multipart _multipart; 
_multipart = new MimeMultipart(); 

public void addAttachment(String filename,String subject) throws Exception { 
    BodyPart messageBodyPart = new MimeBodyPart(); 
    DataSource source = new FileDataSource(filename); 
    messageBodyPart.setDataHandler(new DataHandler(source)); 
    messageBodyPart.setFileName(filename); 
    _multipart.addBodyPart(messageBodyPart); 

    BodyPart messageBodyPart2 = new MimeBodyPart(); 
    messageBodyPart2.setText(subject); 

    _multipart.addBodyPart(messageBodyPart2); 
} 


    } 
+0

его крепление изображения на почту .. когда я увидел почту в почте я не могу просмотреть это изображение ... – Piya

+0

Вы можете скачать изображение? –

+1

да ... теперь его работа .. добавила это в кодовое сообщениеBodyPart.setDisposition (MimeBodyPart.ATTACHMENT); – Piya

0

Попробуйте этот код:

Intent myEmailIntent = new Intent(android.content.Intent.ACTION_SEND); 
     myEmailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Email Subject"); 
     myEmailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[]{"[email protected]"}); 

     myEmailIntent.putExtra(android.content.Intent.EXTRA_TEXT,"your email message"); 
     //message type 
     myEmailIntent.setType("text/plain"); 
     File myAttachmentfile = getFileStreamPath("path of the file that you want to attach Eg: image"); 
     myEmailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
     //attachment type 
     myEmailIntent.setType("image/jpeg"); 
     myEmailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+myAttachmentfile.getAbsolutePath())); 
     startActivityForResult(Intent.createChooser(myEmailIntent, "SENDER NAME"),101); 

// Это как прикрепить изображение или любой другой файл по электронной почте

emailIntent.putExtra(Intent.EXTRA_STREAM, "your file path"); 

Сообщите мне, если это сработает для вас.

+0

Мне нужно отправить почту с помощью SMTP не таким образом .. – Piya

0
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 

emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, emailaddress); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message); 
emailIntent.setType("image/png"); 

ArrayList<Uri> uris = new ArrayList<Uri>(); 

uris.add(Uri.parse("android.resource://" + getPackageName() + "/" + R.drawable.file1)); 
uris.add(Uri.parse("android.resource://" + getPackageName() + "/" + R.drawable.file2)); 

emailIntent.putExtra(Intent.EXTRA_STREAM, uris)); 

startActivity(emailIntent); 
0

Это, несомненно, поможет вам прикрепить изображение без использования намерения.

Multipart multipart = new MimeMultipart(); 

MimeBodyPart attachPart = new MimeBodyPart(); 
String attachFile = "/storage/emulated/0/pic.jpg";//picture location 

DataSource source = new FileDataSource(attachFile); 
attachPart.setDataHandler(new DataHandler(source)); 
attachPart.setFileName(new File(attachFile).getName()); 

//Trick is to add the content-id header here 
attachPart.setHeader("Content-ID", "image_id"); 
multipart.addBodyPart(attachPart); 

//third part for displaying image in the email body 
attachPart = new MimeBodyPart(); 
attachPart.setContent("<h1>Attached Image</h1>" + 
     "<img src='cid:image_id'>", "text/html"); 
multipart.addBodyPart(attachPart); 
//Set the multipart message to the email message 
message.setContent(multipart); 

Transport.send(message); 
System.out.println("Done"); 
Смежные вопросы