Android的,如何发送HTML邮件,并迫使Android的通过G-邮件没有其他应用程序发送?(A

2019-06-26 05:58发布

我想通过我的应用程序发送电子邮件。 我只需要通过G-Mail来发送基于HTML的电子邮件。 我发现下面的解决方案,他们每个人都有优点和缺点。

1)使用意图(Intent.ACTION_SEND)。 这是非常简单的方法,我可以看到我的身体在HTML格式的,但问题是,当我点击“发送邮件”按钮,如Facebook和Google+这么多的应用程序弹出哪些是无用的,我不应该在该列表中显示它。 这是它的代码:

String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"MY EMAIL ADDRESS"});
intent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(html));
startActivity(Intent.createChooser(intent, "Send email..."));

2)使用意图(Intent.ACTION_SENDTO)。 这样,过滤无用的应用程序,并显示我只是邮件客户端。 不过,这并不在Gmail客户端显示我的HTML格式的电子邮件。 当我发送电子邮件一些客户端显示HTML格式的身体,而其他人不识别HTML和我的链接行为就像纯文本。 此代码是这样的:

String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
Intent send = new Intent(Intent.ACTION_SENDTO);
String uriText = "mailto:MY EMAIL ADDRESS" + "?subject=subject here" + "&body=" + html;
uriText = uriText.replace(" ", "%20");
Uri uri = Uri.parse(uriText);
send.setData(uri);
startActivity(Intent.createChooser(send, "Send mail..."));

3)使用发送邮件的JavaMail API这增加了这么多复杂的应用程序,我没有测试它为止。

什么是您的建议? 我需要一种方法来拥有的第一和第二方面的优势。 我需要在按钮上点击用户它显示Gmail客户端,我可以告诉他/客户端的主体部分她的HTML内容。

任何建议,将不胜感激。 谢谢

======================

更新

有关代码2什么​​是错的。 该代码是这样的:

String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
Intent send = new Intent(Intent.ACTION_SENDTO);
String uriText = "mailto:MY EMAIL ADDRESS" + "?subject=subject here" + "&body=" + Html.fromHtml(html);
uriText = uriText.replace(" ", "%20");
Uri uri = Uri.parse(uriText);
send.setData(uri);
startActivity(Intent.createChooser(send, "Send mail..."));

Answer 1:

请尝试以下 -

Intent shareIntent = new Intent(Intent.ACTION_SENDTO,Uri.parse("mailto:"));
shareIntent.putExtra(Intent.EXTRA_TEXT,Html.fromHtml(body));
shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
startActivity(shareIntent);

这只会存在的电子邮件应用程序。



Answer 2:

如果你只需要一个应用程序来处理你的意图,那么你需要删除Intent.createChooser(),而使用JST startActivity()--->它使用默认的电子邮件客户端发送邮件,如果没有设置然后会问这样做。 .. TAT可以随时改变



Answer 3:

试试这个代码:它将只选择电子邮件提供商,不是Facebook等。

 String body="<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" +
                      "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
            final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
            emailIntent.setType("text/html");           
            emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);    
            emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body));
            startActivity(Intent.createChooser(emailIntent, "Email:"));


Answer 4:

要获得唯一的电子邮件应用程序,使用Intent.setType(“信息/ RFC822”)



文章来源: Android, How to send HTML email and force Android to send it through G-Mail not other applications?