Как да изпратите имейл с изображение като прикачен файл в android?

В моето приложение за 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);
    }

}

}


person Piya    schedule 22.03.2013    source източник


Отговори (3)


 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);
        }

//Разбрах това формуляр за решение тук

    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); 
} 


    }
person Amitabh Sarkar    schedule 22.03.2013
comment
прикрепя изображението към пощата ..но когато видях пощата в пощата, не мога да видя това изображение... - person Piya; 22.03.2013
comment
Можете ли да изтеглите изображението? - person Amitabh Sarkar; 22.03.2013
comment
да... сега работи... добави това към кода messageBodyPart.setDisposition(MimeBodyPart.ATTACHMENT); - person Piya; 22.03.2013
comment
може ли някой да ми помогне, моля, следя този урок jondev.net/articles/ в android 4.2, но не успях да изпратя имейл, просто искам да изпратя имейл с прикачен файл и без прикачен файл - person Erum; 24.01.2014

Опитайте този код:

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");

Кажете ми дали е проработило при вас.

person Amitabh Sarkar    schedule 22.03.2013

Това със сигурност ще ви помогне да прикачите вашето изображение, без да използвате намерение.

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");
person vaibhav    schedule 26.11.2016