Использование С#, .net 4.0
Я использую HttpUtility.ParseQueryString для анализа URI mailto, как таковой:
MailMessage message = new MailMessage();
NameValueCollection mailTo = System.Web.HttpUtility.ParseQueryString(mailToUri.OriginalString.Split('?')[1]);
message.Subject = mailTo["subject"];
URI может иметь несколько параметров "to", например:
mailto://[email protected]&[email protected]&[email protected]&subject=test&body=this%20should%20be%20the%20body"
При выполнении кода я вижу, что ParseQueryString создает коллекцию mailTo["to"] NameValueCollection, содержащую один ключ "to" с несколькими значениями, который выглядит как объект типа System.Collections.Specialized.NameObjectCollectionBase.NameObjectEntry.
Я уверен, что упускаю что-то простое. Я не смог понять, как перебирать эту коллекцию и получать каждое отдельное значение. Я бы искал что-то вроде этого, что явно не работает:
foreach (String address in mailTo["to"])
{
message.To.Add(new MailAddress(address));
}
Кроме того, если вы знаете лучший способ перейти от mailto URI к SMTP-сообщению, я весь в глаза.