我想使用用户已设置的任何默认邮件提供商在我的应用程序中发送电子邮件.必须可以发送电子邮件而无需任何用户交互.如果我可以避免显示任何UI,那将是最好的解决方案.不可接受的一件事是硬编码或请求用户输入他们的电子邮件凭证.用户必须已使用凭据设置其帐户,例如Gmail.我的所有应用程序都使用已设置的现有电子邮件提供商.
我在这里找到的大多数帖子都使用了Intent,但据我所知,这将显示电子邮件用户界面并要求用户按下发送按钮.
是否有可能我使用服务在后台发送电子邮件..就像在服务中我使用Intent与ACTION_SENDTO与Uri数据mailto:recipient_email并且它在后台发送而无需任何用户干预..或通过默认电子邮件应用程序而不提示用户. ..
我正在尝试使用从Android的AccountManager收到的令牌而不是使用用户名和密码来实现IMAP gmail客户端.
Google通过oauth2提供了此IMAP示例http://code.google.com/p/google-mail-oauth2-tools/source/browse/#svn%2Ftrunk%2Fjava%2Fcom%2Fgoogle%2Fcode%2Fsamples%2Foauth2 http: //code.google.com/p/google-mail-oauth2-tools/wiki/JavaSampleCode
public static IMAPStore connectToImap(String host,
int port,
String userEmail,
String oauthToken,
boolean debug) throws Exception {
Properties props = new Properties();
props.put("mail.imaps.sasl.enable", "true");
props.put("mail.imaps.sasl.mechanisms", "XOAUTH2");
props.put(OAuth2SaslClientFactory.OAUTH_TOKEN_PROP, oauthToken);
Session session = Session.getInstance(props);
session.setDebug(debug);
final URLName unusedUrlName = null;
IMAPSSLStore store = new IMAPSSLStore(session, unusedUrlName);
final String emptyPassword = "";
store.connect(host, port, userEmail, emptyPassword);
return store;
Run Code Online (Sandbox Code Playgroud)
}
public static void main(String args[]) throws Exception {
if (args.length != 2) {
System.err.println(
"Usage: OAuth2Authenticator <email> <oauthToken>");
return; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用此处找到的代码
从Android应用发送电子邮件.
我正在使用ADT Build 22.0.5
我见过很多人都有这个问题,但出于不同的原因,我真的无法理解它.
这是完整的错误日志
09-14 15:53:49.001: E/AndroidRuntime(4611): FATAL EXCEPTION: main
09-14 15:53:49.001: E/AndroidRuntime(4611): java.lang.IllegalStateException: Could not execute method of the activity
09-14 15:53:49.001: E/AndroidRuntime(4611): at android.view.View$1.onClick(View.java:3599)
09-14 15:53:49.001: E/AndroidRuntime(4611): at android.view.View.performClick(View.java:4204)
09-14 15:53:49.001: E/AndroidRuntime(4611): at android.view.View$PerformClick.run(View.java:17355)
09-14 15:53:49.001: E/AndroidRuntime(4611): at android.os.Handler.handleCallback(Handler.java:725)
09-14 15:53:49.001: E/AndroidRuntime(4611): at android.os.Handler.dispatchMessage(Handler.java:92)
09-14 15:53:49.001: E/AndroidRuntime(4611): at android.os.Looper.loop(Looper.java:137)
09-14 15:53:49.001: E/AndroidRuntime(4611): at android.app.ActivityThread.main(ActivityThread.java:5041)
09-14 15:53:49.001: E/AndroidRuntime(4611): at java.lang.reflect.Method.invokeNative(Native Method)
09-14 15:53:49.001: E/AndroidRuntime(4611): at java.lang.reflect.Method.invoke(Method.java:511)
09-14 15:53:49.001: E/AndroidRuntime(4611): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-14 15:53:49.001: E/AndroidRuntime(4611): …Run Code Online (Sandbox Code Playgroud)