GMAIL API 在 C# 中发送带有附件的电子邮件

Mon*_*ong 2 gmail-api

我需要在 C# 中使用 Gmail Api 发送带附件的电子邮件的帮助。

我已经阅读了关于发送带有附件的电子邮件的 Google 网站,但示例是在 Java 中。

Pre*_*eet 7

答案为时已晚,但将其发布以防万一有人需要它:)

为此需要 MimeKit 库:可以从 NuGet 安装。

在此处输入图片说明

代码:

public void SendHTMLmessage()
{
    //Create Message
    MailMessage mail = new MailMessage();
    mail.Subject = "Subject!";
    mail.Body = "This is <b><i>body</i></b> of message";
    mail.From = new MailAddress("fromemailaddress@gmail.com");
    mail.IsBodyHtml = true;
    string attImg = "C:\\Documents\\Images\\Tulips.jpg OR Any Path to attachment";
    mail.Attachments.Add(new Attachment(attImg));
    mail.To.Add(new MailAddress("toemailaddress.com.au"));
    MimeKit.MimeMessage mimeMessage = MimeKit.MimeMessage.CreateFromMailMessage(mail);

    Message message = new Message();
    message.Raw = Base64UrlEncode(mimeMessage.ToString());
    //Gmail API credentials
    UserCredential credential;
    using (var stream =
        new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
    {
        string credPath = System.Environment.GetFolderPath(
            System.Environment.SpecialFolder.Personal);
        credPath = Path.Combine(credPath, ".credentials/gmail-dotnet-quickstart2.json");

        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            GoogleClientSecrets.Load(stream).Secrets,
            Scope,
            "user",
            CancellationToken.None,
            new FileDataStore(credPath, true)).Result;
        Console.WriteLine("Credential file saved to: " + credPath);
    }

    // Create Gmail API service.
    var service = new GmailService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = ApplicationName,
    });
    //Send Email
    var result = service.Users.Messages.Send(message, "me/OR UserId/EmailAddress").Execute();
}
Run Code Online (Sandbox Code Playgroud)

范围可以是:

GmailSend 或 GmailModify

static string[] Scope = { GmailService.Scope.GmailSend };
static string[] Scope = { GmailService.Scope.GmailModify };
Run Code Online (Sandbox Code Playgroud)

Base64UrlEncode 函数:

private string Base64UrlEncode(string input)
{
    var inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
    return Convert.ToBase64String(inputBytes)
      .Replace('+', '-')
      .Replace('/', '_')
      .Replace("=", "");
}
Run Code Online (Sandbox Code Playgroud)