Exemplo n.º 1
0
        private MailSendResult SendViaDotnetSmtp(MailMessage message)
        {
            MailSendResult sendResult = new MailSendResult();

            if (message.From == null || String.IsNullOrEmpty(message.From.Address))
            {
                message.From = new MailAddress(_settingsService.GetSettings <string>("SystemEmailAddress"),
                                               _settingsService.GetSettings <string>("SystemEmailSenderName"));
            }
            if (AppSettingsHelper.EmailBlindCarbonCopyEnabled)
            {
                string bcc = AppSettingsHelper.EmailBlindCarbonCopyAddress;
                message.Bcc.Add(new MailAddress(bcc));
            }

            using (SmtpClient smtp = new SmtpClient(_settingsService.GetSettings <string>("EmailSmtpUrl"), _settingsService.GetSettings <int>("EmailSmtpPort")))
            {
                smtp.Credentials = new NetworkCredential(_settingsService.GetSettings <string>("EmailLogin"), _settingsService.GetSettings <string>("EmailPassword"));
                smtp.EnableSsl   = _settingsService.GetSettings <bool>("SmtpSslEnabled");
                try
                {
                    smtp.Send(message); //отправка
                    sendResult.Success = true;
                }
                catch (Exception e)
                {
                    _logService.LogError(e);
                    sendResult.Success  = false;
                    sendResult.ErrorMsg = e.Message;
                }
            }
            return(sendResult);
        }
Exemplo n.º 2
0
        public async Task <MailSendResult> SendMailAsync(MailMessageData emailMessage)
        {
            Console.WriteLine($"EmailRabbitMQProcessor SendMailAsync method  => Calısma zamanı: {DateTime.Now.ToShortTimeString()}");

            MailSendResult result;
            MailMessage    mailMessage = emailMessage.GetMailMessage();

            mailMessage.From = new MailAddress(_smtpConfiguration.User);
            try
            {
                using (var client = CreateSmtpClient(_smtpConfiguration.GetSmtpConfig()))
                {
                    await client.SendMailAsync(mailMessage);

                    string resultMessage = $"donus mesajı metni  {string.Join(",", mailMessage.To)}.";
                    result = new MailSendResult(mailMessage, true, resultMessage);
                    Console.WriteLine($"EmailRabbitMQProcessor running => resultMessage to:{ mailMessage.To}");
                }
            }
            catch (Exception ex)
            {
                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }
                result = new MailSendResult(mailMessage, false, $"Hata: {ex.Message}");
            }
            finally
            {
                Thread.Sleep(MailConsts.SendTimeout);
            }
            return(result);
        }
Exemplo n.º 3
0
        public MailSendResult ReSendMessage(int mailId)
        {
            var            mail       = _mailGateway.SelectOne(mailId);
            MimeMessage    message    = MailMsgToMimeMessage(Mapper.Map <MailMsg>(mail));
            MailSendResult sendResult = SendViaMailKit(message);

            mail.Sent         = sendResult.Success;
            mail.ErrorMessage = sendResult.ErrorMsg;
            _mailGateway.Update(mail);
            return(sendResult);
        }
Exemplo n.º 4
0
        public void Send(MailMsg msg)
        {
            var mail    = Mapper.Map <RoCMS.Data.Models.Mail>(msg);
            var message = MailMsgToMimeMessage(msg);

            mail.MailId = _mailGateway.Insert(mail);
            MailSendResult sendResult = SendViaMailKit(message);

            mail.Sent         = sendResult.Success;
            mail.ErrorMessage = sendResult.ErrorMsg;
            _mailGateway.Update(mail);
        }
Exemplo n.º 5
0
        public void MailSendResult_Constructed_Constructs()
        {
            // NOTE: The MailSendResult class has been created so
            // we had something to return from the MailSender, but
            // hasn't yet been built out, hence the minimal unit test.

            // Act
            var result = new MailSendResult();

            // Assert
            Assert.IsType <MailSendResult>(result);
        }
