繁体   English   中英

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

[英]Sending html email in android using <table>, etc. - is there really no relatively built-in Intent way?

我已经阅读了很多关于从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表那样。

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

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

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

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

TextViewEditText可以“处理一些标记”,大致与Html可以解析/生成的内容SpannedStringSpannedString可以表示。

这些都不能处理HTML表。 也不是JavaScript。 也不是CSS。 也不是iframe或任何其他标签。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM