无法使用 SendGrid WebApi 库发送 E-mail
Can't send E-mail with SendGrid WebApi lib
每次我尝试发送 E-mail 时,我都会收到与 cross-origin 相关的 BadRequest。我试图搜索这个问题,似乎是因为我是从浏览器 (localhost) 调用的,所以它不起作用。
基本上我正在对我的 Aspnet mvc 进行 Ajax 调用,他们调用 WebApi 项目
public async Task<Response> SendEmail(string email, string link, string companyName)
{
var apiKey = Environment.GetEnvironmentVariable("SMTP");
var client = new SendGridClient(apiKey);
var from = new EmailAddress("d.com", "d");
var subject = "Sending with SendGrid is Fun";
var to = new EmailAddress(email, "Caro");
var plainTextContent = "and easy to do anywhere, even with C#";
var htmlContent = "<strong>Aqui está seu contrato </strong>";
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
return await client.SendEmailAsync(msg);
}
这是回应:
{Server: nginx
Date: Tue, 10 Dec 2019 14:17:40 GMT
Connection: keep-alive
Access-Control-Allow-Origin: https://sendgrid.api-docs.io
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: Authorization, Content-Type, On-behalf-of, x-sg-elas-acl
Access-Control-Max-Age: 600
X-No-CORS-Reason: https://sendgrid.com/docs/Classroom/Basics/API/cors.html
}
不知道该做什么了。我应该在 HttpClient
Class 的 header 中添加一些内容吗?
private async Task<string> SendMail(string to, string text)
{
try
{
var msg = new SendGridMessage();
msg.SetFrom(new EmailAddress("youremail@email.com", "Your Name"));
msg.AddTo(to);
msg.SetSubject("Your subject here");
msg.AddContent(MimeType.Text, text);
var client = new SendGridClient("???"); // Your sendgrid client private id here
var response = await client.SendEmailAsync(msg);
if (response.StatusCode == System.Net.HttpStatusCode.Accepted)
return "ok";
else return "failed"; // not happening ))
}
catch (Exception e)
{
return e.Message;
}
}
每次我尝试发送 E-mail 时,我都会收到与 cross-origin 相关的 BadRequest。我试图搜索这个问题,似乎是因为我是从浏览器 (localhost) 调用的,所以它不起作用。 基本上我正在对我的 Aspnet mvc 进行 Ajax 调用,他们调用 WebApi 项目
public async Task<Response> SendEmail(string email, string link, string companyName)
{
var apiKey = Environment.GetEnvironmentVariable("SMTP");
var client = new SendGridClient(apiKey);
var from = new EmailAddress("d.com", "d");
var subject = "Sending with SendGrid is Fun";
var to = new EmailAddress(email, "Caro");
var plainTextContent = "and easy to do anywhere, even with C#";
var htmlContent = "<strong>Aqui está seu contrato </strong>";
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
return await client.SendEmailAsync(msg);
}
这是回应:
{Server: nginx Date: Tue, 10 Dec 2019 14:17:40 GMT Connection: keep-alive Access-Control-Allow-Origin: https://sendgrid.api-docs.io Access-Control-Allow-Methods: POST Access-Control-Allow-Headers: Authorization, Content-Type, On-behalf-of, x-sg-elas-acl Access-Control-Max-Age: 600 X-No-CORS-Reason: https://sendgrid.com/docs/Classroom/Basics/API/cors.html }
不知道该做什么了。我应该在 HttpClient
Class 的 header 中添加一些内容吗?
private async Task<string> SendMail(string to, string text)
{
try
{
var msg = new SendGridMessage();
msg.SetFrom(new EmailAddress("youremail@email.com", "Your Name"));
msg.AddTo(to);
msg.SetSubject("Your subject here");
msg.AddContent(MimeType.Text, text);
var client = new SendGridClient("???"); // Your sendgrid client private id here
var response = await client.SendEmailAsync(msg);
if (response.StatusCode == System.Net.HttpStatusCode.Accepted)
return "ok";
else return "failed"; // not happening ))
}
catch (Exception e)
{
return e.Message;
}
}