我正在使用创建一个Windows 8.1 应用商店 in WinRT
.
我无法通过用逗号或分号分隔每封电子邮件来使用 mailto uri 创建具有多个收件人的新邮件,两者都会给我相同的错误。
Invalid URI: The hostname could not be parsed.
mailto 字符串看起来像这样
"mailto:[email protected] /cdn-cgi/l/email-protection,[email protected] /cdn-cgi/l/email-protection"
"mailto:[email protected] /cdn-cgi/l/email-protection,[email protected] /cdn-cgi/l/email-protection,"
"mailto:[email protected] /cdn-cgi/l/email-protection, [email protected] /cdn-cgi/l/email-protection"
"mailto:[email protected] /cdn-cgi/l/email-protection;[email protected] /cdn-cgi/l/email-protection"
"mailto:[email protected] /cdn-cgi/l/email-protection;user[email protected] /cdn-cgi/l/email-protection;"
"mailto:[email protected] /cdn-cgi/l/email-protection; [email protected] /cdn-cgi/l/email-protection"
我已经尝试了所有这些变体,但在更新 uri 时都给了我同样的错误,就像这样。
var uri = new Uri(string.Format("mailto:{0}", mails));
我不知道我做错了什么,或者如果它没有实现,为什么它不会呢?
我创建了一些单元测试来看看是否有任何变化可以工作,但是没有..
[TestClass]
public class UriMailToTest
{
private Uri CreateMailToUri(string mail)
{
if (string.IsNullOrEmpty(mail)) throw new ArgumentNullException("mail");
var uriMailTo = string.Format("mailto:{0}", mail);
return new Uri(uriMailTo);
}
[TestMethod]
public void CreateMailToUriTest1()
{
const string mailto = "[email protected] /cdn-cgi/l/email-protection";
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest2()
{
const string mailto = "[email protected] /cdn-cgi/l/email-protection,[email protected] /cdn-cgi/l/email-protection";
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest3()
{
const string mailto = "[email protected] /cdn-cgi/l/email-protection,[email protected] /cdn-cgi/l/email-protection,";
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest4()
{
const string mailto = "[email protected] /cdn-cgi/l/email-protection;[email protected] /cdn-cgi/l/email-protection";
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest5()
{
const string mailto = "[email protected] /cdn-cgi/l/email-protection;[email protected] /cdn-cgi/l/email-protection;";
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest6()
{
const string mailto = "[email protected] /cdn-cgi/l/email-protection, [email protected] /cdn-cgi/l/email-protection";
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest7()
{
const string mailto = "us[email protected] /cdn-cgi/l/email-protection; [email protected] /cdn-cgi/l/email-protection";
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest8()
{
var mails = new[] { "[email protected] /cdn-cgi/l/email-protection", "[email protected] /cdn-cgi/l/email-protection"};
var mailto = mails.Select(WebUtility.UrlEncode).Aggregate((c, n) => string.Format("{0},{1}", c, n));
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest9()
{
var mails = new[] { "[email protected] /cdn-cgi/l/email-protection", "[email protected] /cdn-cgi/l/email-protection" };
var mailto = mails.Select(WebUtility.UrlEncode).Aggregate((c, n) => string.Format("{0};{1}", c, n));
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest10()
{
var mails = new[] { "[email protected] /cdn-cgi/l/email-protection", "[email protected] /cdn-cgi/l/email-protection" };
var mailto = mails.Aggregate((c, n) => string.Format("{0},{1}", c, n));
var urlEncodedMailTo = WebUtility.UrlEncode(mailto);
var uri = CreateMailToUri(urlEncodedMailTo);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest11()
{
var mails = new[] { "[email protected] /cdn-cgi/l/email-protection", "[email protected] /cdn-cgi/l/email-protection" };
var mailto = mails.Aggregate((c, n) => string.Format("{0};{1}", c, n));
var urlEncodedMailTo = WebUtility.UrlEncode(mailto);
var uri = CreateMailToUri(urlEncodedMailTo);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest12()
{
var mails = new[] { "[email protected] /cdn-cgi/l/email-protection", "[email protected] /cdn-cgi/l/email-protection" };
var mailto = mails.Select(WebUtility.UrlEncode).Aggregate((c, n) => string.Format("{0}, {1}", c, n));
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest13()
{
var mails = new[] { "[email protected] /cdn-cgi/l/email-protection", "[email protected] /cdn-cgi/l/email-protection" };
var mailto = mails.Select(WebUtility.UrlEncode).Aggregate((c, n) => string.Format("{0}; {1}", c, n));
var uri = CreateMailToUri(mailto);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest14()
{
var mails = new[] { "[email protected] /cdn-cgi/l/email-protection", "[email protected] /cdn-cgi/l/email-protection" };
var mailto = mails.Aggregate((c, n) => string.Format("{0}, {1}", c, n));
var urlEncodedMailTo = WebUtility.UrlEncode(mailto);
var uri = CreateMailToUri(urlEncodedMailTo);
uri.Should().NotBeNull();
}
[TestMethod]
public void CreateMailToUriTest15()
{
var mails = new[] { "[email protected] /cdn-cgi/l/email-protection", "[email protected] /cdn-cgi/l/email-protection" };
var mailto = mails.Aggregate((c, n) => string.Format("{0}; {1}", c, n));
var urlEncodedMailTo = WebUtility.UrlEncode(mailto);
var uri = CreateMailToUri(urlEncodedMailTo);
uri.Should().NotBeNull();
}
}
使用 Windows 键 + R(运行)输入 mailto:[电子邮件受保护] /cdn-cgi/l/email-protection;[电子邮件受保护] /cdn-cgi/l/email-protection效果很好,我只是无法创建具有多个收件人的 Uri 对象...
根据mailto:协议@msdn http://msdn.microsoft.com/en-us/library/aa767737%28v=vs.85%29.aspx我应该能够对多个收件人使用 mailto 协议。
Syntax
mailto:s地址[s标题]
Tokens
sAddress
One or more valid e-mail addresses separated by a semicolon. You must use Internet-safe characters, such as %20 for the space character.
sHeaders
Optional. One or more name-value pairs. The first pair should be prefixed by a "?" and any additional pairs should be prefixed by a "&". The name can be one of the following strings.
subject
Text to appear in the subject line of the message.
body
Text to appear in the body of the message.
CC
Addresses to be included in the "cc" (carbon copy) section of the message.
BCC
Addresses to be included in the "bcc" (blind carbon copy) section of the message.