これは簡単なことのようですが、オンラインでヘルプを見つけることができません。
Visual Studioを使用してパブリッシュするときに、ファイル(.html)とAzure関数を含めたいです。次に、Azure関数でこのファイルにアクセスできるようにします。どうして?公開すると、.dllだけがサーバーに送信されるようです。
このファイルは、メールテンプレートになる.htmlファイルになります。自分の関数で読んでからメールを送りたいです。
どんな助けでも大歓迎です。
[Azure関数のグリッドの送信] [1]は使用できるようですが、送信できるのは1つのメールのみで、複数のメールは送信できないようです。これが目的です。
まず、プロジェクトにhtmlファイルを追加し、プロパティで[出力ディレクトリにコピー]を[新しい場合はコピーする]に設定する必要があります。
次に、関数コードで、追加のExecutionContext context
パラメーターを受け取ります(これはMicrosoft.Azure.WebJobs.ExecutionContext
であり、notでないことに注意してください)System.Threading.ExecutionContext
)。そして、あなたがあなたのhtmlファイルにアクセスする必要があるとき、あなたはそれから書くことができます:
string htmlFilePath = Path.Combine(context.FunctionAppDirectory, "test.html");
これは、VSプロジェクトのrootにファイルを追加したことを前提としています。代わりにData
フォルダーに追加した場合(ベタープラクティス)、次のように記述します。
string htmlFilePath = Path.Combine(context.FunctionAppDirectory, "Data", "test.html");
完全に機能するサンプルについては こちら を参照してください。
Azure関数で送信グリッドを使用できるようですが、送信できるのは1つのメールのみで、複数のメールは送信できないようです。これが目的です。
また、SendGridを使用しているときに、Azure関数を使用して複数のメールを送信することもできます。 ICollectorを出力として使用できます。 Microsoft.Azure.WebJobs.Extensions.SendGrid SDK を使用してそれを行うことができます。
以下はデモコードです。
using System;
using SendGrid.Helpers.Mail;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
namespace FunctionApp1
{
public static class TestSendGrid
{
[FunctionName("TestSendGrid")]
public static void Run([TimerTrigger("0 0 */1 * * *")]TimerInfo myTimer, TraceWriter log, [SendGrid(ApiKey = "sendGridKey", From ="send email")]ICollector<Mail> mails)
{
log.Info($"C# function executed at: {DateTime.Now}");
for (int i = 0; i < number; i++) // you could use your own logic
{
Mail message = new Mail()
{
Subject = $"multiple mails from SendGrid with Azure function !"
};
var personalization = new Personalization();
personalization.AddTo(new Email("[email protected]"));
Content content = new Content
{
Type = "text/plain",
Value = $"Hello Azure SendGrid!{i}"
};
message.AddContent(content);
message.AddPersonalization(personalization);
mails.Add(message);
}
}
}
}
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "xxxx",
"AzureWebJobsDashboard": "xxxx",
"sendgridapikey": "xxxxx"
}
}