通过Gmail API发送HTML电子邮件会导致带有纯文本标记的邮件

时间:2019-07-08 18:35:33

标签: c# email gmail html-email

我正在尝试建立一台服务器,其中包括处理注册的服务器。这是每个人都熟悉的标准过程:获取用户名,密码和电子邮件地址,然后将确认邮件发送到该地址,并带有包含将激活该帐户的令牌的链接。

在电子邮件中放置链接意味着以HTML格式处理电子邮件,据我所知,这是通过在电子邮件中设置内容类型标头值来完成的。我设置了一个Gmail帐户来进行发送,当我通过为自己注册一个帐户进行测试时,我确实收到了一封电子邮件...但这是一个纯HTML标记的纯文本电子邮件。

这是我用来发送电子邮件的代码:

using System;
using System.IO;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

using Google.Apis.Auth.OAuth2;
using Google.Apis.Gmail.v1;
using Google.Apis.Gmail.v1.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;

namespace MyProject.Mail {
    class GMailClient
    {
        private readonly GmailService _service;

        public GMailClient(UserCredential credential)
        {
            var initializer = new BaseClientService.Initializer { HttpClientInitializer = credential};
            _service = new GmailService(initializer);
        }

        public async Task SendMail(string sender, string recipient, string subject, string body) {
            var fullMessage = $@"To: {recipient}
From: {sender}
Subject: {subject}
Content-Type: text/html; charset=""utf-8""

{body}";
            var bytes = Encoding.UTF8.GetBytes(fullMessage);
            var b64 = Convert.ToBase64String(bytes).TrimEnd('=').Replace('+', '-').Replace('/', '_');
            var message = new Message
            {
                Raw = b64,
                SizeEstimate = body.Length
            };
            await _service.Users.Messages.Send(message, "me").ExecuteAsync().ConfigureAwait(true);
        }
    }
}

最奇怪的是,我收到的纯文本电子邮件不是我发送的纯HTML文本。我发送的HTML消息如下所示:

<html>
   <body>
      <p>Hi,
      <p>You're receiving this because you recently signed up for a MyProject account.  Here's your confirmation link: <a href="url here">url here</a>.
      <p> If you did not sign up for a MyProject account, please simply ignore this email.
   </body>
</html>

但是我实际上在收件箱中收到的消息如下:

  

<头> <正文>

嗨,

您收到此消息是因为您最近注册了MyProject帐户。这是您的确认链接:[URL,实际上设置为超链接的格式]

如果您没有注册MyProject帐户,请忽略此电子邮件。

(请注意,奇怪的空格和缺少结束标记等。)

这使我感到困惑。知道发生了什么问题以及如何解决吗?

0 个答案:

没有答案