Files
linux-packaging-mono/external/aspnetwebstack/src/Microsoft.Web.Mvc/MailToExtensions.cs
Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

107 lines
4.3 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Web.Mvc;
namespace Microsoft.Web.Mvc
{
[SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "MailTo", Justification = "This is correctly cased.")]
public static class MailToExtensions
{
public static MvcHtmlString Mailto(this HtmlHelper helper, string linkText, string emailAddress)
{
return Mailto(helper, linkText, emailAddress, null, null, null, null, null);
}
public static MvcHtmlString Mailto(this HtmlHelper helper, string linkText, string emailAddress, object htmlAttributes)
{
return Mailto(helper, linkText, emailAddress, null, null, null, null, htmlAttributes);
}
public static MvcHtmlString Mailto(this HtmlHelper helper, string linkText, string emailAddress, IDictionary<string, object> htmlAttributes)
{
return Mailto(helper, linkText, emailAddress, null, null, null, null, htmlAttributes);
}
public static MvcHtmlString Mailto(this HtmlHelper helper, string linkText, string emailAddress, string subject)
{
return Mailto(helper, linkText, emailAddress, subject, null, null, null, null);
}
public static MvcHtmlString Mailto(this HtmlHelper helper, string linkText, string emailAddress, string subject, object htmlAttributes)
{
return Mailto(helper, linkText, emailAddress, subject, null, null, null, htmlAttributes);
}
public static MvcHtmlString Mailto(this HtmlHelper helper, string linkText, string emailAddress, string subject, IDictionary<string, object> htmlAttributes)
{
return Mailto(helper, linkText, emailAddress, subject, null, null, null, htmlAttributes);
}
public static MvcHtmlString Mailto(this HtmlHelper helper, string linkText, string emailAddress, string subject, string body, string cc, string bcc, object htmlAttributes)
{
return Mailto(helper, linkText, emailAddress, subject, body, cc, bcc, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
}
public static MvcHtmlString Mailto(this HtmlHelper helper, string linkText, string emailAddress, string subject,
string body, string cc, string bcc, IDictionary<string, object> htmlAttributes)
{
if (emailAddress == null)
{
throw new ArgumentNullException("emailAddress"); // TODO: Resource message
}
if (linkText == null)
{
throw new ArgumentNullException("linkText"); // TODO: Resource message
}
string mailToUrl = "mailto:" + emailAddress;
List<string> mailQuery = new List<string>();
if (!String.IsNullOrEmpty(subject))
{
mailQuery.Add("subject=" + helper.Encode(subject));
}
if (!String.IsNullOrEmpty(cc))
{
mailQuery.Add("cc=" + helper.Encode(cc));
}
if (!String.IsNullOrEmpty(bcc))
{
mailQuery.Add("bcc=" + helper.Encode(bcc));
}
if (!String.IsNullOrEmpty(body))
{
string encodedBody = helper.Encode(body);
encodedBody = encodedBody.Replace(Environment.NewLine, "%0A");
mailQuery.Add("body=" + encodedBody);
}
string query = String.Empty;
for (int i = 0; i < mailQuery.Count; i++)
{
query += mailQuery[i];
if (i < mailQuery.Count - 1)
{
query += "&";
}
}
if (query.Length > 0)
{
mailToUrl += "?" + query;
}
TagBuilder mailtoAnchor = new TagBuilder("a");
mailtoAnchor.MergeAttribute("href", mailToUrl);
mailtoAnchor.MergeAttributes(htmlAttributes, true);
mailtoAnchor.InnerHtml = linkText;
return MvcHtmlString.Create(mailtoAnchor.ToString());
}
}
}