Я хочу добиться, чтобы опубликовать данные, которые включают текст и файл со страницы html, в функцию Azure, а затем отправить эти данные на электронную почту администратора. Я попробовал это, но теперь смог получить отправленный файл.
HTML-страница:
<script>
function myFormOnSubmit()
{
var formData = new FormData();
formData.append("firstname",$('#firstname').val());
formData.append("lastname",$('#lastname').val());
formData.append("phonenumber",$('#phonenumber').val());
formData.append("email",$('#email').val());
formData.append("position",'Software Engineer');
formData.append("resume", $('input[type=file]')[0].files[0]);
$.ajax({
url: "function URL",
type: 'POST',
data: formData,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
return false;
}
</script>
Функция Azure
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", "options", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
if (req.Content.IsFormData())
log.Info("form data");
if(req.Content.IsMimeMultipartContent())
log.Info("multimedia content");
var provider = new MultipartFormDataStreamProvider("TempData\\");
var multimediaProvider = await req.Content.ReadAsMultipartAsync(provider);
var formData = multimediaProvider.FormData;
var apiKey = "SendGridApi Key";
var client = new SendGridClient(apiKey);
var from = new EmailAddress("no_reply@domain.com", "Auto Generated");
var subject = "Application for " + formData["position"];
var to = new EmailAddress("admin email", "Admin");
var plainTextContent = subject;
var htmlContent = $"<strong>First Name :</strong> {formData["firstname"]}<br><strong>Last Name :</strong> {formData["lastname"]}<br><strong>Phone Number :</strong> {formData["phonenumber"]}<br><strong>Email :</strong> {formData["email"]}";
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
client.SendEmailAsync(msg);
// parse query parameter
var resumeContent = multimediaProvider.Contents?.FirstOrDefault();
if (resumeContent!=null)
{
var resume = await resumeContent.ReadAsByteArrayAsync();
var file = Convert.ToBase64String(resume);
msg.AddAttachment("test.pdf", file);
}
return req.CreateResponse(HttpStatusCode.OK);
}
но я бы не смог этого сделать, как я могу получить файл из запроса и отправить его по электронной почте?