public Task SendEmailAsync(EmailAccount emailAccount, string subject, string body, string fromAddress, string fromName, string toAddress, string toName, string replyTo = null, string replyToName = null, string attachmentFilePath = null, string attachmentFileName = null, IEnumerable <string> bcc = null, IEnumerable <string> cc = null, IDictionary <string, string> headers = null) { MailMessage message = new MailMessage { //from, to, reply to From = new MailAddress(fromAddress, fromName) }; message.To.Add(new MailAddress(toAddress, toName)); if (!string.IsNullOrEmpty(replyTo)) { message.ReplyToList.Add(new MailAddress(replyTo, replyToName)); } //BCC if (bcc != null) { foreach (string address in bcc.Where(bccValue => !string.IsNullOrWhiteSpace(bccValue))) { message.Bcc.Add(address.Trim()); } } //CC if (cc != null) { foreach (string address in cc.Where(ccValue => !string.IsNullOrWhiteSpace(ccValue))) { message.CC.Add(address.Trim()); } } //content message.Subject = subject; message.Body = body; message.IsBodyHtml = true; //headers if (headers != null) { foreach (KeyValuePair <string, string> header in headers) { message.Headers.Add(header.Key, header.Value); } } //create the file attachment for this e-mail message if (!string.IsNullOrEmpty(attachmentFilePath) && _fileProvider.FileExists(attachmentFilePath)) { Attachment attachment = new Attachment(attachmentFilePath); attachment.ContentDisposition.CreationDate = _fileProvider.GetCreationTime(attachmentFilePath); attachment.ContentDisposition.ModificationDate = _fileProvider.GetLastWriteTime(attachmentFilePath); attachment.ContentDisposition.ReadDate = _fileProvider.GetLastAccessTime(attachmentFilePath); if (!string.IsNullOrEmpty(attachmentFileName)) { attachment.Name = attachmentFileName; } message.Attachments.Add(attachment); } //send email using (SmtpClient smtpClient = new SmtpClient()) { smtpClient.UseDefaultCredentials = emailAccount.UseDefaultCredentials; smtpClient.Host = emailAccount.Host; smtpClient.Port = emailAccount.Port; smtpClient.EnableSsl = emailAccount.EnableSsl; smtpClient.Credentials = emailAccount.UseDefaultCredentials ? CredentialCache.DefaultNetworkCredentials : new NetworkCredential(emailAccount.Username, emailAccount.Password); smtpClient.Send(message); } return(Task.CompletedTask); }
/// <summary> /// Get files in the passed directory /// </summary> /// <param name="directoryPath">Path to the files directory</param> /// <param name="type">Type of the files</param> /// <returns>A task that represents the completion of the operation</returns> protected virtual async Task GetFilesAsync(string directoryPath, string type) { directoryPath = GetVirtualPath(directoryPath); List <string> files = GetFiles(GetFullPath(directoryPath), type); await HttpContext.Response.WriteAsync("["); for (int i = 0; i < files.Count; i++) { int width = 0; int height = 0; string physicalPath = files[i]; if (GetFileType(_fileProvider.GetFileExtension(files[i])) == "image") { using (FileStream stream = new FileStream(physicalPath, FileMode.Open)) { using (Image image = Image.FromStream(stream)) { width = image.Width; height = image.Height; } } } await HttpContext.Response.WriteAsync($"{{\"p\":\"{directoryPath.TrimEnd('/')}/{_fileProvider.GetFileName(physicalPath)}\",\"t\":\"{Math.Ceiling(GetTimestamp(_fileProvider.GetLastWriteTime(physicalPath)))}\",\"s\":\"{_fileProvider.FileLength(physicalPath)}\",\"w\":\"{width}\",\"h\":\"{height}\"}}"); if (i < files.Count - 1) { await HttpContext.Response.WriteAsync(","); } } await HttpContext.Response.WriteAsync("]"); }