c# - Unable to create a new mail with multiple recipients with mailto uri -
i using creating windows 8.1 store app in winrt
.
i unable create new mail multiple recipients mailto uri separating each email either comma or semi colon, both gives me same error.
invalid uri: hostname not parsed.
the mailto strings looks this
"mailto:username@mail.com,username2@mail.com" "mailto:username@mail.com,username2@mail.com," "mailto:username@mail.com, username2@mail.com" "mailto:username@mail.com;username2@mail.com" "mailto:username@mail.com;username2@mail.com;" "mailto:username@mail.com; username2@mail.com"
i have tried these variants give me same error when newing uri, this.
var uri = new uri(string.format("mailto:{0}", mails));
i have no idea doing wrong, or in case not implemented why wouldn't be?
i created few unit tests see if variations work, no..
[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 = "username@mail.com"; var uri = createmailtouri(mailto); uri.should().notbenull(); } [testmethod] public void createmailtouritest2() { const string mailto = "username@mail.com,username2@mail.com"; var uri = createmailtouri(mailto); uri.should().notbenull(); } [testmethod] public void createmailtouritest3() { const string mailto = "username@mail.com,username2@mail.com,"; var uri = createmailtouri(mailto); uri.should().notbenull(); } [testmethod] public void createmailtouritest4() { const string mailto = "username@mail.com;username2@mail.com"; var uri = createmailtouri(mailto); uri.should().notbenull(); } [testmethod] public void createmailtouritest5() { const string mailto = "username@mail.com;username2@mail.com;"; var uri = createmailtouri(mailto); uri.should().notbenull(); } [testmethod] public void createmailtouritest6() { const string mailto = "username@mail.com, username2@mail.com"; var uri = createmailtouri(mailto); uri.should().notbenull(); } [testmethod] public void createmailtouritest7() { const string mailto = "username@mail.com; username2@mail.com"; var uri = createmailtouri(mailto); uri.should().notbenull(); } [testmethod] public void createmailtouritest8() { var mails = new[] { "username@mail.com", "username2@mail.com"}; 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[] { "username@mail.com", "username2@mail.com" }; 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[] { "username@mail.com", "username2@mail.com" }; 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[] { "username@mail.com", "username2@mail.com" }; 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[] { "username@mail.com", "username2@mail.com" }; 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[] { "username@mail.com", "username2@mail.com" }; 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[] { "username@mail.com", "username2@mail.com" }; 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[] { "username@mail.com", "username2@mail.com" }; var mailto = mails.aggregate((c, n) => string.format("{0}; {1}", c, n)); var urlencodedmailto = webutility.urlencode(mailto); var uri = createmailtouri(urlencodedmailto); uri.should().notbenull(); } }
with windows key + r (run) typing in mailto:username@mail.com;username2@mail.com works great, i'm not able create uri object multiple recipients...
according mailto:protocol @ msdn should able use mailto protocol multiple recipients.
syntax
mailto:saddress[sheaders]
tokens
saddress 1 or more valid e-mail addresses separated semicolon. must use internet-safe characters, such %20 space character. sheaders optional. 1 or more name-value pairs. first pair should prefixed "?" , additional pairs should prefixed "&". name can 1 of following strings. subject text appear in subject line of message. body text appear in body of message. cc addresses included in "cc" (carbon copy) section of message. bcc addresses included in "bcc" (blind carbon copy) section of message.
there hack, using hyperlinkbutton
(sorry, dirty hack) :
- load
hyperlinkbutton
usingxamlreader
, - retrieve
automationpeer
, launch click
var uristring = "mailto:username@mail.com,username2@mail.com"; string xamlstring = "<hyperlinkbutton " + "xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" " + "navigateuri=\"" + uristring + "\"/>"; var c = (hyperlinkbutton)xamlreader.load(xamlstring); new hyperlinkbuttonautomationpeer(c).invoke();
Comments
Post a Comment