Как отправить электронное письмо в событии «по щелчку», не заметив пользователя, выполняется в фоновом режиме

#java #android

#java #Android

Вопрос:

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

     private Context context;
    private Session session;
    //Information to send email
    private String email;
    private String subject;
    private String message;
    private String sender;
    //Progress dialog to show while sending email
    private ProgressDialog progressDialog;


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



    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        //Showing progress dialog while sending email
        progressDialog = ProgressDialog.show(context,"Sending email to user","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,"Email Sent Successfully",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 mm = new MimeMessage(session);
         
            try {
                mm.setFrom(new InternetAddress("test@gmail.com",sender));
                mm.setReplyTo(InternetAddress.parse("test@gmail.com",false));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            //Adding receiver
            mm.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
            //Adding subject
            mm.setSubject(subject);
            //Adding message
             mm.setText(message);
            //Sending email
            Transport.send(mm);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return null;
    }
}
 

Комментарии:

1. Рассматривали ли вы возможность использования другого почтового провайдера с более простым в реализации api?