public IHttpActionResult Email(EmailFriendRequest request)
        {
            var siteRoot = SiteRootContext.Item;

            // VERIFY CAPTCHA
            if (!RecaptchaService.Verify(request.RecaptchaResponse))
            {
                return(Ok(new
                {
                    success = false
                }));
            }

            if (string.IsNullOrWhiteSpace(request.RecipientEmail) ||
                string.IsNullOrWhiteSpace(request.SenderEmail) ||
                string.IsNullOrWhiteSpace(request.SenderName) ||
                string.IsNullOrWhiteSpace(request.ArticleNumber))
            {
                _logger.Warn($"Field is null");
                return(Ok(new
                {
                    success = false
                }));
            }

            //var emailFrom = GetValue(siteRoot?.Email_From_Address);
            var emailFrom = string.Format("{0} <{1}>", siteRoot.Publication_Name, GetValue(siteRoot?.Email_From_Address));
            var allEmails = request.RecipientEmail.Split(';');
            var result    = true;
            var emailBody = GetEmailBody(request.SenderEmail, request.SenderName,
                                         request.ArticleNumber, request.PersonalMessage);

            foreach (var eachEmail in allEmails)
            {
                string specificEmailBody = emailBody
                                           .ReplacePatternCaseInsensitive("#friend_name#", eachEmail)
                                           .ReplacePatternCaseInsensitive("#RECIPIENT_EMAIL#", eachEmail);

                var friendEmail = new Email
                {
                    To         = eachEmail,
                    Subject    = request.ArticleTitle,
                    From       = emailFrom,
                    Body       = specificEmailBody,
                    IsBodyHtml = true
                };

                var isEmailSent = EmailSender.Send(friendEmail);
                if (!isEmailSent)
                {
                    _logger.Warn($"Email sender failed");
                    result = false;
                }
            }
            return(Ok(new
            {
                success = result
            }));
        }
 /// <summary>
 /// <para>Performs the Listing Method:
 /// Send an email regarding an auction to a friend.
 /// </para><para>
 /// Serializes the given EmailFriendRequest into xml.
 /// Creates a query string using the listingId provided .
 /// </para><para>
 /// All the parameters are required.
 /// </para>
 /// REQUIRES AUTHENTICATION.
 /// </summary>
 /// <param name="email">The object that will be serialized into xml and then sent in a POST message.</param>
 /// <param name="listingId">The id of the listing you want to email about.</param>
 /// <returns>XDocument.</returns>
 public XDocument EmailFriend(EmailFriendRequest email, string listingId)
 {
     var query = String.Format(Constants.Culture, "{0}/{1}/emailfriend{2}", Constants.LISTINGS, listingId, Constants.XML);
     return _connection.Post(email, query);
 }
Esempio n. 3
0
        /// <summary>
        /// <para>Performs the Listing Method:
        /// Send an email regarding an auction to a friend.
        /// </para><para>
        /// Serializes the given EmailFriendRequest into xml.
        /// Creates a query string using the listingId provided .
        /// </para><para>
        /// All the parameters are required.
        /// </para>
        /// REQUIRES AUTHENTICATION.
        /// </summary>
        /// <param name="email">The object that will be serialized into xml and then sent in a POST message.</param>
        /// <param name="listingId">The id of the listing you want to email about.</param>
        /// <returns>XDocument.</returns>
        public XDocument EmailFriend(EmailFriendRequest email, string listingId)
        {
            if (_listing == null)
            {
                _listing = new ListingMethods(_connection);
            }

            return _listing.EmailFriend(email, listingId);
        }
Esempio n. 4
0
        /// <summary>
        /// <para>Performs the Listing Method:
        /// Send an email regarding an auction to a friend.
        /// </para><para>
        /// Serializes the given EmailFriendRequest into xml.
        /// Creates a query string using the listingId provided .
        /// </para><para>
        /// All the parameters are required.
        /// </para>
        /// REQUIRES AUTHENTICATION.
        /// </summary>
        /// <param name="email">The object that will be serialized into xml and then sent in a POST message.</param>
        /// <param name="listingId">The id of the listing you want to email about.</param>
        /// <returns>XDocument.</returns>
        public XDocument EmailFriend(EmailFriendRequest email, string listingId)
        {
            var query = String.Format(Constants.Culture, "{0}/{1}/emailfriend{2}", Constants.LISTINGS, listingId, Constants.XML);

            return(_connection.Post(email, query));
        }