0

私はアプリケーションを開発しています。アプリケーションからメールを送信しています。私は次のようにメールを送信するためにコードを使用しています:

Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { too });  
emailIntent.putExtra(Intent.EXTRA_SUBJECT, sub);  

emailIntent.setType("message/rfc822");
emailIntent.putExtra(Intent.EXTRA_TEXT, body);  

startActivity(Intent.createChooser(emailIntent, "Choose Email Clients..."));

このコードを使用することにより、私は電子メールを送信することができます。デフォルトのメールコンポーザーにアクセスできます。

私の問題は次のとおりです。ユーザーがデフォルトのコンポーザー(本文、件名、フィールド)で編集できないのはアプリケーションの必要性です。ただし、作曲家のフィールドは編集可能です。それで、編集可能なものを偽にする方法。

メールの本文、件名、送信先としての私のデータ全体は、データベースからのものです。ユーザーには、それを変更または修正する権限がありません。

グーグルで検索して、意図を使わずにメールを送信するコードを入手しましたが、これは非常に複雑だと感じています。リンクはこちら

そして、私はリンクで与えられたステップに従った後にエラーを受け取りました:

03-07 18:06:05.750: D/dalvikvm(12734): GC_CONCURRENT freed 303K, 53% free 2699K/5639K, external 141K/518K, paused 3ms+2ms
03-07 18:06:26.430: E/MailApp(12734): Could not send email
03-07 18:06:26.430: E/MailApp(12734): javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
03-07 18:06:26.430: E/MailApp(12734):   nested exception is:
03-07 18:06:26.430: E/MailApp(12734):   java.net.SocketException: Host is unresolved: smtp.gmail.com
03-07 18:06:26.430: E/MailApp(12734):   at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391)
03-07 18:06:26.430: E/MailApp(12734):   at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
03-07 18:06:26.430: E/MailApp(12734):   at javax.mail.Service.connect(Service.java:310)
03-07 18:06:26.430: E/MailApp(12734):   at javax.mail.Service.connect(Service.java:169)
03-07 18:06:26.430: E/MailApp(12734):   at javax.mail.Service.connect(Service.java:118)
03-07 18:06:26.430: E/MailApp(12734):   at javax.mail.Transport.send0(Transport.java:188)
03-07 18:06:26.430: E/MailApp(12734):   at javax.mail.Transport.send(Transport.java:118)
03-07 18:06:26.430: E/MailApp(12734):   at com.ocs.sendmailcustom.Mail.send(Mail.java:104)
03-07 18:06:26.430: E/MailApp(12734):   at com.ocs.sendmailcustom.Main$1.onClick(Main.java:31)
03-07 18:06:26.430: E/MailApp(12734):   at android.view.View.performClick(View.java:2538)
03-07 18:06:26.430: E/MailApp(12734):   at android.view.View$PerformClick.run(View.java:9152)
03-07 18:06:26.430: E/MailApp(12734):   at android.os.Handler.handleCallback(Handler.java:587)
03-07 18:06:26.430: E/MailApp(12734):   at android.os.Handler.dispatchMessage(Handler.java:92)
03-07 18:06:26.430: E/MailApp(12734):   at android.os.Looper.loop(Looper.java:123)
03-07 18:06:26.430: E/MailApp(12734):   at  android.app.ActivityThread.main(ActivityThread.java:3691)
03-07 18:06:26.430: E/MailApp(12734):   at  java.lang.reflect.Method.invokeNative(Native Method)
03-07 18:06:26.430: E/MailApp(12734):   at java.lang.reflect.Method.invoke(Method.java:507)
03-07 18:06:26.430: E/MailApp(12734):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
03-07 18:06:26.430: E/MailApp(12734):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
03-07 18:06:26.430: E/MailApp(12734):   at dalvik.system.NativeStart.main(Native Method)
03-07 18:06:26.430: E/MailApp(12734): Caused by: java.net.SocketException: Host is unresolved: smtp.gmail.com
03-07 18:06:26.430: E/MailApp(12734):   at java.net.Socket.connect(Socket.java:985)
03-07 18:06:26.430: E/MailApp(12734):   at java.net.Socket.connect(Socket.java:945)
03-07 18:06:26.430: E/MailApp(12734):   at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233)
03-07 18:06:26.430: E/MailApp(12734):   at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:163)
03-07 18:06:26.430: E/MailApp(12734):   at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359)
03-07 18:06:26.430: E/MailApp(12734):   ... 19 more

SAMSUNGgalaxys2としてデバイスでアプリケーションを実行しているときにこのエラーが発生しました。

しかし、LGoptimusE400では正常に動作しています。

だから私は何をすべきか、またはタスクを達成するための手順に従う必要があります。または、意図せずにメールを送信する方法はありますか。

4

1 に答える 1

0

問題を解決しました。それは私が注意を払うのを忘れた愚かな間違いだったので。LGデバイスはGPRSネットで動作し、SamsungデバイスはWI-FIで動作します。

だから私はちょうど次のようにandroidmenifestファイルにWI-FIの許可を含めます:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

この許可を追加した後、私はインテントからだけでなく、リンクで与えられたコードからもメールを送信することができます。これは、インテントなしでのカスタムメール送信です。

この投稿がすべての人へのメール送信アプリの開発に役立つことを願っています。

于 2013-03-08T04:48:01.513 に答える