Ejemplo n.º 1
0
        public void SendMail(TheMail mail)
        {
            try
            {
                var         currentMailBox       = SessionContext.Instance.CurrentUser.ChachedEmailBoxes.Single(x => x.Id == mail.ChachedEmailBoxId);
                var         currentOutgoingParam = currentMailBox.OutgoingEmailServerParam;
                MailAddress from = new MailAddress(mail.FromAddress, mail.FromDisplayName);
                MailAddress to   = new MailAddress(mail.ToAddress);
                MailMessage m    = new MailMessage(from, to);

                //m.Attachments.Add(new Attachment("E://colors.txt"));
                m.Subject    = mail.Subject;
                m.Body       = mail.Body;
                m.IsBodyHtml = true;

                SmtpClient smtpClient = new SmtpClient(currentOutgoingParam.Hostname, currentOutgoingParam.Port);
                smtpClient.Credentials = new NetworkCredential(currentMailBox.Login, currentMailBox.Password);
                smtpClient.EnableSsl   = currentOutgoingParam.UseSsl;
                smtpClient.Send(m);
            }
            catch
            {
                throw;
            }
        }
Ejemplo n.º 2
0
        private void BtnSendResponse_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(meResponseBody.Text))
            {
                try
                {
                    var focusedMail  = wevMails.GetFocusedRow() as TheMail;
                    var responseMail = new TheMail();
                    responseMail.Body              = meResponseBody.Text;
                    responseMail.FromAddress       = focusedMail.ToAddress;
                    responseMail.FromDisplayName   = $"ФрэдроКлиент";
                    responseMail.ToAddress         = focusedMail.FromAddress;
                    responseMail.ToDisplayName     = focusedMail.FromDisplayName;
                    responseMail.Subject           = focusedMail.Subject;
                    responseMail.ChachedEmailBoxId = focusedMail.ChachedEmailBoxId;

                    _model.SendMail(responseMail);

                    TwinkleMessageBox.ShowSucces("Письмо отправлено!");

                    meResponseBody.Text = "";
                    SetResponseBodyVisibility(false);
                }
                catch (Exception ex)
                {
                    TwinkleMessageBox.ShowError($"Ответ не отправлен! {ex.Message}");
                }
            }
            else
            {
                TwinkleMessageBox.ShowError("Нельзя отправить пустой ответ!");
            }
        }
Ejemplo n.º 3
0
 public void UpdateMail(TheMail mail)
 {
     using (var db = new TwinkleDbContext())
     {
         db.Entry(mail).State = EntityState.Modified;
         db.SaveChanges();
     }
 }
Ejemplo n.º 4
0
 public void UpdateMail(TheMail mail)
 {
     try
     {
         _dbDataManager.UpdateMail(mail);
     }
     catch (Exception ex)
     {
         throw new FaultException(ex.Message);
     }
 }
Ejemplo n.º 5
0
 public void SendMail(TheMail mail)
 {
     try
     {
         _mailTransferManager.SendMail(mail);
     }
     catch (Exception ex)
     {
         throw new FaultException(ex.Message);
     }
 }
