Automatically Mail send in Background in Android

前端 未结 4 685
悲&欢浪女
悲&欢浪女 2021-01-06 13:47

When I press on Send Button in log show Mail Sent But Actually mail not sent. Please help me my code below. Why Mail not sent?

GMailSender.java

4条回答
  •  执笔经年
    2021-01-06 14:19

    MainActivity.java

    Put on button click::

    String fromEmail = "sample@gmail.com";
                                String fromPassword = "xxxxxx";
                                String toEmails = to_sample@gmail.com;
                                String adminEmail = "admin@gmail.com";
                                String emailSubject = "App Registration Mail";
                                String adminSubject = "App Registration Mail";
                                String emailBody = "Your message";
                                String adminBody = "Your message";
                                new SendMailTask(YOurActivity.this).execute(fromEmail,
                                        fromPassword, toEmails, emailSubject, emailBody);
    

    GMail.java

    import java.io.UnsupportedEncodingException;
    import java.util.List;
    import java.util.Properties;
    
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    
    import android.app.AlertDialog.Builder;
    import android.util.Log;
    
    public class GMail {
    
        final String emailPort = "587";// gmail's smtp port
        final String smtpAuth = "true";
        final String starttls = "true";
        final String emailHost = "smtp.gmail.com";
    
        String fromEmail;
        String fromPassword;
        @SuppressWarnings("rawtypes")
        String toEmailList;
        String emailSubject;
        String emailBody;
    
        Properties emailProperties;
        Session mailSession;
        MimeMessage emailMessage;
    
        public GMail() {
    
        }
    
        @SuppressWarnings("rawtypes")
        public GMail(String fromEmail, String fromPassword,
                String toEmailList, String emailSubject, String emailBody) {
            this.fromEmail = fromEmail;
            this.fromPassword = fromPassword;
            this.toEmailList = toEmailList;
            this.emailSubject = emailSubject;
            this.emailBody = emailBody;
    
            emailProperties = System.getProperties();
            emailProperties.put("mail.smtp.port", emailPort);
            emailProperties.put("mail.smtp.auth", smtpAuth);
            emailProperties.put("mail.smtp.starttls.enable", starttls);
            Log.i("GMail", "Mail server properties set.");
        }
    
        public MimeMessage createEmailMessage() throws AddressException,
                MessagingException, UnsupportedEncodingException {
    
            mailSession = Session.getDefaultInstance(emailProperties, null);
            emailMessage = new MimeMessage(mailSession);
    
            emailMessage.setFrom(new InternetAddress(fromEmail, fromEmail));
    
                Log.i("GMail","toEmail: "+toEmailList);
                emailMessage.addRecipient(Message.RecipientType.TO,
                        new InternetAddress(toEmailList));
    
    
            emailMessage.setSubject(emailSubject);
            emailMessage.setContent(emailBody, "text/html");// for a html email
            // emailMessage.setText(emailBody);// for a text email
            Log.i("GMail", "Email Message created.");
            return emailMessage;
        }
    
        public void sendEmail() throws AddressException, MessagingException {
    
            Transport transport = mailSession.getTransport("smtp");
            transport.connect(emailHost, fromEmail, fromPassword);
            Log.i("GMail","allrecipients: "+emailMessage.getAllRecipients());
            transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
            transport.close();
            Log.i("GMail", "Email sent successfully.");
    
        }
    
    
    }
    

    SendMailTask.java:

    import java.util.List;
    
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.app.AlertDialog.Builder;
    import android.os.AsyncTask;
    import android.util.Log;
    
    @SuppressWarnings("rawtypes")
    public class SendMailTask extends AsyncTask {
    
        private ProgressDialog statusDialog;
        private Activity sendMailActivity;
    
        public SendMailTask(Activity activity) {
            sendMailActivity = activity;
    
        }
    
        protected void onPreExecute() {
            statusDialog = new ProgressDialog(sendMailActivity);
            statusDialog.setMessage("Getting ready...");
            statusDialog.setIndeterminate(false);
            statusDialog.setCancelable(false);
            statusDialog.show();
        }
    
        @SuppressWarnings("unchecked")
        @Override
        protected Object doInBackground(Object... args) {
            try {
                Log.i("SendMailTask", "About to instantiate GMail...");
                publishProgress("Processing input....");
                GMail androidEmail = new GMail(args[0].toString(),
                        args[1].toString(),  args[2].toString(), args[3].toString(),
                        args[4].toString());
                publishProgress("Preparing mail message....");
                androidEmail.createEmailMessage();
                publishProgress("Sending email....");
                androidEmail.sendEmail();
                publishProgress("Email Sent.");
                Log.i("SendMailTask", "Mail Sent.");
    
                Config.mailSuccess="1";
    
    
            } catch (Exception e) {
                publishProgress(e.getMessage());
                Log.e("SendMailTask", e.getMessage(), e);
            }
            return null;
        }
    
        @Override
        public void onProgressUpdate(Object... values) {
            statusDialog.setMessage(values[0].toString());
    
        }
    
        @Override
        public void onPostExecute(Object result) {
            statusDialog.dismiss();
        }
    
    
    }
    

    Library files

提交回复
热议问题