Отправка электронной почты с помощью Gmail API, кодирование греческих символов в теле - PullRequest
0 голосов
/ 28 марта 2019

Я обновляю приложение для отправки электронных писем, чтобы использовать API-интерфейс GMAIL вместо SMTP.

У меня проблема с кодировкой электронной почты.Субъект показан как должен, но тело не показано должным образом. [ниже скриншот полученного письма]

screenshot-of-the-recieved-email

код, который я использую для отправки письма:

public bool SendMailGmailAPI(System.Net.Mail.MailMessage mailMessage, GmailService service)
    {
        bool isEverythingOK = false;
        try
        {
            var mimeMessage = MimeKit.MimeMessage.CreateFromMailMessage(mailMessage);

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

            UsersResource.MessagesResource.SendRequest request = service.Users.Messages.Send(gmailMessage, mailMessage.From.Address);
            request.Execute();
            isEverythingOK = true;
        }
        catch (Exception e)
        {
            ErrorMessage = e.Message;
            isEverythingOK = false;
        }
        return isEverythingOK;
    }


public static string Encode(string text)
        {
            byte[] bytes = System.Text.Encoding.UTF8.GetBytes(text);

          return  System.Convert.ToBase64String(bytes)
                .Replace('+', '-')
                .Replace('/', '_')
                .Replace("=", "");
        }

mailMessage генерируется из этого:

      public MailMessage CreateEmailMessage(string mailto="")
        {
            EmailMessageToSend = new MailMessage();
            //setting from, to, cc, bcc, replyto

            //make body
            EmailMessageToSend.BodyEncoding = System.Text.Encoding.UTF8;
            //EmailMessageToSend.HeadersEncoding = System.Text.Encoding.UTF8;
            EmailMessageToSend.SubjectEncoding = System.Text.Encoding.UTF8;

            EmailMessageToSend.IsBodyHtml = true;

            EmailMessageToSend.Body = Body + "<hr>";
            EmailMessageToSend.Body += DateTime.Now.ToString("dd.MM.yyyy HH:mm");
            EmailMessageToSend.Body += "<br /><br />ΔΗΛΩΣΗ ΕΜΠΙΣΤΕΥΤΙΚΟΤΗΤΑΣ / ΑΠΟΠΟΙΗΣΗ ΕΥΘΥΝΗΣ <br /> Αυτό το μήνυμα περιέχει εμπιστευτικές και απόρρητες πληροφορίες και η χρήση τους επιτρέπεται μόνον από τον αναφερόμενο παραλήπτη. Σε περίπτωση που περιέλθει σε σας από λάθος, παρακαλούμε να το διαγράψετε άμεσα από το σύστημά σας ή να το καταστρέψετε και να ειδοποιήσετε τον αποστολέα.  <br /><br />" +" CONFIDENTIALITY WARNING / DISCLAIMER <br /> The information in this email is confidential and is intended solely for the addressee(s). If you have received this transmission in error, and you are not an intended recipient, be aware that any disclosure, copying, distribution or use of this transmission or its contents is prohibited.";

            var htmlView = AlternateView.CreateAlternateViewFromString(EmailMessageToSend.Body, null, "text/html");
            EmailMessageToSend.Subject = Subject+" - Mail v2.0";

            return EmailMessageToSend;
        }

в mimeMessage.ToString () я получаю этот результат visualstudio-textview-mm-variable

Любые предложения о том, какисправить проблему с кодировкой?

...