/// <summary>
        ///
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        public bool SendThankUForSocialSignUpEmail(Guid guid)
        {
            var user = bringlyEntities.tblUsers.Where(usr => usr.UserGuid == guid && usr.IsDeleted == false).FirstOrDefault();

            if (user == null || user.EmailAddress == null)
            {
                return(false);
            }

            string currentDomainName = string.Empty;

            Utilities.Helper.UtilityHelper.GetHostedDomainName(out currentDomainName);
            string      imgSrc      = CommonDomainLogic.GetCurrentDomain + CommonDomainLogic.GetImagePath(ImageType.User, "bringlylogoemail.png");
            EmailDomain emailDomain = new EmailDomain();

            emailDomain.EmailTo   = user.EmailAddress;
            emailDomain.EmailFrom = ConfigurationManager.AppSettings["EmailFrom"];
            tblEmailTemplate Template = bringlyEntities.tblEmailTemplates.Where(x => x.TemplateType == "ThankYouSocialSignUp").FirstOrDefault();

            if (Template == null)
            {
                return(false);
            }

            emailDomain.EmailSubject = Template.Subject;
            emailDomain.EmailBody    = Template.Body.Replace("{ToName}", user.FullName).Replace("{hostUrl}", currentDomainName).Replace("{logoUrl}", currentDomainName + "/Templates/images/bringlylogoemail.png");
            string emailSendResult = EmailSender.sendEmail(emailDomain);

            if (!string.IsNullOrEmpty(emailSendResult))
            {
                ErrorLog.LogError(emailSendResult, "send email Error");
                return(false);
            }
            return(true);
        }
 public static EmailDto MapToDtoModel(this EmailDomain email)
 {
     return(new EmailDto
     {
         Id = email.Id,
         Received = email.Received,
         NumberOfAttachments = email.NumberOfAttachments,
         SenderEmail = email.SenderEmail,
         SenderName = email.SenderName,
         Status = email.Status,
         Subject = email.Subject,
         Body = email.Body,
         ToCurrentStatus = email.ToCurrentStatus,
         GmailMessageId = email.GmailMessageId,
         Attachments = email.Attachments.Select(e => e.MapToDtoModel()).ToList()
     });
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="emailAddress"></param>
        /// <returns></returns>
        public bool SendUserPassword(string emailAddress)
        {
            bool isPasswordSent = false;
            var  user           = bringlyEntities.tblUsers.Where(usr => usr.IsDeleted == false && usr.IsVerified == true && usr.EmailAddress == emailAddress).FirstOrDefault();

            if (user == null)
            {
                return(isPasswordSent);
            }

            string password = EncryptionHelper.DecryptText(user.Password, user.EmailAddress);

            if (string.IsNullOrEmpty(password))
            {
                return(false);
            }

            EmailDomain emailDomain = new EmailDomain();

            emailDomain.EmailTo   = user.EmailAddress;
            emailDomain.EmailFrom = ConfigurationManager.AppSettings["EmailFrom"];
            tblEmailTemplate Template = bringlyEntities.tblEmailTemplates.Where(x => x.TemplateType == "ForgetPassword").FirstOrDefault();

            if (Template == null)
            {
                return(false);
            }

            emailDomain.EmailSubject = Template.Subject;
            emailDomain.EmailBody    = Template.Body.Replace("{ToName}", user.FullName).Replace("{username}", user.EmailAddress).Replace("{password}", password);
            string emailSendResult = EmailSender.sendEmail(emailDomain);

            if (!string.IsNullOrEmpty(emailSendResult))
            {
                ErrorLog.LogError(emailSendResult, "send email Error");
                return(false);
            }
            return(true);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        public bool SendUserVerificationConfirmationEmail(Guid guid)
        {
            var user = bringlyEntities.tblUsers.Where(usr => usr.UserGuid == guid && usr.IsDeleted == false && usr.IsVerified != true).FirstOrDefault();

            if (user == null || user.EmailAddress == null)
            {
                return(false);
            }
            string currentDomainName = string.Empty;

            Utilities.Helper.UtilityHelper.GetHostedDomainName(out currentDomainName);
            var         confirmUrl  = currentDomainName + "/home/verification/" + user.UserGuid;
            EmailDomain emailDomain = new EmailDomain();

            emailDomain.EmailTo   = user.EmailAddress;
            emailDomain.EmailFrom = ConfigurationManager.AppSettings["EmailFrom"];
            tblEmailTemplate Template = bringlyEntities.tblEmailTemplates.Where(x => x.TemplateType == "UserVerification").FirstOrDefault();

            if (Template == null)
            {
                return(false);
            }

            emailDomain.EmailSubject = Template.Subject;
            emailDomain.EmailBody    = Template.Body.Replace("{ToName}", user.FullName).Replace("{hostUrl}", currentDomainName).Replace("{confirmUrl}", confirmUrl).Replace("{logoUrl}", currentDomainName + "/Templates/images/bringlylogoemail.png");
            string emailSendResult = EmailSender.sendEmail(emailDomain);

            if (!string.IsNullOrEmpty(emailSendResult))
            {
                ErrorLog.LogError(emailSendResult, "send email Error");
                return(false);
            }
            else
            {
                return(true);
            }
        }
 /// <summary>
 /// Create or update domain
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='apiVersion'>
 /// </param>
 /// <param name='account'>
 /// Name of CEF account
 /// </param>
 /// <param name='domain'>
 /// Domain name
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <EmailDomain> CreateOrUpdateDomainAsync(this IEmailOperations operations, string apiVersion, string account, EmailDomain domain, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CreateOrUpdateDomainWithHttpMessagesAsync(apiVersion, account, domain, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
 /// <summary>
 /// Create or update domain
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='apiVersion'>
 /// </param>
 /// <param name='account'>
 /// Name of CEF account
 /// </param>
 /// <param name='domain'>
 /// Domain name
 /// </param>
 public static EmailDomain CreateOrUpdateDomain(this IEmailOperations operations, string apiVersion, string account, EmailDomain domain)
 {
     return(operations.CreateOrUpdateDomainAsync(apiVersion, account, domain).GetAwaiter().GetResult());
 }
        /// <remarks>
        /// Autogenerated by "Quick Actions and Refactoring" -> "Generate Equals and GetHashCode".
        /// </remarks>
        public override int GetHashCode()
        {
            var hashCode = -1334890813;

            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(EmailDomain.ToLowerInvariant());

            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(TenantId.ToLowerInvariant());

            return(hashCode);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="composeEmail"></param>
        /// <returns></returns>
        public bool SendContactUsMessage(ComposeEmail composeEmail)
        {
            var admin = bringlyEntities.tblUsers
                        .Where(usr => usr.IsActive == true && usr.IsDeleted == false && usr.UserRegistrationType == 3)
                        .Select(usr => usr)
                        .FirstOrDefault();

            EmailDomain emailDomain = new EmailDomain();

            emailDomain.EmailTo   = admin.EmailAddress;
            emailDomain.EmailFrom = composeEmail.EmailMessage.EmailFrom;
            tblEmailTemplate Template = bringlyEntities.tblEmailTemplates.Where(x => x.TemplateType == "ContactUsAdmin").FirstOrDefault();

            if (Template == null)
            {
                return(false);
            }

            emailDomain.EmailSubject = composeEmail.EmailMessage.Subject;
            emailDomain.EmailBody    = Template.Body.Replace("{ToName}", admin.FullName).Replace("{message}", composeEmail.EmailMessage.Body).Replace("{EmailFrom}", composeEmail.EmailMessage.FromName);
            string emailSendResult = EmailSender.sendEmail(emailDomain);

            if (!string.IsNullOrEmpty(emailSendResult))
            {
                ErrorLog.LogError(emailSendResult, "send email Error");
                return(false);
            }
            tblEmail tblEmail = new tblEmail();

            tblEmail.EmailGuid       = Guid.NewGuid();
            tblEmail.EmailFrom       = composeEmail.EmailMessage.EmailFrom;
            tblEmail.Subject         = composeEmail.EmailMessage.Subject;
            tblEmail.Body            = composeEmail.EmailMessage.Body;
            tblEmail.Sent            = (emailSendResult == "") ? true : false;
            tblEmail.FK_TemplateGuid = Template.TemplateGuid;
            tblEmail.DateCreated     = DateTime.Now;
            // tblEmail.FK_CreatedByGuid = UserVariables.LoggedInUserGuid;
            bringlyEntities.tblEmails.Add(tblEmail);
            if (tblEmail.Sent)
            {
                tblEmailTo tblEmailTo = new tblEmailTo();

                tblEmailTo.EmailToGuid  = Guid.NewGuid();
                tblEmailTo.FK_EmailGuid = tblEmail.EmailGuid;
                tblEmailTo.EmailTo      = emailDomain.EmailTo;
                // tblEmailTo.FK_UserGuid = admin.UserGuid;
                bringlyEntities.tblEmailToes.Add(tblEmailTo);
            }
            bringlyEntities.SaveChanges();

            emailDomain           = new EmailDomain();
            emailDomain.EmailTo   = composeEmail.EmailMessage.EmailFrom;
            emailDomain.EmailFrom = admin.EmailAddress;
            Template = bringlyEntities.tblEmailTemplates.Where(x => x.TemplateType == "ContactUsThankYou").FirstOrDefault();

            if (Template == null)
            {
                return(false);
            }

            emailDomain.EmailSubject = Template.Subject;
            emailDomain.EmailBody    = Template.Body.Replace("{ToName}", composeEmail.EmailMessage.FromName);
            emailSendResult          = EmailSender.sendEmail(emailDomain);
            if (!string.IsNullOrEmpty(emailSendResult))
            {
                ErrorLog.LogError(emailSendResult, "send email Error");
                return(false);
            }

            tblEmail                 = new tblEmail();
            tblEmail.EmailGuid       = Guid.NewGuid();
            tblEmail.EmailFrom       = admin.EmailAddress;
            tblEmail.Subject         = emailDomain.EmailSubject;
            tblEmail.Body            = emailDomain.EmailBody;
            tblEmail.Sent            = (emailSendResult == "") ? true : false;
            tblEmail.FK_TemplateGuid = Template.TemplateGuid;
            tblEmail.DateCreated     = DateTime.Now;
            // tblEmail.FK_CreatedByGuid = UserVariables.LoggedInUserGuid;
            bringlyEntities.tblEmails.Add(tblEmail);
            if (tblEmail.Sent)
            {
                tblEmailTo tblEmailTo = new tblEmailTo();

                tblEmailTo.EmailToGuid  = Guid.NewGuid();
                tblEmailTo.FK_EmailGuid = tblEmail.EmailGuid;
                tblEmailTo.EmailTo      = emailDomain.EmailTo;
                //  tblEmailTo.FK_UserGuid = admin.UserGuid;
                bringlyEntities.tblEmailToes.Add(tblEmailTo);
            }
            bringlyEntities.SaveChanges();

            return(true);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="ComposeEmail"></param>
        /// <returns></returns>
        public bool SendEmail(ComposeEmail ComposeEmail)
        {
            EmailDomain      EmailDomain   = new EmailDomain();
            tblUser          userfrom      = bringlyEntities.tblUsers.Where(x => x.UserGuid == UserVariables.LoggedInUserGuid).ToList().FirstOrDefault();
            tblEmailTemplate template      = new tblEmailTemplate();
            BusinessObject   tblBusiness   = new BusinessObject();
            string           image         = "<img src = " + CommonDomainLogic.GetCurrentDomain + CommonDomainLogic.GetImagePath(ImageType.Default, "") + ">";
            string           UserImageName = userfrom.ImageName;
            int count = 0;

            if (ComposeEmail.EmailToGuid != null && ComposeEmail.EmailToGuid.Count() > 0)
            {
                foreach (string usertoguid in ComposeEmail.EmailToGuid)
                {
                    tblUser userto = bringlyEntities.tblUsers.Where(x => x.UserGuid == new Guid(usertoguid)).ToList().FirstOrDefault();
                    EmailDomain.EmailTo = userto.EmailAddress;
                    template            = !string.IsNullOrEmpty(ComposeEmail.EmailMessage.TemplateType) ? bringlyEntities.tblEmailTemplates
                                          .Where(x => x.TemplateType == ComposeEmail.EmailMessage.TemplateType).ToList().FirstOrDefault() : new tblEmailTemplate();
                    if (template != null && template.TemplateGuid != null && template.TemplateGuid != Guid.Empty)
                    {
                        EmailDomain.EmailFrom    = userfrom.EmailAddress;
                        EmailDomain.EmailSubject = ComposeEmail.EmailMessage.Subject;
                        if (!ComposeEmail.Isemailreplyorforward)
                        {
                            tblBusiness = bringlyEntities.tblBusinesses.Where(x => x.FK_CreatedByGuid == UserVariables.LoggedInUserGuid).
                                          Select(s => new BusinessObject {
                                BusinessImage = s.BusinessImage, BusinessName = s.BusinessName
                            }).ToList().FirstOrDefault();
                            EmailDomain.EmailBody = template.Body;
                            EmailDomain.EmailBody = EmailDomain.EmailBody.Replace("{ToName}", userto.FullName).Replace("{Description}", ComposeEmail.EmailMessage.Body)
                                                    .Replace("{FromName}", userfrom.FullName);
                        }
                        else
                        {
                            EmailDomain.EmailBody = ComposeEmail.EmailMessage.Body;
                        }

                        string emailSendResult = EmailSender.sendEmail(EmailDomain);
                        if (!string.IsNullOrEmpty(emailSendResult))
                        {
                            ErrorLog.LogError(emailSendResult, "send email Error");
                        }

                        tblEmail tblEmail = new tblEmail();
                        tblEmail.EmailGuid        = Guid.NewGuid();
                        tblEmail.EmailFrom        = EmailDomain.EmailFrom;
                        tblEmail.Subject          = EmailDomain.EmailSubject;
                        tblEmail.Body             = EmailDomain.EmailBody;
                        tblEmail.Sent             = (emailSendResult == "") ? true : false;
                        tblEmail.FK_TemplateGuid  = template.TemplateGuid;
                        tblEmail.DateCreated      = DateTime.Now;
                        tblEmail.FK_CreatedByGuid = UserVariables.LoggedInUserGuid;
                        bringlyEntities.tblEmails.Add(tblEmail);
                        if (tblEmail.Sent)
                        {
                            tblEmailTo tblEmailTo = new tblEmailTo();

                            tblEmailTo.EmailToGuid  = Guid.NewGuid();
                            tblEmailTo.FK_EmailGuid = tblEmail.EmailGuid;
                            tblEmailTo.EmailTo      = EmailDomain.EmailTo;
                            tblEmailTo.FK_UserGuid  = new Guid(usertoguid);// new Guid(usertoguid);
                            bringlyEntities.tblEmailToes.Add(tblEmailTo);
                        }
                        bringlyEntities.SaveChanges();
                        count = count + ((emailSendResult == "") ? 0 : 1);
                    }
                }
            }
            else
            {
                count++;
            }

            if (count > 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Esempio n. 10
0
        public static string sendEmail(EmailDomain emailEntity)
        {
            SmtpClient  smtp     = new SmtpClient(emailEntity.Host, emailEntity.Port);
            MailMessage sendMail = new MailMessage();

            try
            {
                //if (emailEntity == null) throw new ArgumentException("EmailDomain cannot be null", "emailEntity");
                //if (emailEntity.EmailTo == null && emailEntity.ListOfMultpleEmailTo == null) throw new ArgumentException("emailTo cannot be null", "emailEntity");
                if (string.IsNullOrEmpty(emailEntity.EmailTo) && emailEntity.ListOfMultpleEmailTo == null)
                {
                    throw new ArgumentException("emailTo cannot be empty", "emailEntity");
                }


                #region Email To
                if (!string.IsNullOrEmpty(emailEntity.EmailTo))
                {
                    sendMail.To.Add(!string.IsNullOrWhiteSpace(emailEntity.EmailToName)
                        ? new MailAddress(emailEntity.EmailTo, emailEntity.EmailToName.Trim())
                        : new MailAddress(emailEntity.EmailTo));
                }

                if (emailEntity.ListOfMultpleEmailTo != null)
                {
                    foreach (var emailTo in emailEntity.ListOfMultpleEmailTo)
                    {
                        sendMail.To.Add(!string.IsNullOrWhiteSpace(emailTo.Value)
                       ? new MailAddress(emailTo.Key, emailTo.Value.Trim())
                       : new MailAddress(emailTo.Key));
                    }
                }


                #endregion

                #region Email From
                sendMail.From = !string.IsNullOrWhiteSpace(emailEntity.EmailFromName) ? new MailAddress(emailEntity.EmailFrom, emailEntity.EmailFromName.Trim()) : new MailAddress(emailEntity.EmailFrom);
                #endregion

                #region Email CC
                if (!string.IsNullOrWhiteSpace(emailEntity.EmailCc))
                {
                    sendMail.CC.Add(!string.IsNullOrWhiteSpace(emailEntity.EmailCcName)
                        ? new MailAddress(emailEntity.EmailCc, emailEntity.EmailCcName.Trim())
                        : new MailAddress(emailEntity.EmailCc));
                }
                if (emailEntity.ListOfMultipleEmailCc != null)
                {
                    foreach (var emailCc in emailEntity.ListOfMultipleEmailCc)
                    {
                        sendMail.CC.Add(!string.IsNullOrWhiteSpace(emailCc.Value)
                       ? new MailAddress(emailCc.Key, emailCc.Value.Trim())
                       : new MailAddress(emailCc.Key));
                    }
                }
                #endregion

                #region Email BCC
                if (!string.IsNullOrWhiteSpace(emailEntity.EmailBcc))
                {
                    sendMail.Bcc.Add(!string.IsNullOrWhiteSpace(emailEntity.EmailBccName)
                        ? new MailAddress(emailEntity.EmailBcc, emailEntity.EmailBccName.Trim())
                        : new MailAddress(emailEntity.EmailBcc));
                }
                #endregion

                #region Reply
                if (!string.IsNullOrWhiteSpace(emailEntity.EmailReply))
                {
                    sendMail.ReplyToList.Add(!string.IsNullOrWhiteSpace(emailEntity.EmailReplyName)
                       ? new MailAddress(emailEntity.EmailReply, emailEntity.EmailReplyName.Trim())
                       : new MailAddress(emailEntity.EmailReply));
                }
                #endregion

                if (!string.IsNullOrEmpty(emailEntity.EmailSubject) && !string.IsNullOrWhiteSpace(emailEntity.EmailSubject))
                {
                    sendMail.Subject = emailEntity.EmailSubject.Replace('\r', ' ').Replace('\n', ' ');
                }
                sendMail.Body = emailEntity.EmailBody;

                sendMail.IsBodyHtml = !emailEntity.IsBodyHtml.HasValue || Convert.ToBoolean(emailEntity.IsBodyHtml);

                if (!emailEntity.MailPriority.HasValue)
                {
                    sendMail.Priority = MailPriority.Normal;
                }
                else if (emailEntity.MailPriority == EmailMailPriority.High)
                {
                    sendMail.Priority = MailPriority.High;
                }
                else if (emailEntity.MailPriority == EmailMailPriority.Low)
                {
                    sendMail.Priority = MailPriority.Low;
                }
                else if (emailEntity.MailPriority == EmailMailPriority.Normal)
                {
                    sendMail.Priority = MailPriority.Normal;
                }

                #region Adding Attachments
                if (emailEntity.Attachments != null && emailEntity.Attachments.Count > 0)
                {
                    Attachment attachment;
                    foreach (DictionaryEntry entry in emailEntity.Attachments)
                    {
                        string fullPath = entry.Value.ToString();
                        string fileName = RemoveIllegalCharactersInPath(entry.Key.ToString());
                        if (File.Exists(fullPath))
                        {
                            attachment = new Attachment(fullPath, MediaTypeNames.Application.Octet);

                            ContentDisposition disposition = attachment.ContentDisposition;
                            disposition.CreationDate     = File.GetCreationTime(fullPath);
                            disposition.ModificationDate = File.GetLastWriteTime(fullPath);
                            disposition.ReadDate         = File.GetLastAccessTime(fullPath);
                            disposition.FileName         = Path.GetFileName(fileName);
                            disposition.Size             = new FileInfo(fullPath).Length;
                            disposition.DispositionType  = DispositionTypeNames.Attachment;
                            sendMail.Attachments.Add(attachment);
                        }
                    }
                }
                if (emailEntity.ListOfAttachments != null && emailEntity.ListOfAttachments.Count > 0)
                {
                    foreach (var item in emailEntity.ListOfAttachments)
                    {
                        string fullPath = item.Value;
                        string fileName = RemoveIllegalCharactersInPath(item.Key.ToString(CultureInfo.InvariantCulture));
                        if (File.Exists(fullPath))
                        {
                            Attachment attachment = new Attachment(fullPath, MediaTypeNames.Application.Octet);

                            ContentDisposition disposition = attachment.ContentDisposition;
                            disposition.CreationDate     = File.GetCreationTime(fullPath);
                            disposition.ModificationDate = File.GetLastWriteTime(fullPath);
                            disposition.ReadDate         = File.GetLastAccessTime(fullPath);
                            disposition.FileName         = Path.GetFileName(fileName);
                            disposition.Size             = new FileInfo(fullPath).Length;
                            disposition.DispositionType  = DispositionTypeNames.Attachment;
                            sendMail.Attachments.Add(attachment);
                        }
                    }
                }
                #endregion

                #region Adding Network Credential
                if (emailEntity.HasNetworkCredential)
                {
                    smtp.Credentials = new System.Net.NetworkCredential(emailEntity.NetworkCredentialUserName, emailEntity.NetworkCredentialPassword);
                    smtp.EnableSsl   = emailEntity.EnableSsl;
                }
                #endregion

                smtp.Port = emailEntity.Port;
                smtp.Host = emailEntity.Host;
                //smtp.Timeout = 1000000000;
                if (!emailEntity.CanSendEmail)
                {
                    emailEntity.EmailNotSentError = "Email not send as property 'CanSendEmail' is set to false.";
                    emailEntity.IsEmailSent       = false;
                    return(emailEntity.EmailNotSentError);
                }
                else
                {
                    smtp.Send(sendMail);
                }
                emailEntity.IsEmailSent = true;
                return("");
            }
            catch (Exception ex)
            {
                emailEntity.IsEmailSent = false;
                return(emailEntity.EmailNotSentError = Convert.ToString(ex.Message) + " \n " + Convert.ToString(ex.InnerException) + "\n stack trace: " + ex.StackTrace);
            }
            finally
            {
                if (smtp != null)
                {
                    smtp.Dispose();
                }
                if (sendMail != null)
                {
                    sendMail.Dispose();
                }
            }
        }