Ejemplo n.º 6
0
 internal void SendMail(TheMail responseMail)
 {
     try
     {
         _serviceClient.SendMail(responseMail);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Ejemplo n.º 7
0
 public void InsertMail(TheMail mail)
 {
     using (var db = new TwinkleDbContext())
     {
         if (!db.Mails.Select(x => x.Id).Contains(mail.Id))
         {
             db.Mails.Add(mail);
             db.SaveChanges();
         }
     }
 }
Ejemplo n.º 8
0
 public void UpdateMail(TheMail mail)
 {
     try
     {
         ServiceClient.UpdateMail(mail);
     }
     catch (FaultException ex)
     {
         TwinkleMessageBox.ShowError(ex.Message);
         ServiceClient.Abort();
     }
 }
Ejemplo n.º 9
0
        internal static TheMail GetTheMail(this Message mail)
        {
            var attachmentParts = mail.FindAllAttachments();
            var plainTextParts  = mail.FindAllMessagePartsWithMediaType(PLAIN_TEXT);
            var htmlTextParts   = mail.FindAllMessagePartsWithMediaType(HTML_TEXT);
            var theMail         = new TheMail();

            theMail.Id              = mail.Headers.MessageId;
            theMail.FromFullRaw     = mail.Headers.From.Raw;
            theMail.FromAddress     = mail.Headers.From.Address;
            theMail.FromDisplayName = mail.Headers.From.DisplayName;
            theMail.ToFullRaw       = mail.Headers.To.FirstOrDefault()?.Raw;
            theMail.ToAddress       = mail.Headers.To.FirstOrDefault()?.Address;
            theMail.ToDisplayName   = mail.Headers.To.FirstOrDefault()?.DisplayName;
            theMail.Date            = mail.Headers.DateSent;
            theMail.Subject         = mail.Headers.Subject;
            theMail.Body            = plainTextParts.FirstOrDefault()?.GetBodyAsText() ??
                                      htmlTextParts.FirstOrDefault()?.GetBodyAsText();
            //---↓↓↓---костыль---↓↓↓---
            if (theMail.FromDisplayName.Contains("??") || theMail.Subject.Contains("??"))
            {
                var messageBytes  = mail.RawMessage;
                var messageString = Encoding.UTF8.GetString(messageBytes);
                if (theMail.FromDisplayName.Contains("??"))
                {
                    var regexFrom      = new Regex("From:\\s(.*)\r\n");
                    var matchFrom      = regexFrom.Match(messageString);
                    var fullFromString = matchFrom.Value.Trim().Substring(6).Replace("\"", ""); //6 = "From: ".length
                    theMail.FromFullRaw     = fullFromString;
                    theMail.FromDisplayName = fullFromString.Substring(0, fullFromString.IndexOf('<') - 1);
                }
                if (theMail.Subject.Contains("??"))
                {
                    var regexSubj      = new Regex("Subject:\\s(.*)\r\n");
                    var matchSubj      = regexSubj.Match(messageString);
                    var fullSubjString = matchSubj.Value.Trim().Substring(9); // = "Subject: ".length
                    theMail.Subject = fullSubjString;
                }
            }
            //---↑↑↑---костыль---↑↑↑---
            return(theMail);
        }
Ejemplo n.º 10
0
        private void BtnSend_Click(object sender, EventArgs e)
        {
            if (_model.FromEmailBoxId.HasValue && !string.IsNullOrWhiteSpace(meBody.Text))
            {
                try
                {
                    sleFrom.ErrorText = string.Empty;
                    var responseMail = new TheMail();
                    responseMail.Body              = meBody.Text;
                    responseMail.FromAddress       = _model.FromEmailBoxAddress;
                    responseMail.FromDisplayName   = "ФрэдроКлиент";
                    responseMail.ToAddress         = teTo.Text;
                    responseMail.Subject           = teSubject.Text;
                    responseMail.ChachedEmailBoxId = _model.FromEmailBoxId;

                    _model.SendMail(responseMail);

                    TwinkleMessageBox.ShowSucces("Письмо отправлено!");
                }
                catch (Exception ex)
                {
                    TwinkleMessageBox.ShowError($"Письмо не отправлено! {ex.Message}");
                }
                finally
                {
                    Close();
                }
            }
            else if (!_model.FromEmailBoxId.HasValue)
            {
                sleFrom.ErrorText = "Ошибка. Необходимо указать почтовый адрес, с которого будет отправлено письмо.";
            }
            else
            {
                TwinkleMessageBox.ShowError("Нельзя отправить пустое сообщение!");
            }
        }
Ejemplo n.º 11
0
 private void FillMailExtraFields(TheMail mail, CachedEmailBox cachedEmailBox)
 {
     mail.IsOutcoming       = (cachedEmailBox.Login == mail.FromAddress);
     mail.IsIncoming        = (cachedEmailBox.Login == mail.ToAddress);
     mail.ChachedEmailBoxId = cachedEmailBox.Id.Value;
 }