1

ここにリンクされている質問を読みました。たとえば、ユーザーがボタンを押したときに、プログラムで電子メールを送信するためにこの方法を試しました。

Android の 2.3.7 バージョンで動作します。

問題は、Android の最新バージョン (4.1.2 など) でアプリを起動しようとすると、何も実行されないことです。これらのデバイスでは、トーストは表示されますが、電子メールは送信されません。

だから、私はこのコードを試してみましたが、どちらもうまくいきません。

...
sendButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {

            //Read EditText
            EditText text = (EditText)findViewById(R.id.editText1);
            String my_mail = text.getText().toString().toLowerCase();

            if (my_mail.matches("")){
                Toast toast = Toast.makeText(context, "Please insert a valid email address!", Toast.LENGTH_LONG); 
                toast.show();
            }

            //send mail
            try {   
                            WebSendMail(my_mail);

                            Toast toast = Toast.makeText(context, "Email sent!",     Toast.LENGTH_LONG); 
                toast.show();
                    } catch (Exception e) {   
                            Log.e("SendMail", e.getMessage(), e);   
                    }

        }
    });

public static boolean WebSendMail(String mail){

       //email sender parameter
       String smtpHost = "smtp.gmail.com"; 
       String addressFrom = "account@gmail.com";
       String login = addressFrom;
       String password = "password";
       String subject = "Subject!";

       String message = "html code";

       try {
       Properties props = new Properties();
       props.setProperty("mail.host", smtpHost);
       props.setProperty("mail.smtp.port", "587");
       props.setProperty("mail.smtp.auth", "true");
       props.setProperty("mail.smtp.starttls.enable", "true");

       Authenticator auth = new SMTPAuthenticator(login, password);

       Session session = Session.getInstance(props, auth);

       MimeMessage msg = new MimeMessage(session);
       msg.setText(message);
       msg.setSubject(subject);
       msg.setContent(message, "text/html");
       msg.setFrom(new InternetAddress(addressFrom));
       msg.addRecipient(Message.RecipientType.TO, new InternetAddress(mail));
       Transport.send(msg);
       return true;

       } catch (Exception ex) {
           return false;
       }

}

何か助けはありますか?

4

1 に答える 1

1

あなたはこのエラーを考えているかもしれません

android.os.NetworkOnMainThreadException

これを参照してください http://www.androiddesignpatterns.com/2012/06/app-force-close-honeycomb-ics.html

これを使用します http://developer.android.com/reference/android/os/AsyncTask.html

于 2013-05-15T18:52:32.187 に答える