1

我正面临这个问题。我想发送一封电子邮件,我在 AsyncTask 类中编写代码。但我无法捕获网络异常或任何异常。以下是我发送电子邮件的代码

public class SendMail extends AsyncTask<Void, Object, Void> {
    int count =0;


    @Override
    protected Void doInBackground(Void... voids) {
        GMailSender sender = new GMailSender("user@gmail.com", "password");
        try {
            sender.sendMail("[Quick Hide video]Backup password",
                    "Your backup password is: "+utils.getPassword(),
                    "user@gmail.com",
                    "thienvan.ptit@gmail.com");
        } catch (Exception e) {
            Log.d("Check","check");
            // the code does not run to this with network is not connect
        }
        return null;
    }

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

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

GMailSender.java

public class GMailSender extends javax.mail.Authenticator {
...
    public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {
        try{
            MimeMessage message = new MimeMessage(session);
            DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
            message.setSender(new InternetAddress(sender));
            message.setSubject(subject);
            message.setDataHandler(handler);
            if (recipients.indexOf(',') > 0)
                message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
            else
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
            Transport.send(message);
        }catch(Exception e){
            Log.d("thien.van","Network Exception");
        }
    }
}

任何人都可以帮助我在 Asyntask 中捕获异常 谢谢

4

0 回答 0