мне нужно добавить изображение без намерения по электронной почте - PullRequest
0 голосов
/ 16 апреля 2020

при нажатии есть кнопка отправки, содержимое которой неявно отправляется на почту, получатель электронной почты будет введен пользователем. Я добавил адрес, тему, содержание, но изображение должно быть загружено с первого действия, а не из внутреннего хранилища p c. используя mimebodypart и источник данных файла, я не могу добавить imageuri в источник данных файла, я должен импортировать изображение, снятое в MAINACTIVITY, и отправить его по электронной почте без намерения

MAINACTIVITY. JAVA:

    String email=et_email.getText().toString();
    String subject=et_subject.getText().toString();
    SendMail sm = new SendMail(this, email, subject, message,imageUri);
    sm.execute();

ОТПРАВКА. JAVA:

public class SendMail extends AsyncTask<Void,Void,Void>
         {
         //Declaring Variables
            private Context context;
            private Session session;

              //Information to send email
            private String email;
           private String subject;
           private String msg;
         ImageView imageView;
           Uri imageUri;
        //Progressdialog to show while sending email
     private ProgressDialog progressDialog;

     //Class Constructor
     public SendMail(Context context, String email, String subject, String msg, Uri imageUri) {
        //Initializing variables
        this.context = context;
        this.email = email;
        this.subject = subject;
        this.msg = msg;
        this.imageUri=imageUri;
      }

        @Override
       protected void onPreExecute() {
        super.onPreExecute();
        //Showing progress dialog while sending email
        progressDialog = ProgressDialog.show(context,"Sending message","Please wait...",false,false);
              }

          @Override
       protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        //Dismissing the progress dialog
        progressDialog.dismiss();
        //Showing a success message
        Toast.makeText(context,"Message Sent",Toast.LENGTH_LONG).show();
         }

      @Override
      protected Void doInBackground(Void... params) {
        //Creating properties
        Properties props = new Properties();

        //Configuring properties for gmail
        //If you are not using gmail you may need to change the values
        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");

        //Creating a new session
        session = Session.getDefaultInstance(props,
                new javax.mail.Authenticator() {
                    //Authenticating the password
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(Config.EMAIL, Config.PASSWORD);
                    }
                });

          try {
            //Creating MimeMessage object
            MimeMessage message= new MimeMessage(session);

            //Setting sender address
            message.setFrom(new InternetAddress(Config.EMAIL));
            //Adding receiver
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
            //Adding subject
            message.setSubject(subject);
            //Adding message
            MimeMultipart multipart = new MimeMultipart("related");

            // first part (the html)
            BodyPart messageBodyPart = new MimeBodyPart();
            String htmlText = msg+imageUri;
            messageBodyPart.setContent(htmlText, "text/html");
            // add it
            multipart.addBodyPart(messageBodyPart);

            // second part (the image)
            messageBodyPart = new MimeBodyPart();
            DataSource fds = new FileDataSource("MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, \"Title\", null)");

            messageBodyPart.setDataHandler(new DataHandler(fds));
            messageBodyPart.setHeader("Content-ID", "<image>");

            // add image to the multipart
            multipart.addBodyPart(messageBodyPart);

            // put everything together
            message.setContent(multipart);
            // Send message
            Transport.send(message);

        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return null;
    }
    }
...