Пример #1
0
        public async Task <FileBytes> DownloadFileAsync(string url, object query = null)
        {
            HttpResponseMessage mes = await Get(url, query);

            if (mes.IsSuccessStatusCode)
            {
                FileBytes b = new FileBytes();
                b.Bytes = await mes.Content.ReadAsByteArrayAsync();

                b.FileName = url.GetAfter("/");

                if (mes.Content.Headers.ContentDisposition != null)
                {
                    b.FileName = mes.Content.Headers.ContentDisposition.FileName;
                }

                if (mes.Content.Headers.ContentType != null)
                {
                    b.MimeType = mes.Content.Headers.ContentType.MediaType;
                }
                else
                {
                    b.MimeType = MimeData.GetFileMimeType(b.FileName);
                }

                return(b);
            }
            else
            {
                return(null);
            }
        }
Пример #2
0
        public async Task <FileBytes> DownloadFileAsync(string url, object query = null)
        {
            HttpResponseMessage mes = await GetAsync(url, query);

            if (mes.IsSuccessStatusCode)
            {
                var Bytes = await mes.Content.ReadAsByteArrayAsync();

                var       FileName = url.GetAfterLast("/")?.GetBeforeFirst("?");
                FileBytes b        = new FileBytes(FileName, Bytes);
                if (mes.Content.Headers.ContentDisposition != null)
                {
                    b.FileName = mes.Content.Headers.ContentDisposition.FileName;
                }

                if (mes.Content.Headers.ContentType != null)
                {
                    b.MimeType = mes.Content.Headers.ContentType.MediaType;
                }
                else
                {
                    b.MimeType = MimeData.GetFileMimeType(b.FileName);
                }

                return(b);
            }
            else
            {
                string message = await mes.Content.ReadAsStringAsync();

                throw new CodeShellHttpException(mes.StatusCode, message);
            }
        }
