我发现了一种使用意图发送纯文本电子邮件的方法:
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new
String[]{"example@mail.com"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Test");
Run Code Online (Sandbox Code Playgroud)
但我需要发送HTML格式的文本.
尝试setType("text/html")不起作用.
我已经阅读了很多关于从android发送html电子邮件的限制.发送html电子邮件的所有建议似乎只是将Html.fromHtml(yourHtmlString)传递给意图为Intent.EXTRA_TEXT.这适用于一些基本标签 - 粗体,斜体 - 但不会像html表那样.
看起来您可以尝试扩展Html的一些功能或实现自己的标签处理程序,但我想知道是否没有更基本的限制会迫使您做一些完全不同的事情(比如使用邮件api或其他东西) ).
我建议这个的原因是因为,就意图本身而言,Html.fromHtml(blah)只是一个charsequence,如果你在这个对象的charsequence接口上调用方法,你就看不到任何html的东西了(at至少我没有).所有的html/tag东西似乎都包含在Html.fromHtml实际返回的SpannableStringBuilder中......我想知道gmail应用程序是否在封面下查看真正的charsequence然后可以处理几个标签,这意味着没有希望在你的应用程序方面做任何事情来获取/欺骗gmail应用程序来处理比粗体,斜体等更复杂的事情.
我查看了gmail应用程序实际发送的原始电子邮件,它自动发送没有标签的text/plain和带有有限数量标签的text/html版本.我甚至尝试坚持使用一些转义的html标签,这些标签最终可能会转换为电子邮件的text/html部分中的实际标签,但是他们仍然逃脱了...这当然有点hacky.
无论如何,对于那些可能更多关注此事的人,我想做一个额外的确认,默认的android"发送html电子邮件"功能会让你疯狂地接近你可能需要的东西,但最后你必须咬子弹并自己实现许多低级别的东西(例如使用JavaMail API在Android中发送电子邮件而不使用默认/内置应用程序,这意味着你必须处理pw的东西等).
注意(稍后):我将从Html.fromHtml返回的SpannableStringBuilder包含一个自定义类,该类扩展了SpannableStringBuilder并将其传递给意图侦听对Spanned接口的调用.事实证明,当事件被写入发送到电子邮件意图的包裹时,TextUtils.writeToParcel会通过首先检查CharSequence是否是Spanned的实例来进行一些特殊检查以根除粗体/斜体,然后要求跨度(通过spanned.getSpans).尽管如此,我认为在进行修改时没有明显的希望来获得像在那里处理的table/td标签一样简单的东西.我甚至尝试修改我的SpannableStringBuilder子类的toString()来返回一些原始表html以查看会发生什么,但它在包裹写入过程中被转移到其他地方.
更多(稍后):TextUtils.writeToParcel(CharSequence cs,Parcel p,...)如果cs是"Spanned"的实例,只有在它们实现"ParcelableSpan"接口时才写入这些跨度...这是"对于将用作文本跨度"和"的对象的一种特殊的Parcelable只能由框架中的代码使用;它不适用于应用程序实现自己的Parcelable跨度".所以,即使你想要挂钩并写自己来处理表标签或其他什么,似乎也不鼓励.男人,我希望hackbod会在这里与我错过的一些明显的东西相比.
我希望我的应用程序构建一些HTML并将其传递给电子邮件,以便我的用户可以将其发送给他们想要的任何人.我在网上找到了如何通过Intent传递html的代码,但看来Html.fromHtml(String source)不理解表标签.无论如何我可以格式化带有表格标签的电子邮件吗?我想通过用户首选的客户端发送它,而不是自己用javamail发送它.
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/html");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body));
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
activity.startActivity(Intent.createChooser(emailIntent, "Email:"));
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我想在电子邮件正文中创建表.我读了一些android不支持表标签的地方.如何实现这一点.请任何人帮助我.
输出:

谢谢
如何在Android中的WebView中显示包含行和列的HTML表.
给我一些例子.