コード例 #1
0
        /// <summary>
        /// Sends an email via the CakeMail API, based on the provided settings
        /// </summary>
        /// <param name="context">The Cake Context</param>
        /// <param name="senderName">The name of the person sending the email</param>
        /// <param name="senderAddress">The email address of the person sending the email</param>
        /// <param name="recipientAddress">The email address of the person who will recieve the email</param>
        /// <param name="subject">The subject line of the email</param>
        /// <param name="htmlContent">The HTML content</param>
        /// <param name="textContent">The text content</param>
        /// <param name="settings">The settings to be used when sending the email</param>
        /// <returns>An instance of <see cref="CakeMailResult"/> indicating success/failure</returns>
        internal static CakeMailResult SendEmail(this ICakeContext context, string senderName, string senderAddress, string recipientAddress, string subject, string htmlContent, string textContent, CakeMailSettings settings)
        {
            try
            {
                var cakeMail = new CakeMailRestClient(settings.ApiKey);

                var loginInfo = cakeMail.Users.LoginAsync(settings.UserName, settings.Password).Result;
                var userKey   = loginInfo.UserKey;

                context.Verbose("Sending email to {0} via the CakeMail API...", recipientAddress);

                cakeMail.Relays.SendWithoutTrackingAsync(userKey, recipientAddress, subject, htmlContent, textContent, senderAddress, senderName).Wait();

                return(new CakeMailResult(true, DateTime.UtcNow.ToString("u"), string.Empty));
            }
            catch (Exception e)
            {
                if (settings.ThrowOnFail.HasValue && settings.ThrowOnFail.Value)
                {
                    throw new CakeException(e.Message);
                }
                else
                {
                    return(new CakeMailResult(false, DateTime.UtcNow.ToString("u"), e.Message));
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Sends an email via the CakeMail API, based on the provided settings
        /// </summary>
        /// <param name="context">The Cake Context</param>
        /// <param name="senderName">The name of the person sending the email</param>
        /// <param name="senderAddress">The email address of the person sending the email</param>
        /// <param name="recipientAddresses">The email addresses of the recipients who will recieve the email</param>
        /// <param name="subject">The subject line of the email</param>
        /// <param name="htmlContent">The HTML content</param>
        /// <param name="textContent">The text content</param>
        /// <param name="settings">The settings to be used when sending the email</param>
        /// <returns>An instance of <see cref="CakeMailResult"/> indicating success/failure</returns>
        internal static CakeMailResult SendEmail(this ICakeContext context, string senderName, string senderAddress, IEnumerable <string> recipientAddresses, string subject, string htmlContent, string textContent, CakeMailSettings settings)
        {
            try
            {
                var cakeMail = new CakeMailRestClient(settings.ApiKey);

                var loginInfo = cakeMail.Users.LoginAsync(settings.UserName, settings.Password).Result;
                var userKey   = loginInfo.UserKey;

                foreach (var recipientAddress in recipientAddresses.Where(r => !string.IsNullOrWhiteSpace(r)))
                {
                    // CakeMail does not support sending a relay to multiple recipients, therefore we must send one email to each recipient
                    context.Verbose("Sending email to {0} via the CakeMail API...", recipientAddresses.First());
                    cakeMail.Relays.SendWithoutTrackingAsync(userKey, recipientAddress, subject, htmlContent, textContent, senderAddress, senderName).Wait();
                }

                return(new CakeMailResult(true, DateTime.UtcNow.ToString("u"), string.Empty));
            }
            catch (Exception e)
            {
                while (e.InnerException != null)
                {
                    e = e.InnerException;
                }

                if (settings.ThrowOnFail.HasValue && settings.ThrowOnFail.Value)
                {
                    throw new CakeException(e.Message);
                }
                else
                {
                    return(new CakeMailResult(false, DateTime.UtcNow.ToString("u"), e.Message));
                }
            }
        }