Android发送邮件:在默认电子邮件作曲器中禁用编辑

问题描述:

我正在开发一个应用程序。我正在从我的应用程序发送电子邮件。我使用的代码发送邮件为:Android发送邮件:在默认电子邮件作曲器中禁用编辑

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...")); 

通过使用此代码,我可以发送电子邮件。由于默认的邮件编辑器是可访问的。

我的问题是:这是用户在默认的作曲家(主体,主题和字段)中不能编辑的应用程序的需要。但作曲家领域是可编辑的。那么如何让可编辑的虚假。

我的整个数据,邮件,主题的身体和人,这是要送从数据库中来。用户无权更改或修改它。

我搜索谷歌和得到一些代码,发送电子邮件,而无需使用意图,这点我觉得很复杂。这个链接是here

而且我在下面给出的链接步骤后遇到错误,如:

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 

,同时运行的三星Galaxy S2上的设备的应用程序我得到这个错误。

但在LG擎天柱E400成功运行。

所以,我应该怎么做或按照步骤来实现任务。或者有没有意图发送邮件的方法。

+0

在你提供给你的链接中应该输入你的gmail凭证,并且添加额外的库,那里有什么困难 – Daler 2013-03-07 06:27:31

+1

@Daler其实我试图这样做,但是我在通过该链接中给出的代码发送邮件时出错。 – 2013-03-07 11:31:02

我解决我的问题。因为这是我忘了注意的一个愚蠢的错误。由于我的LG设备在GPRS网络中工作,而我的三星设备在WI-FI上。

所以我只包括WI-FI的androidmenifest文件的权限:

<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"/> 

添加此permision我能够从意图发送邮件后,以及在link给出的代码是定制电子邮件发送意图。

希望这篇文章,将在发展中国家电子邮件发送应用的所有帮助。