Exemplo n.º 1
0
        /// <summary>
        /// InstanceSendClient
        /// ModifiedBy: HaiHM
        /// ModifiedDate: 21/5/2019
        /// Content: Comment 2 Line: config.UserName = config.UserName; config.Password = config.Password; And Add 2 line under
        /// </summary>
        /// <returns></returns>
        public static SmtpClient InstanceSendClient()
        {
            if (smtpClient == null)
            {
                TblEmailConfigs config = db.TblEmailConfigs.Where(mail => mail.CreatedBy == "HaiHM").FirstOrDefault();
                smtpClient       = new SmtpClient();
                config.ServerGet = config.ServerGet;
                config.PortGet   = config.PortGet;
                config.UserName  = config.UserName;
                config.Password  = config.Password;

                try
                {
                    var credential = new NetworkCredential
                    {
                        UserName = config.UserName,
                        Password = config.Password
                    };

                    smtpClient.Credentials = credential;
                    smtpClient.Host        = config.ServerPush;
                    smtpClient.Port        = int.Parse(config.PortPush);
                    smtpClient.EnableSsl   = true;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            return(smtpClient);
        }
Exemplo n.º 2
0
        public object SendEmailAsync(TblRecieveEmail objSendEmail)
        {
            var             response    = new { Code = 0 };
            string          errorEmail  = "";
            TblEmailConfigs emailConfig = db.TblEmailConfigs.FirstOrDefault <TblEmailConfigs>();

            #region add list to send email
            List <TblRecieveEmail> lstRecieveEmail = new List <TblRecieveEmail>();
            lstRecieveEmail.Add(new TblRecieveEmail()
            {
                From           = emailConfig.UserName,
                To             = objSendEmail.To,
                Bcc            = objSendEmail.Bcc,
                Cc             = objSendEmail.Cc,
                Subject        = objSendEmail.Subject,
                SendDate       = objSendEmail.SendDate,
                EmailContents  = objSendEmail.EmailContents,
                IsDelete       = objSendEmail.IsDelete,
                CreateBy       = objSendEmail.CreateBy,
                UserId         = objSendEmail.UserId,
                OrganizationId = objSendEmail.OrganizationId,
                StepStatus     = objSendEmail.StepStatus,
                StatusEmail    = objSendEmail.StatusEmail,
                IsConfirm      = objSendEmail.IsConfirm,
                AttachFile     = objSendEmail.AttachFile,
                CreateDate     = DateTime.Now,
            });
            #endregion
            try
            {
                SmtpClient client  = CommonFunction.InstanceSendClient();
                string[]   emailCC = objSendEmail.Cc != null?objSendEmail.Cc.Split(';') : null;

                using (var emailMessage = new MailMessage())
                {
                    emailMessage.To.Add(new MailAddress(objSendEmail.To));
                    if (emailCC != null)
                    {
                        foreach (var item in emailCC)
                        {
                            if (!string.IsNullOrEmpty(item))
                            {
                                emailMessage.CC.Add(new MailAddress(item));
                            }
                        }
                    }

                    emailMessage.From    = new MailAddress(emailConfig.UserName);
                    emailMessage.Subject = objSendEmail.Subject;
                    //Models.Common.CommonFunction.strDomainCV +
                    string imgUrl = AccountManagement.Common.CommonFunction.strDomainCV + emailConfig.Signature;
                    string img    = "<p></br><img src='" + imgUrl + "'></img></p>";
                    emailMessage.Body       = objSendEmail.EmailContents + img;
                    emailMessage.IsBodyHtml = true;

                    if (!string.IsNullOrEmpty(objSendEmail.AttachFile))
                    {
                        string[] attached = objSendEmail.AttachFile.Split(';');
                        if (attached != null)
                        {
                            for (int i = 0; i < attached.Count(); i++)
                            {
                                string       filepath = attached[i];
                                FileStream   fs       = new FileStream(AccountConstant.PathURL + filepath, FileMode.Open, FileAccess.Read);
                                StreamReader s        = new StreamReader(fs);
                                s.Close();
                                fs = new FileStream(AccountConstant.PathURL + filepath, FileMode.Open, FileAccess.Read);
                                System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType(MediaTypeNames.Text.Plain);
                                Attachment attachment          = new Attachment(fs, ct);
                                attachment.ContentDisposition.Inline = true;
                                System.Net.Mime.ContentDisposition disposition = attachment.ContentDisposition;
                                disposition.CreationDate     = File.GetCreationTime(AccountConstant.PathURL + filepath);
                                disposition.ModificationDate = File.GetLastWriteTime(AccountConstant.PathURL + filepath);
                                disposition.ReadDate         = File.GetLastAccessTime(AccountConstant.PathURL + filepath);
                                disposition.FileName         = Path.GetFileName(AccountConstant.PathURL + filepath);
                                disposition.Size             = new FileInfo(AccountConstant.PathURL + filepath).Length;
                                disposition.DispositionType  = DispositionTypeNames.Attachment;
                                emailMessage.Attachments.Add(attachment);
                            }
                        }
                    }
                    try
                    {
                        client.Send(emailMessage);
                    }
                    catch (SmtpFailedRecipientException ex)
                    {
                        SmtpStatusCode statusCode = ex.StatusCode;
                        errorEmail = ex.StatusCode.ToString();
                        if (statusCode == SmtpStatusCode.MailboxBusy || statusCode == SmtpStatusCode.MailboxUnavailable || statusCode == SmtpStatusCode.TransactionFailed)
                        {
                            // wait 5 seconds, try a second time
                            Thread.Sleep(5000);
                            client.Send(emailMessage);
                        }
                        else
                        {
                            throw;
                        }
                    }
                    finally
                    {
                        if (lstRecieveEmail.Count > 0)
                        {
                            db.TblRecieveEmail.AddRange(lstRecieveEmail);
                            db.SaveChanges();
                            if (errorEmail == SmtpStatusCode.MailboxBusy.ToString() || errorEmail == SmtpStatusCode.MailboxUnavailable.ToString() || errorEmail == SmtpStatusCode.TransactionFailed.ToString())
                            {
                                response = new { Code = 2 };
                            }
                            else
                            {
                                response = new { Code = 1 };
                            }
                        }
                        emailMessage.Dispose();
                    }
                }
                #region lưu các email đã gửi đi
                #endregion
                return(response);
            }
            catch (Exception ex)
            {
                return(response);

                throw ex;
            }
        }