以用户别名发送消息

时间:2017-01-25 13:13:43

标签: c# asp.net-mvc email model-view-controller gmail-api

有没有办法使用Gmail API作为提供的用户别名之一而不是用户直接发送电子邮件?

我的Google组织中有一般用户,并且有一些别名,例如help@example.comsupport@example.com,这些别名都属于generaluser@example.com

目前它发送的很好,但我的应用程序的不同部分需要发送电子邮件作为指定的别名。

以下是我的代码,它以指定的用户身份发送电子邮件而没有错误。

private static async Task<GmailService> GetAuthorizedGmailService()
    {
        var serviceAccountEmail = "serviceaccount@gserviceaccount.com";
        string AuthFile = HttpContext.Current.Server.MapPath("");
        X509Certificate2 certificate = new X509Certificate2(AuthFile,"", X509KeyStorageFlags.Exportable);
        ServiceAccountCredential credential;

        credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail)
        {
            User = "user@email.com",
            Scopes = Scopes
        }.FromCertificate(certificate));

        GmailService service = null;

        if (await credential.RequestAccessTokenAsync(CancellationToken.None))
        {
            service = new GmailService(new BaseClientService.Initializer()
            {
                ApplicationName = ApplicationName,
                HttpClientInitializer = credential,
            });
        }
        return service;
    }

以上是我创建GmailService的代码,下面是我执行的SendRequest:

var mimeMessage = MimeKit.MimeMessage.CreateFromMailMessage(mail);

var gmailMessage = new Google.Apis.Gmail.v1.Data.Message
{
    Raw = Encode(mimeMessage.ToString())
};

var service = await GetAuthorizedGmailService();
UsersResource.MessagesResource.SendRequest request = service.Users.Messages.Send(gmailMessage, "user@email.co.za");
await request.ExecuteAsync();

任何人都知道如何指定在起始地址中应该使用哪个别名?

我已经尝试在HTTP标头的from部分设置它,但我仍然从用户的直接电子邮件地址获取消息。我非常希望不必为每个别名创建一个用户帐户,这样我就可以发送相应的电子邮件地址。

1 个答案:

答案 0 :(得分:0)

Tholle发表的评论是正确的。在From头中添加别名使其使用别名。

我遇到的问题是当用户分配了别名时,您还必须像在用户Gmail设置中一样将其添加到发送邮件。

我只需要在那里添加别名,然后它就不会覆盖带有用户主地址的From标头。

设置位于:设置&gt;附件&gt;发送邮件为: