private Attachment GetEmailAttachmentFromCloud(CloudFileInfo fileInfo, Stream stream)
        {
            var attachment = new Attachment();

            attachment.FileName    = fileInfo.Name;
            attachment.ContentType = fileInfo.ContentType;
            attachment.Data        = stream;

            return(attachment);
        }
        public async Task <IEnumerable <CloudFileInfo> > GetFileInfoListAsync(DirectoryPathBase path, bool includeDeleted = false)
        {
            var client    = _account.CreateCloudBlobClient();
            var container = client.GetContainerReference(path.GetContainerName());

            var exists = await container.ExistsAsync();

            if (!exists)
            {
                return(new List <CloudFileInfo>());
            }

            var directory = container.GetDirectoryReference(path.GetDirectoryPath());

            var items = new List <CloudFileInfo>();

            BlobContinuationToken blobContinuationToken = null;

            do
            {
                var results = await container.ListBlobsSegmentedAsync(directory.Prefix, true, BlobListingDetails.None, null, blobContinuationToken, null, null);

                blobContinuationToken = results.ContinuationToken;

                foreach (var result in results.Results)
                {
                    var blob = new CloudBlob(result.Uri, _account.Credentials);
                    await blob.FetchAttributesAsync();

                    var deleted       = false;
                    var deletedString = "";
                    var success       = blob.Metadata.TryGetValue(FilePathBase.METADATA_DELETED, out deletedString);
                    if (success)
                    {
                        deleted = Boolean.TrueString == deletedString;
                    }

                    if (!includeDeleted && deleted)
                    {
                        continue;
                    }

                    var fileName = "unknown";
                    blob.Metadata.TryGetValue(FilePathBase.METADATA_FILENAME, out fileName);

                    var file = new CloudFileInfo()
                    {
                        Name         = fileName,
                        StorageName  = blob.Name,
                        Size         = blob.Properties.Length,
                        ContentType  = blob.Properties.ContentType,
                        Created      = blob.Properties.Created,
                        LastModified = blob.Properties.LastModified,
                        Url          = result.Uri.AbsoluteUri,
                        Deleted      = deleted,
                    };

                    items.Add(file);
                }
            }while (blobContinuationToken != null); // Loop while the continuation token is not null.

            return(items.OrderByDescending(x => x.LastModified));
        }