using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Mail; using System.Net.Mime; using System.Text; namespace SendGridMail { /// /// Internal object to represent the way in which email may be sent. /// The library supports sending through either SMTP or REST interfaces. /// public enum TransportType { SMTP, REST }; /// /// Represents the basic set of functions that will be called by the user /// includes basic message data manipulation and filter settings /// public interface ISendGrid { #region Properties MailAddress From { get; set; } MailAddress[] To { get; set; } MailAddress[] Cc { get; } MailAddress[] Bcc { get; } MailAddress[] ReplyTo { get; set; } Attachment[] Attachments { get; set; } String Subject { get; set; } Dictionary Headers { get; set; } IHeader Header { get; set; } String Html { get; set; } String Text { get; set; } TransportType Transport { get; set; } #endregion #region Interface for ITransport MailMessage CreateMimeMessage(); #endregion #region Methods for setting data /// /// Set the To address. In this case the input is a single string eg. 'you@company.com' /// /// void AddTo(String address); /// /// Set the To address. In this case the expected input is a list of addresses as strings /// /// void AddTo(IEnumerable addresses); /// /// Set the To address. In this case the expected input is a list of addresses with paramaters. /// The first parameter is a string for the email address. /// The second paramater is a dictionary containing the key, value pairs for a property's name and its value. /// Currently the only value that you can set with the MailAddress data object is the 'DisplayName' field. /// /// void AddTo(IDictionary> addresssInfo); /// /// Add the CC address. In this case the expected input is a single email address eg "you@company.com" /// /// void AddCc(String address); /// /// Set the CC address. In this case the expected input is a list of addresses as strings /// /// void AddCc(IEnumerable addresses); /// /// Set the CC address. In this case the expected input is a list of addresses with paramaters. /// The first parameter is a string for the email address. /// The second paramater is a dictionary containing the key, value pairs for a property's name and its value. /// Currently the only value that you can set with the MailAddress data object is the 'DisplayName' field. /// /// void AddCc(IDictionary> addresssInfo); /// /// Set the Bcc address. Expects a single email as the input eg "you@company.com" /// /// void AddBcc(String address); /// /// Set the Bcc address. Expects a list of emails as an array of strings. /// /// void AddBcc(IEnumerable addresses); /// /// Set the Bcc address. In this case the expected input is a list of addresses with paramaters. /// The first parameter is a string for the email address. /// The second paramater is a dictionary containing the key, value pairs for a property's name and its value. /// Currently the only value that you can set with the MailAddress data object is the 'DisplayName' field. /// /// void AddBcc(IDictionary> addresssInfo); /// /// Sets a list of substitution values for the email. /// the 'tag' parameter is the value in the email that you'll replace eg. '-name-' /// the 'value' parameter is a list of values that will be substituted in for the tag. /// In our example above the list would be something like ['eric', 'tyler', 'cj']. /// The 'value' parameter expects a 1:1 mapping from email addresses to values. /// If you are left with more email addresses then values to substitute then the substitution tag will be left blank. /// /// /// void AddSubVal(String tag, params String[] value); /// /// Add an attachment to the message. /// The 'filePath' paramater expects a fully qualified file path as a string /// /// void AddAttachment(String filePath); /// /// Add an attachment to the message /// The 'attachment' paramater expects an argument of the Attachment type. /// /// void AddAttachment(Attachment attachment); /// /// Add an attachment to the message /// The 'attachment' paramater expects an argument of the Attachment type. /// The 'type' parameter expects an argument of the ContentType type. /// /// /// void AddAttachment(Stream attachment, ContentType type); /// /// GetRecipients returns a list of all the recepients by retrieving the to, cc, and bcc lists. /// /// IEnumerable GetRecipients(); /// /// Add custom headers to the message /// /// key value pairs void AddHeaders(IDictionary headers); #endregion #region SMTP API Functions void DisableGravatar(); void DisableOpenTracking(); void DisableClickTracking(); void DisableSpamCheck(); void DisableUnsubscribe(); void DisableFooter(); void DisableGoogleAnalytics(); void DisableTemplate(); void DisableBcc(); void DisableBypassListManagement(); void EnableGravatar(); void EnableOpenTracking(); void EnableClickTracking(String text = null); void EnableSpamCheck(int score = 5, String url = null); void EnableUnsubscribe(String text, String html, String replace, String url, String landing); void EnableFooter(String text = null, String html = null); void EnableGoogleAnalytics(String source, String medium, String term, String content = null, String campaign = null); void EnableTemplate(String html = null); void EnableBcc(String email = null); void EnableBypassListManagement(); #endregion void Mail(); } }