Asp.net core 没有电子邮件密码,sendgrid如何工作?

Asp.net core 没有电子邮件密码,sendgrid如何工作?,asp.net-core,.net-core,smtp,sendgrid,Asp.net Core,.net Core,Smtp,Sendgrid,我用这个教程 我想知道,一切正常。在传统的smtp设置中,我们在电子邮件中指定密码,为什么SendGrid系统不需要电子邮件密码 传统的smtp设置我们在电子邮件中输入密码,如下所示 var smtpClient = new SmtpClient { Host = "smtp.gmail.com", // set your SMTP server name here Port = 587, // Port EnableSsl = true, Credential

我用这个教程

我想知道,一切正常。在传统的smtp设置中,我们在电子邮件中指定密码,为什么SendGrid系统不需要电子邮件密码

传统的smtp设置我们在电子邮件中输入密码,如下所示

var smtpClient = new SmtpClient
{
    Host = "smtp.gmail.com", // set your SMTP server name here
    Port = 587, // Port 
    EnableSsl = true,
    Credentials = new NetworkCredential("from@gmail.com", "password")
};
但我不明白这个教程SendGrid不需要密码,只需要邮件地址

var client = new SendGridClient(apiKey);
var msg = new SendGridMessage()
{
   From = new EmailAddress("Joe@contoso.com", "Joe Smith"),
   Subject = subject,
   PlainTextContent = message,
   HtmlContent = message
};
msg.AddTo(new EmailAddress(email));
另一个问题,, 如果我更改了电子邮件名称Joe@contoso.com并发送电子邮件,该消息由Joe发送。如果我将电子邮件地址更改为microsoft,它将代表microsoft发送电子邮件为什么

From = new EmailAddress("Joe@contoso.com", "Joe Smith"),

好的,我知道SendGridKey存储SendGridAPI密钥,但是SendGridUser做什么

public class AuthMessageSenderOptions
{
    public string SendGridUser { get; set; }
    public string SendGridKey { get; set; }
}

谢谢。

用于连接的API密钥对您来说是唯一的。这就是为什么它应该保密。Sendgrid通过API密钥而不是电子邮件/密码组合来识别您。

但这不是一个安全问题吗?键入我想要的电子邮件地址后,我是否会代表此人发送电子邮件?如果您使用API密钥连接到sendgrid,则发送的所有电子邮件都与您的sendgrid帐户关联。您可以发送指定发件人为何人的电子邮件,但邮件服务通常会按照此电子邮件的内容创建一条消息,该消息似乎不是发件人声称的来源。电子邮件将通过sendgrid和您的sendgrid帐户发送,而不是通过您正在使用其电子邮件的人的服务发送。那么,SendGridUser是做什么的?关于这个示例代码。
public class AuthMessageSenderOptions
{
    public string SendGridUser { get; set; }
    public string SendGridKey { get; set; }
}