0

I am trying to send an email from my app. Here is some code:

        String text = editText.getText().toString();

        String to = "to@gmail.com";
        String from = "from@gmail.com";
        String host = "localhost";
        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(properties);

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("Answer to your feedback");
            message.setText(text);
            Transport.send(message);
        } catch (MessagingException mex){
            mex.printStackTrace();
        }

But i get an exception:


Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) at android.view.View.performClick(View.java:7189)  at android.view.View.performClickInternal(View.java:7163)  at android.view.View.access$3500(View.java:821)  at android.view.View$PerformClick.run(View.java:27579)  at android.os.Handler.handleCallback(Handler.java:888)  at android.os.Handler.dispatchMessage(Handler.java:100)  at android.os.Looper.loop(Looper.java:213)  at android.app.ActivityThread.main(ActivityThread.java:8147)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)  Caused by: android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1565) at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115) at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103) at java.net.InetAddress.getLocalHost(InetAddress.java:1488) at javax.mail.internet.InternetAddress.getLocalAddress(InternetAddress.java:517) at javax.mail.internet.UniqueValue.getUniqueMessageIDValue(UniqueValue.java:99) at javax.mail.internet.MimeMessage.updateMessageID(MimeMessage.java:2054) at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2076) at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2042) at javax.mail.Transport.send(Transport.java:117)


Didn't find anything helpful. How can i fix it?

1 Answers1

0

As the stack tells you, you are doing networking on main thread which is not acceptable because it could block the UI from updating. Check out for AsyncTask and execute your code there.

vilpe89
  • 4,656
  • 1
  • 29
  • 36