使用<table>等在android中发送html电子邮件 - 是否真的没有相对内置的Intent方式?

use*_*489 16 html email android android-intent

我已经阅读了很多关于从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会在这里与我错过的一些明显的东西相比.

Com*_*are 12

这适用于一些基本标签 - 粗体,斜体 - 但不会像html表那样.

这很可能是电子邮件客户端的功能.并非所有电子邮件客户端都可以在任何平台上创建任意HTML.因此,虽然Mozilla Thunderbird似乎允许您使用表格创建HTML邮件,但Gmail不会(至少,我没有在邮件撰写窗口中看到它的选项).

我想知道是否没有更基本的限制会迫使你做一些完全不同的事情

除非你写你自己的电子邮件客户端,需要延长允许几类TextViewEditText处理HTML表格(它的方式不仅仅是多Html类),对你没有好处.

我想知道gmail应用程序是否在封面下查看真正的charsequence然后可以处理几个标签

TextView并且EditText可以"处理一些标签",大致排列Html可以解析/生成并SpannedString可以表示的内容.

这些都不能处理HTML表.也不是JavaScript.也不是CSS.也没有iframe或任何数量的其他标签.

但最终你必须咬紧牙关并自己实施许多低级别的东西

我首先要问自己,直接从手机发送带有表格的HTML邮件是否值得.您可以使用Web服务接口从服务器发送带有表的HTML邮件,也可以从手机发送HTML邮件无表.这些都不会要求你收集"pw东西".

  • @Hugo:我在答案中提出的观点仍然正确。`TextView` 和 `EditText` 仍然不支持 HTML 表格,我希望 Android 上的大多数电子邮件客户端将这些东西用于他们的消息编辑器。完全有可能一些电子邮件客户端已经转而使用带有适当的基于 HTML 的编辑器的“WebView”,从而提供更大的灵活性。OTOH,Android 主要用于移动设备,通常人们不会尝试在小型触摸屏上使用 HTML 表格撰写电子邮件,因此许多邮件客户端可能不会担心这个问题。 (2认同)