您好,我正在尝试从我的 Cosmos 数据库中提取数据,然后对其进行修改,然后通过电子邮件将其发送给用户,其中包含制表符分隔的数据文本文档附件。
到目前为止,我已经设置了逻辑应用程序来接收数据和查询来获取数据以及将数据更改为我想要的格式的方法。我需要找出一种方法来创建制表符分隔文件并将其发送到我的逻辑应用程序。我只能获取一个字符串来发送到我的所有数据的逻辑应用程序。 这是我正在使用的代码:
string query = $"Select * from c";
var restrictions = await _cosmosService.QueryItemsAsync<Data>(Database, query);
if (restrictions == null)
return new NoContentResult();
string tabDelimitedText = ConvertToTabDelimited(restrictions);
byte[] tabDelimitedBytes = System.Text.Encoding.UTF8.GetBytes(tabDelimitedText);
MemoryStream stream = new MemoryStream(tabDelimitedBytes);
var rtn = new FileStreamResult(stream, "text/plain");
await _client.PostAsync(EmailTriggerUrl, new StringContent(rtn, Encoding.UTF8, "application/text"));
return rtn;
private string GetTabDelimitedText(List<Person> people)
{
StringWriter textWriter = new StringWriter();
textWriter.WriteLine("Name\tAge\tCity");
foreach (var person in people)
{
textWriter.WriteLine($"{person.Name}\t{person.Age}\t{person.City}");
}
return textWriter.ToString();
}
我知道我需要从 StringContent 更改 PostAsync,但我不确定需要做什么
我正在尝试从我的 Cosmos 数据库中提取数据,然后修改它,然后通过电子邮件将其发送给用户。
cosmosClient
从 Cosmos Db 中提取数据,并使用以下代码将其作为 Delimited-Text
文件存储在 Blob 容器中。然后我使用 Logic Apps 发送邮件。以下是我遵循的步骤:
cosmosDbEP
和 cosmosDbKey
创建了一个名为 cosmosClient
的实例,用于与 Cosmos DB 交互。 query
用于从数据库检索数据。
blobServClient
使用 blobConnStr
创建,用于与 Azure Blob 存储帐户交互。
GetTabDelimitedText
方法采用 Data
作为参数。它使用字符串插值来创建一个字符串,其中数据由制表符分隔 \t
。
blobName
用于为 cosmos db 中的每个项目生成唯一的 blob 名称,并且 tab-delimited
数据以文本文件的形式上传到 Blob 存储。
下面是我尝试过的代码:
CosmosClient cosmosClient = new CosmosClient(cosmosDbEP, cosmosDbKey);
var cont = cosmosClient.GetContainer(dbId, contId);
var query = new QueryDefinition("SELECT * FROM c");
var queryIterator = cont.GetItemQueryIterator<Data>(query);
BlobServiceClient blobServClient = new BlobServiceClient(blobConnStr);
BlobContainerClient contClient = blobServClient.GetBlobContainerClient(blobContName);
while (queryIterator.HasMoreResults)
{
var response = await queryIterator.ReadNextAsync();
foreach (var item in response)
{
string tabDelimitedContent = GetTabDelimitedText(item);
string blobName = Guid.NewGuid().ToString() + ".txt";
BlobClient blobClient = contClient.GetBlobClient(blobName);
using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(tabDelimitedContent)))
{
await blobClient.UploadAsync(stream, new BlobUploadOptions { HttpHeaders = new BlobHttpHeaders { ContentType = "text/plain" } });
}
Console.WriteLine($"Uploaded item to Blob Storage: {blobName}");
}
}
Console.WriteLine("Data transfer completed.");
输出:
Uploaded item to Blob Storage: 8ee63e0d-cc6d-47b6-ad69-af40097c9134.json
Uploaded item to Blob Storage: 5f24d20c-baff-4f43-a226-e784d333ac72.json
Uploaded item to Blob Storage: 52f0fc8c-6ab8-412b-a700-d36f7ba3aae8.json
Uploaded item to Blob Storage: ca9f2958-0a2c-4eae-9734-605490ccad3d.json
Uploaded item to Blob Storage: e97888ca-3ef2-4c8e-994c-369cd01ad24b.json
Data transfer completed.
存储在Blob中的数据:
1 Balaji 23 Male
2 Pavan 20 Male
3 Likitha 24 Female
4 Sai 24 Female
5 Venkatesh 25 Male
逻辑应用程序中的设计:
/tbalaji
添加的。现在,数据可以发送到逻辑应用中的邮件,如下所示。