我有一个 Google 服务帐户,如何在服务器端使用 C# 发送电子邮件?

I have a Google Service Account, how do I use C# on server side to send an email?

我有一个 Blazor 应用程序。我想从服务器端发送一封电子邮件(例如,当用户注册时)。我在我的 gmail 组织中设置了一个服务帐户,并且在我的组织中有一个用户将成为 'from' 地址。有人可以指出这个用例的正确文档吗?或者一个例子?我不需要任何 popup/web 身份验证步骤。 (电子邮件是从服务器端发送的,没有 GUI。)

(我认为这是一个可能含糊不清的问题...我不确定要问什么,支持文档建议使用堆栈溢出。耸耸肩

gmail api 选项。

为了在您的工作区域中使用服务帐户,您需要设置服务帐户并启用 domain wide deligation

Google 有几个关于如何设置它的非常好的指南。最好的 IMO 是Perform Google Workspace Domain-Wide Delegation of Authority

您只需要记住设置范围 https://www.googleapis.com/auth/gmail,而不是示例中显示的 https://www.googleapis.com/auth/admin.directory.userhttps://www.googleapis.com/auth/admin.directory.group

之后只需使用标准服务帐户代码并添加您希望委派的用户即可

var credential = GoogleCredential.FromFile(serviceAccountCredentialFilePath)
                         .CreateScoped(scopes);
var gsuiteUser = "noreply@yourdomain.com";   
    
var service = new GmailService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName,
        });

这是与此相关的先前问题。 How to use gmail api with service accounts or google Oauth in C# for sending mails? 但是我不确定您是在寻找 smtp 答案还是 Gmail api 答案。

smtp/imap 选项。

如果您想通过 SMTP/IMAP,您需要检查 Xoauth2。该过程与您需要为您的域帐户设置域范围的委派相同,但您需要使用的范围发生变化 https://www.googleapis.com/auth/gmail.imap_admin

我不知道有任何 .net 示例。