SendGrid Asp.net controller



我有两个控制器

[HttpPost]
[ProducesResponseType(typeof(string), (int)HttpStatusCode.OK)]
[ProducesResponseType(typeof(string), (int)HttpStatusCode.BadRequest)]
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
[ProducesResponseType(typeof(string), (int)HttpStatusCode.InternalServerError)]
public async Task<ActionResult> SendEmail([FromForm]string message) {
await _emailSender.SendEmailAsync("mymail@somewhere.com", "Sending from contact", message.ToString());
return Ok();
}

[HttpPost]
[ProducesResponseType(typeof(string), (int)HttpStatusCode.OK)]
[ProducesResponseType(typeof(string), (int)HttpStatusCode.BadRequest)]
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
[ProducesResponseType(typeof(string), (int)HttpStatusCode.InternalServerError)]
[Route("subscribe")]
public async Task<ActionResult> Subscribe( string recipient, [FromForm] string message)
{
var emailTemplate = "";
await _emailSender.SendEmailAsync(recipient, "Thank you for subscribing", message.ToString());
return Ok();
}

当我使用axios发送api调用时,第一个工作得很好,像这样:

const response = await axios.post(process.env.REACT_APP_API_URL + '/SendGrid', `message=${emailContent}`)

其中emailContent是一个包含变量的完整html页面模板。而且效果很好!

当我尝试使用第二个控制器时,我的api调用几乎是相同的,我只是添加了用户的电子邮件,但由于某种原因它不起作用。

const response = await axios.post(process.env.REACT_APP_API_URL + '/SendGrid/subscribe', `recipient=${values.subscribeEmail}&message=${SubscribedEmailTemplate()}` )

不知道为什么。我需要的是一个SendGrid控制器,它接受电子邮件和html模板作为变量,并分别发送它们。

谢谢你的帮助!

我明白了。我不能从body中读取多个变量。因此,我所做的是创建一个类并将请求作为json发送。

public class EmailData
{
public string Recipient { get; set; }
public string Message { get; set; }
}
[HttpPost]
[ProducesResponseType(typeof(string), (int)HttpStatusCode.OK)]
[ProducesResponseType(typeof(string), (int)HttpStatusCode.BadRequest)]
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
[ProducesResponseType(typeof(string), (int)HttpStatusCode.InternalServerError)]
[Route("subscribe")]
public async Task<ActionResult> Subscribe(EmailData emailData)
{
if (emailData.Recipient == null )
{
return BadRequest();
}
var emailTemplate = "";
await _emailSender.SendEmailAsync(emailData.Recipient.ToString(), "Thank you for subscribing", emailData.Message.ToString());
return Ok();
}

最新更新