Я пытаюсь настроить сервер, который, помимо прочего, обрабатывает регистрации. Это стандартный процесс, с которым все знакомы: получите имя пользователя, пароль и адрес электронной почты, затем отправьте письмо с подтверждением по адресу со ссылкой, содержащей токен, который активирует учетную запись.
Размещение ссылок внутри электронного письма означает создание электронного письма в формате 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, просто проигнорируйте это письмо.
(Обратите внимание на странные пробелы и отсутствие закрывающих тегов, между прочим.)
Это сбивает меня с толку. Есть идеи, что не так и как это исправить?