Exemplo n.º 6
0
        private MailSendResult SendViaMailKit(MimeMessage message)
        {
            MailSendResult sendResult = new MailSendResult();

            if (!message.From.Any())
            {
                message.From.Add(new MailboxAddress(_settingsService.GetSettings <string>("SystemEmailSenderName"), _settingsService.GetSettings <string>("SystemEmailAddress")));
            }
            if (AppSettingsHelper.EmailBlindCarbonCopyEnabled)
            {
                string bcc = AppSettingsHelper.EmailBlindCarbonCopyAddress;
                message.Bcc.Add(new MailboxAddress(bcc));
            }
            string host = _settingsService.GetSettings <string>("EmailSmtpUrl");
            int    port = _settingsService.GetSettings <int>("EmailSmtpPort");
            SecureSocketOptions socketSecurityOption = _settingsService.GetSettings <bool>("SmtpSslEnabled") ? SecureSocketOptions.SslOnConnect : SecureSocketOptions.Auto;
            string username = _settingsService.GetSettings <string>("EmailLogin");
            string password = _settingsService.GetSettings <string>("EmailPassword");

            try
            {
                Task.Run(async() =>
                {
                    using (var smtp = new MailKit.Net.Smtp.SmtpClient())
                    {
                        await smtp.ConnectAsync(host, port, socketSecurityOption);
                        await smtp.AuthenticateAsync(username, password);
                        await smtp.SendAsync(message); //отправка
                        sendResult.Success = true;
                        await smtp.DisconnectAsync(true);
                    }
                }).Wait();
            }
            catch (Exception e)
            {
                _logService.LogError(e);
                sendResult.Success  = false;
                sendResult.ErrorMsg = e.Message;
            }
            return(sendResult);
        }
        /// <summary>
        /// Yeni kullanıcı keydetme işlemini yapan metod
        /// Yapılanlar;
        /// - Kullanıcı userName, e-posta kontrolleri
        /// - Kayıt işlemi
        /// - Aktivasyon email'i yollanması yapılır
        /// </summary>
        /// <param name="registerDTO"></param>
        /// <returns>BLL katmanında Entity kısıtları dışında özel hatalar(aynı isimli kullanıcı kaydetmek istemek gibi) oluşursa bu hataları tutan generic model</returns>
        public BusinessLayerResult <User> RegisterUser(RegisterDTO registerDTO)
        {
            User user = Find(q => q.UserName == registerDTO.UserName || q.Email == registerDTO.Email);
            BusinessLayerResult <User> layerResult = new BusinessLayerResult <User>();           // Geriye döndürülecek olan generic hata listesini tutan model

            if (user != null)
            {             // İlgili name-password değerlerinde kullanıcı varsa bu bloğa giriliyor
                if (user.UserName == registerDTO.UserName)
                {
                    layerResult.AddError(code: ErrorMessageCode.UserNameAlreadyExist, message: "Kullanıcı Adı Kayıtlı!");
                }

                if (user.Email == registerDTO.Email)
                {
                    layerResult.AddError(code: ErrorMessageCode.EmailAlreadyExist, message: "Email adı kayıtlı!");
                }
            }
            else
            {             // Yeni kullaıncıyı kayıt işlemi
                User newUser = new User
                {
                    UserName             = registerDTO.UserName,
                    Email                = registerDTO.Email,
                    Password             = registerDTO.Password,
                    Gender               = Gender.Woman,
                    ProfileImageFileName = "userWoman.png",
                    IsActive             = false,
                    IsAdmin              = false,
                    ActivateGuid         = Guid.NewGuid()
                };
                int dbResult = base.Insert(newUser);

                if (dbResult > 0)
                {
                    layerResult.Result = Find(q => q.UserName == registerDTO.UserName && q.Email == registerDTO.Email && q.Password == registerDTO.Password);

                    // Yollanacak mail'in ayarlanması
                    string      activateUrl = $"localhost:49952/User/UserActivate/{layerResult.Result.ActivateGuid}";
                    MailContent mailContent = new MailContent
                    {
                        From   = new MailAddress("YourMailAddress"),
                        ToList = new List <MailAddress> {
                            new MailAddress(layerResult.Result.Email.Trim())
                        },
                        Subject           = "EveryNote Account Activation",
                        Body              = $"Merhaba, {layerResult.Result.UserName}; <br/><br/> Hesabınızı aktifleştirmek için <a href='http://{activateUrl}' target = '_blank'>tıklayıyınız.</a>",
                        IsBodyHtml        = true,
                        SmtpConfiguration = new SmtpConfiguration
                        {
                            Host                  = "smtp.gmail.com",
                            Port                  = 587,
                            EnableSsl             = true,
                            UseDefaultCredentials = false,
                            DeliveryMethod        = SmtpDeliveryMethod.Network
                        },
                        Email    = "YourMailAddress",
                        Password = "******"
                    };

                    // Mail gönderme metodunun çağırılması ve sonucun 'MailSendResult' modeline atanması
                    MailSendResult sendResult = SendFastEmail.EMail.Send(mailContent);
                }
            }

            return(layerResult);
        }