Пример #3
0
        static void send(string subject, User to)
        {
            try
            {
                MailBuilder builder = new MailBuilder();
                builder.Html    = @"Html with an image: <img src=""cid:lena"" />";
                builder.Subject = subject;


                MimeData visual = builder.AddVisual(HostingEnvironment.MapPath("~/Images/logo_2.png"));
                visual.ContentId = "lena";

                MimeData attachment = builder.AddAttachment(@"C:\Users\User\Desktop\Attachment.txt");
                attachment.FileName = "document.doc";

                builder.From.Add(new MailBox("*****@*****.**"));
                builder.To.Add(new MailBox(to.Email));
                //builder.To.Add(new MailBox("*****@*****.**"));
                IMail email = builder.Create();

                using (Smtp smtp = new Smtp())
                {
                    smtp.Connect(_server);       // or ConnectSSL for SSL
                    smtp.UseBestLogin(_user, _password);

                    smtp.SendMessage(email);

                    smtp.Close();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Пример #4
0
        public void CopyToEmailOut(MimeData theAttachment, AowGame theGame)
        {
            if (theAttachment != null && theGame != null)
            {
                string fileName = theAttachment.FileName;

                if (!string.IsNullOrEmpty(fileName))
                {
                    string destPath = Path.Combine(theGame.EmailOut.FullName, fileName);

                    if (File.Exists(destPath))
                    {
                        File.Delete(destPath);
                    }

                    theAttachment.Save(destPath);
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Build email from MailBuilder using interface IMail, pass to SendMail()
        /// </summary>
        /// <param name="sendTo">Recipient</param>
        /// <param name="sendSubject">Subject</param>
        /// <param name="sendMailContents">Body</param>
        /// <param name="sendFrom">Sender</param>
        public void ProcessMailToSend(string sendTo, string sendSubject, string sendMailContents, string sendFrom)
        {
            // Append scalemail signature
            sendMailContents += "<br/>Sent using <img src=\"http://i42.photobucket.com/albums/e333/rcastoro1/scalemailSignature_zpse308b52b.gif \" border=\"0\" alt=\" photo scalemailSignature_zpse308b52b.gif\"/> v1.0 ^-^";

            MailBuilder builder = new MailBuilder();

            builder.From.Add(new MailBox(sendFrom, ""));
            builder.To.Add(new MailBox(sendTo, ""));
            builder.Subject = sendSubject;
            builder.Html    = sendMailContents;

            foreach (string attachment in _attachmentList)
            {
                MimeData attach = builder.AddAttachment(attachment);
            }

            IMail email = builder.Create();

            SendMail(email);
        }
Пример #6
0
        private void AddMessageToDrafts(string to, string subject, string rtf)
        {
            MailBuilder mailBuilder = new MailBuilder();

            try
            {
                mailBuilder.From.Add(new MailBox(this.EmailBox.EmailAddress));
            }
            catch (Exception)
            {
                return;
            }
            mailBuilder.To.Add(new MailBox(to));
            mailBuilder.Subject = subject;
            mailBuilder.Rtf     = rtf;

            for (int i = 0; i < this.Attachments.Count; i++)
            {
                MimeData mime = mailBuilder.AddAttachment(this.Attachments[i]);
                mime.FileName = (string)this.attachmentsListBox.Items[i];
            }

            this.EmailBox.UploadMessageToDrafts(mailBuilder.Create());
        }
Пример #7
0
        private void SendButton_Click(object sender, RoutedEventArgs e)
        {
            if (this.encryptMessage.IsChecked == true &&
                this.EmailBox.XmlStringChipherKeyContainerName is null)
            {
                MessageBox.Show("Для шифрования сообщения следует импортировать открытый ключ!", "Ошибка",
                                MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (this.toTextBox.Text is null)
            {
                MessageBox.Show("Требуется ввести имя получателя.", "Ошибка",
                                MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            MailBuilder mailBuilder = new MailBuilder();

            mailBuilder.From.Add(new MailBox(this.EmailBox.EmailAddress));

            try
            {
                mailBuilder.To.Add(new MailBox(this.toTextBox.Text.Trim(' ')));
            }
            catch (ArgumentException)
            {
                MessageBox.Show("Имя получателя написано в неверном формате.", "Ошибка",
                                MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            mailBuilder.Subject = this.subjectTextBox.Text.Trim(' ');

            if (encryptMessage.IsChecked == true)
            {
                byte[] data    = this.GetBytesFromRichTextBoxText(this.textRichTextBox);
                byte[] encData = Encrypter.EncryptWithAesAndRsa(data,
                                                                this.EmailBox.XmlStringChipherKeyContainerName, true);
                byte[] signedData = Encrypter.SignData(encData,
                                                       this.EmailBox.UserKeyContainerName);
                mailBuilder.Rtf = Convert.ToBase64String(signedData);
            }
            else
            {
                mailBuilder.Rtf = this.GetTextFromRichTextBox(this.textRichTextBox);
            }

            for (int i = 0; i < this.Attachments.Count; i++)
            {
                if (encryptMessage.IsChecked == true)
                {
                    byte[] data    = this.Attachments[i];
                    byte[] encData = Encrypter.EncryptWithAesAndRsa(data,
                                                                    this.EmailBox.XmlStringChipherKeyContainerName, true);
                    byte[] signedData = Encrypter.SignData(encData,
                                                           this.EmailBox.UserKeyContainerName);

                    MimeData mime = mailBuilder.AddAttachment(signedData);
                    mime.FileName = (string)this.attachmentsListBox.Items[i];
                }
                else
                {
                    MimeData mime = mailBuilder.AddAttachment(this.Attachments[i]);
                    mime.FileName = (string)this.attachmentsListBox.Items[i];
                }
            }

            IMail mail = mailBuilder.Create();

            if (sendThread != null && sendThread.IsAlive)
            {
                sendThread.Abort();
                sendThread.Join();
            }

            sendThread = new Thread(() =>
            {
                this.Dispatcher.Invoke(() =>
                {
                    this.sendButton.IsEnabled = false;
                    Mouse.OverrideCursor      = Cursors.AppStarting;
                });

                this.EmailBox.Smtp.SendMessage(mail);

                this.Dispatcher.Invoke(() =>
                {
                    this.Close();
                    this.sendButton.IsEnabled = true;
                    Mouse.OverrideCursor      = null;
                });
            });
            sendThread.Start();
        }
Пример #8
0
 public void Dispose()
 {
     this._theAttachment = null;
 }
Пример #9
0
 public ASGFileInfo(MimeData theAttachment)
 {
     _theAttachment = theAttachment;
     ParseProperties();
 }
Пример #10
0
        public void processAttachment(MimeData att, Configuration config, string mailAddress)
        {
            if (att.FileName.Contains("xls") || att.FileName.Contains("xlsx") || att.FileName.Contains("csv") || att.FileName.Contains("xml"))
            {
                Guid guid = Guid.NewGuid();
                using (var unit = GetUnitOfWork())
                {
                    //BAS.EDI.Objects.Mail.MailLog mailLog = new MailLog();
                    //mailLog.Mailaddress = imail.From.First().Address;
                    //mailLog.Filename = att.FileName;
                    //mailLog.ReceiveDate = System.DateTime.Now;
                    string ext = ".unknown";
                    if (att.FileName.Contains(".xlsx"))
                    {
                        ext = ".xlsx";
                    }
                    else if (att.FileName.Contains(".xls"))
                    {
                        ext = ".xls";
                    }
                    else if (att.FileName.Contains(".csv"))
                    {
                        ext = ".csv";
                    }

                    string fileName = att.FileName;
                    if (fileName.Contains(")"))
                    {
                        fileName = fileName.Replace(")", "-");
                    }
                    if (fileName.Contains("("))
                    {
                        fileName = fileName.Replace("(", "-");
                    }
                    if (fileName.Contains("_"))
                    {
                        fileName = fileName.Replace("_", "-");
                    }
                    Regex reg = new Regex("([0-9a-z_-]+[\\.][0-9a-z_-]{1,6})$");
                    fileName = reg.Match(fileName).Value;

                    if (string.IsNullOrEmpty(fileName))
                    {
                        fileName = ext;
                    }

                    //mailLog.UniqueCode = guid.ToString() + "-" + fileName;
                    //context.MailLogs.InsertOnSubmit(mailLog);
                    //context.SubmitChanges();

                    //if (!Directory.Exists(ConfigurationManager.AppSettings["ExcelMailDirectory"]))
                    //  Directory.CreateDirectory(ConfigurationManager.AppSettings["ExcelMailDirectory"]);

                    string filepath = config.AppSettings.Settings["EdiOrderDir"].Value + guid.ToString() + "-" + fileName;

                    using (MemoryStream ms = att.GetMemoryStream())
                    {
                        FileStream outStream = File.OpenWrite(filepath);
                        ms.WriteTo(outStream);
                        outStream.Flush();
                        outStream.Close();
                    }

                    ExcelReader excel = new ExcelReader(config.AppSettings.Settings["EdiOrderDir"].Value, log, unit);
                    excel.ProcessFile(filepath, mailAddress);
                }
            }
        }
Пример #11
0
        private IMail GetMailMessage(Guid guid, PECMail pecMail)
        {
            MailBuilder builder = new MailBuilder();

            foreach (MailBox mailBox in MailStringToList(pecMail.MailSenders))
            {
                builder.From.Add(mailBox);
            }
            foreach (MailBox mailBox in MailStringToList(pecMail.MailRecipients))
            {
                builder.To.Add(mailBox);
            }
            foreach (MailBox mailBox in MailStringToList(pecMail.MailRecipientsCc))
            {
                builder.Cc.Add(mailBox);
            }

            builder.Subject = string.IsNullOrEmpty(pecMail.MailSubject) ? string.Empty : StringHelper.ReplaceCrLf(pecMail.MailSubject);

            // Crea il corpo del messaggio di default (non è richiesto dall'Interoperabilità) o lo legge da base dati, se indicato
            builder.Text = (string.IsNullOrEmpty(pecMail.MailBody))
                               ? string.Format("Invio protocollo \"{0}\" ({1}/{2})", pecMail.MailSubject, pecMail.Number, pecMail.Year)
                               : pecMail.MailBody;

            builder.MessageID = guid.ToString();

            if (!string.IsNullOrEmpty(pecMail.Segnatura))
            {
                // Estrae la segnatura dalla base dati e la allega alla mail in uscita
                MimeData xmlSegnatura = builder.AddAttachment(Encoding.GetEncoding(1252).GetBytes(pecMail.Segnatura));
                xmlSegnatura.ContentType = new ContentType(MimeType.Text, MimeSubtype.Xml);
                xmlSegnatura.ContentId   = "Segnatura.xml";
                xmlSegnatura.FileName    = "Segnatura.xml";
            }

            // Estrae i relativi allegati da base dati (documento ed allegati)
            if ((pecMail.Attachments != null) && (pecMail.Attachments.Count > 0))
            {
                byte[] attachmentByteArray;
                foreach (PECMailAttachment attachment in pecMail.Attachments)
                {
                    try
                    {
                        attachmentByteArray = null;
                        string attachmentName = FileHelper.ReplaceUnicode(FileHelper.ConvertUnicodeToAscii(attachment.AttachmentName));
                        if (pecMail.Location != null && !string.IsNullOrEmpty(pecMail.Location.DocumentServer) && attachment.IDDocument != Guid.Empty)
                        {
                            // Allora utilizzo l'idDocument
                            BiblosDocumentInfo doc = new BiblosDocumentInfo(pecMail.Location.DocumentServer, attachment.IDDocument);
                            attachmentByteArray = doc.Stream;
                            FileLogger.Debug(_loggerName, string.Format("Caricamento allegato {0} della PEC {1} inserito da DSW8 utilizzando l'IDDocument", attachmentName, pecMail.Id));
                        }
                        else
                        {
                            throw new Exception("L'allegato non contiene nè un idBiblos valido nè uno stream valido e pertanto non può essere inviato.");
                        }
                        MimeData document = builder.AddAttachment(attachmentByteArray);
                        if (attachmentName.EndsWith(FileHelper.EML, StringComparison.InvariantCultureIgnoreCase))
                        {
                            document.ContentType = new ContentType(MimeType.Message, MimeSubtype.Rfc822);
                        }
                        else
                        {
                            document.ContentType = new ContentType(MimeType.Application, MimeSubtype.OctetStream);
                        }
                        document.ContentId = attachmentName;
                        document.FileName  = attachmentName;
                    }
                    catch (Exception ex)
                    {
                        FileLogger.Error(_loggerName, string.Format("Errore in aggiunta allegati alla PECMail [{0}].", pecMail.Id), ex);
                    }
                }
            }

            // Estrae il messaggio di ritorno dalla base dati, se presente e lo allega alla mail in uscita
            if (pecMail.MessaggioRitornoName != null && pecMail.MessaggioRitornoStream != null)
            {
                MimeData messaggioRitornoStream = builder.AddAttachment(Encoding.GetEncoding(1252).GetBytes(pecMail.MessaggioRitornoStream));
                messaggioRitornoStream.ContentType = new ContentType(MimeType.Text, MimeSubtype.Xml);
                messaggioRitornoStream.ContentId   = pecMail.MessaggioRitornoStream;
                messaggioRitornoStream.FileName    = pecMail.MessaggioRitornoStream;
            }

            if (pecMail.MailPriority.HasValue)
            {
                switch (pecMail.MailPriority)
                {
                case -1:
                    builder.Priority = MimePriority.NonUrgent;
                    break;

                case 1:
                    builder.Priority = MimePriority.Urgent;
                    break;

                default:
                    builder.Priority = MimePriority.Normal;
                    break;
                }
            }
            else
            {
                builder.Priority = MimePriority.Normal;
            }

            return(builder.Create());
        }
Пример #12
0
 public MimeObject(MimeData mime)
 {
     _mimeData = mime;
 }