我发现了一种使用意图发送纯文本电子邮件的方法:
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")不起作用.
我想通过我的申请发送电子邮件.我需要通过G-Mail发送基于HTML的电子邮件.我找到了以下解决方案,每个解决方案都有利有弊.
1)使用Intent(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..."));
Run Code Online (Sandbox Code Playgroud)

2)使用Intent(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); …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多关于从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标签.但我在API中找到了常量的Intent.EXTRA_HTML_TEXT(http://developer.android.com/reference/android/content/Intent.html#EXTRA_HTML_TEXT).
我的代码看起来像这样,但它始终只显示文本而不是html格式的文本,无论我使用的邮件客户端是什么:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, "Hello World");
intent.putExtra(Intent.EXTRA_HTML_TEXT, "<html><body><h1>Hello World</h1></body><html>");
intent.setType("text/html"); // intent.setType("plain/text");
startActivity(Intent.createChooser(intent, "Choose Email Client:"));
Run Code Online (Sandbox Code Playgroud)
那错误在哪里?
当我将其输出到电子邮件时,我正在尝试更改文本的颜色(字符串).我的代码是:
String appdata = "%" + txtFromSpinner + location.getText() + "%" + date.getText()+ "%" + start.getText() + "%" + finish.getText() + "%" + lunch.getText() + "%" + details.getText();
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"payrolldirectgib@gmail.com"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Timesheet/Parte de horas");
emailIntent.putExtra(Intent.EXTRA_TEXT, appdata +sep+ "Please send this email."+sep+ "Your timesheet details are included in it."+sep+ "Thank you."+sep+ "Regards,"+sep+ "Admin Department."+sep+ "Payroll Direct.");
emailIntent.setType("message/rfc822");
startActivity(emailIntent);
Run Code Online (Sandbox Code Playgroud)
我希望字符串"appdata"在电子邮件消息框中显示为红色.
可以这样做,怎么做?
先感谢您.
我发送一个简单的电子邮件,并在身体中我放了一个链接.
我的问题是链接无法识别为链接但仅作为字符串
这里的代码:
intent.putExtra(Intent.EXTRA_EMAIL,new String[]{ "Support@bift.net"});
Uri myUri = Uri.parse("http://www.stackoverFlow.com/");
intent.putExtra(Intent.EXTRA_TEXT, "Check out this great application:"+"\n"+ myUri);
intent.putExtra(Intent.EXTRA_SUBJECT, "Traveler's Pharmacy");
intent.setType("text/plain");
startActivity(Intent.createChooser(intent, "Choose Email Client"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助