Java Android后台电子邮件任务未发送,导致错误

Java Android后台电子邮件任务未发送,导致错误,java,android,jakarta-mail,Java,Android,Jakarta Mail,因此,我设置了一个任务,使用javax.mail api在后台发送电子邮件,我在stacktrace中收到一个错误,导致电子邮件无法发送。 我用注释注释注释了引发错误的特定行 堆栈跟踪 08-22 16:34:47.052 20025-20422/com.example.adrian.trucktracker W/System.err﹕ nested exception is: 08-22 16:34:47.052 20025-20422/com.example.adrian.trucktr

因此,我设置了一个任务,使用javax.mail api在后台发送电子邮件,我在stacktrace中收到一个错误,导致电子邮件无法发送。 我用注释注释注释了引发错误的特定行

堆栈跟踪

08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ nested exception is:
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ java.net.UnknownHostException: Host is unresolved: smtp.gmail.com
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1389)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at javax.mail.Service.connect(Service.java:310)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at javax.mail.Service.connect(Service.java:169)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at javax.mail.Service.connect(Service.java:118)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at javax.mail.Transport.send0(Transport.java:188)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at javax.mail.Transport.send(Transport.java:118)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at com.example.adrian.trucktracker.AlarmReceiver$SendMailTask.doInBackground(AlarmReceiver.java:96)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at com.example.adrian.trucktracker.AlarmReceiver$SendMailTask.doInBackground(AlarmReceiver.java:80)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
08-22 16:34:47.052  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at java.lang.Thread.run(Thread.java:864)
08-22 16:34:47.062  20025-20422/com.example.adrian.trucktracker W/System.err﹕ Caused by: java.net.UnknownHostException: Host is unresolved: smtp.gmail.com
08-22 16:34:47.062  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at java.net.Socket.connect(Socket.java:856)
08-22 16:34:47.062  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at java.net.Socket.connect(Socket.java:816)
08-22 16:34:47.062  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233)
08-22 16:34:47.062  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
08-22 16:34:47.062  20025-20422/com.example.adrian.trucktracker W/System.err﹕ at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359)
08-22 16:34:47.062  20025-20422/com.example.adrian.trucktracker W/System.err﹕ ... 14 more
广播接收机代码:

    public class AlarmReceiver extends WakefulBroadcastReceiver {
        public AlarmReceiver() {
        }
        Context cont;
        public String DATAOUT() {
            String Dataout = "";
            try {
                BufferedReader bufferedReader = new BufferedReader(new FileReader(new
                        File(cont.getFilesDir() + File.separator + "XXXXXXXXXX.txt")));
                String read;
                StringBuilder builder = new StringBuilder("");

                while ((read = bufferedReader.readLine()) != null) {
                    builder.append(read);
                }
                Log.d("Output", builder.toString());
                Dataout = builder.toString();
                bufferedReader.close();
            } catch (Exception e) {
            }
            return Dataout;
        }

        private Session createSessionObject() {
            Properties properties = new Properties();
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.starttls.enable", "true");
            properties.put("mail.smtp.host", "smtp.gmail.com");
            properties.put("mail.smtp.port", "587");

            return Session.getInstance(properties, new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("XXXXXXXXXXXXX@gmail.com", "XXXXXXXXXXXXX1298");
                }
            });
        }

        private Message createMessage(String email, String subject, String messageBody, Session session) throws MessagingException, UnsupportedEncodingException {
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("XXXXXXXXXXXXXXXXXXX@gmail.com", "Admin"));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(email, email));
            message.setSubject(subject);
            message.setText(messageBody);
            return message;
        }




/*Line 80 (error)*/        private class SendMailTask extends AsyncTask<Message, Void, Void> {
            private ProgressDialog progressDialog;

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }

            @Override
            protected void onPostExecute(Void aVoid) {
                super.onPostExecute(aVoid);
            }

            @Override
 /*Line 96 (error)*/           protected Void doInBackground(Message... messages) {
                try {
                    Transport.send(messages[0]);
                } catch (MessagingException e) {
                    e.printStackTrace();
                }
                return null;
            }
        }

        private void sendMail(String email, String subject, String messageBody) {
            Session session = createSessionObject();
            try {
                Message message = createMessage(email, subject, messageBody, session);
                new SendMailTask().execute(message);
            } catch (AddressException e) {
                e.printStackTrace();
            } catch (MessagingException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        @Override
        public void onReceive(Context context, Intent intent) {
            String check = "";
            String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
            File checker = new File(context.getFilesDir() + File.separator + "LEGION_LOCATION_DATA.txt");
            if(checker.exists()) {
                sendMail("XXXXXXXXX@XXXXXXXXXXXX.com", "DataTest", DATAOUT());
                Log.d("Update", "Update Sent");
                check = "Auto Check In Complete At " + currentDateTimeString;
            }
            else
            {
                check = "ERROR";
                sendMail("XXXXXXXXXXX@XXXXXXXXXXX.com", "DataTest",check);
            }

            Intent intenti= new Intent(context, Locator.class);
            intenti.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
                    intenti, 0);

            NotificationCompat.Builder mBuilder =
                    new NotificationCompat.Builder(context)
                            .setSmallIcon(R.drawable.legionnotifyicon)
                            .setContentTitle("Legion Link")
                            .setContentText(check);
            mBuilder.setContentIntent(contentIntent);
            mBuilder.setDefaults(Notification.DEFAULT_SOUND);
            mBuilder.setAutoCancel(true);
            NotificationManager mNotificationManager =
                    (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            mNotificationManager.notify(1, mBuilder.build());
        }
    }
公共类AlarmReceiver扩展WakefulBroadcastReceiver{
公共警报接收器(){
}
语境控制;
公共字符串DATAOUT(){
字符串Dataout=“”;
试一试{
BufferedReader BufferedReader=新的BufferedReader(新的文件读取器
文件(cont.getFilesDir()+File.separator+“xxxxxxxxx.txt”);
字符串读取;
StringBuilder=新的StringBuilder(“”);
而((read=bufferedReader.readLine())!=null){
builder.append(读取);
}
Log.d(“Output”,builder.toString());
Dataout=builder.toString();
bufferedReader.close();
}捕获(例外e){
}
返回数据输出;
}
专用会话createSessionObject(){
属性=新属性();
properties.put(“mail.smtp.auth”、“true”);
properties.put(“mail.smtp.starttls.enable”、“true”);
properties.put(“mail.smtp.host”、“smtp.gmail.com”);
properties.put(“mail.smtp.port”,“587”);
return Session.getInstance(属性,new javax.mail.Authenticator(){
受保护的密码身份验证getPasswordAuthentication(){
返回新密码身份验证(“XXXXXXXXXXXXX@gmail.com“,“XXXXXXXXXXXX 1298”);
}
});
}
私有消息createMessage(字符串电子邮件、字符串主题、字符串消息正文、会话会话)引发MessaginException、UnsupportedEncodingException{
Message Message=新的mimessage(会话);
message.setFrom(新的InternetAddress(“XXXXXXXXXXXXXXXXXXX@gmail.com“,”管理“);
message.addRecipient(message.RecipientType.TO,新的Internet地址(电子邮件,电子邮件));
message.setSubject(主题);
message.setText(messageBody);
返回消息;
}
/*第80行(错误)*/private类SendMailTask扩展异步任务{
私有进程对话;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的void onPostExecute(void避免){
super.onPostExecute(避免);
}
@凌驾
/*第96行(错误)*/protectedvoiddoinbackground(消息…消息){
试一试{
Transport.send(消息[0]);
}捕获(消息异常e){
e、 printStackTrace();
}
返回null;
}
}
私有void sendMail(字符串电子邮件、字符串主题、字符串消息体){
会话=createSessionObject();
试一试{
消息消息=创建消息(电子邮件、主题、消息正文、会话);
新建SendMailTask().execute(消息);
}捕获(地址e){
e、 printStackTrace();
}捕获(消息异常e){
e、 printStackTrace();
}捕获(不支持的编码异常e){
e、 printStackTrace();
}
}
@凌驾
公共void onReceive(上下文、意图){
字符串检查=”;
字符串currentDateTimeString=DateFormat.getDateTimeInstance().format(新日期());
文件检查器=新文件(context.getFilesDir()+File.separator+“LEGION\u LOCATION\u DATA.txt”);
if(checker.exists()){
发送邮件(“XXXXXXXXX@XXXXXXXXXXXX.com“,”DataTest“,DATAOUT());
Log.d(“更新”、“已发送更新”);
check=“自动签入在”+currentDateTimeString完成;
}
其他的
{
check=“ERROR”;
发送邮件(“XXXXXXXXXXX@XXXXXXXXXXX.com“,”数据测试“,检查);
}
Intent intenti=新的Intent(上下文,Locator.class);
intenti.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
PendingEvent contentIntent=PendingEvent.getActivity(上下文,0,
意图,0);
通知相容建筑商mBuilder=
新建NotificationCompat.Builder(上下文)
.setSmallIcon(R.drawable.legionnotifyicon)
.setContentTitle(“军团链接”)
.setContentText(检查);
mBuilder.setContentIntent(contentIntent);
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setAutoCancel(真);
通知经理通知经理=
(NotificationManager)context.getSystemService(context.NOTIFICATION\u服务);
mNotificationManager.notify(1,mBuilder.build());
}
}

您正在使用模拟器吗?
主机未解析:smtp.gmail.com
您似乎没有internet连接(或权限?)