使用Gmail API发送电子邮件,在正文中编码希腊字符

2023-12-23

我正在更新一个用于发送电子邮件的应用程序,以使用 GMAIL API 而不是 SMTP。

我遇到电子邮件编码问题。主题已按其应有的方式显示,但主体未正确显示。【以下是收到的邮件截图】

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

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;
        }

on mimeMessage.ToString() i get this result visualstudio-textview-mm-variable

关于如何解决编码问题有什么建议吗?


但不确定它是否仍然相关。 最近遇到了同样的问题,并花费了相当令人沮丧的时间来尝试找到解决方案。它看起来非常简单 - 不要使用 MimeMessage.ToString() 方法,因为它被作者标记为“不可靠”。请改用 WriteTo(Stream stream)。

像这样的东西:

MimeMessage mimeMessage = MimeMessage.CreateFromMailMessage(msg);
using (MemoryStream ms = new MemoryStream())
{
    mimeMessage.WriteTo(ms);
    return Convert.ToBase64String(ms.GetBuffer())
        .TrimEnd('=')
        .Replace('+', '-')
        .Replace('/', '_');
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Gmail API发送电子邮件,在正文中编码希腊字符 的相关文章

  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 有没有办法在循环内部知道您是否处于最终迭代?

    在迭代数组 或任何其他可枚举 时 是否有任何干净且简单的方法可以知道您是否处于最终迭代 例如 在 Rails 视图中 您可能要显示一组内容 并且您可能希望在它们之间放置一条水平线 但不要在每个内容之前 也不要在每个内容之后 仅限于他们之间
  • git 中缺少提交的更改

    我有一个由几个人组成的团队 使用 git flow 方法 master develop hotfixes features releases 和一个远程裸存储库 在同一个 git 存储库上工作 我们有一个包含一些提交的修补程序 已成功合并到
  • 连接更改上的 API 挂钩

    我在 Android 手机上有一个打印机检查应用程序 它的基本检查表即使检查员没有互联网连接 也可以进行打印机检查 一旦电话恢复接收 互联网 我想提交检查 我正在考虑使用 Android 服务来设计应用程序因此它将使用 sqlite 保存检
  • hashCode 或 equals 中的 HibernateException

    我正在使用 spring 和 hibernate 当在没有实现 equals 和 hashCode 的情况下进行获取时 一切正常 当我添加这两个方法并执行查询时 哈希码内会抛出一个 LazyinitializationException 我
  • Django:无法导入名称

    我刚刚在向我的网站部署新更新时遇到了一个非常烦人的问题 我有两个独立的网站 其中之一是开发版本 现在 当我想将更改应用于生产时 由于错误消息 它将无法工作 文件 usr lib python2 6 dist packages django
  • 无法粘贴到 MacVim 中

    我从 Vim 外部复制文本 其他应用程序中的 V 粘贴文本没有问题 在 MacVim 中 它不起作用 在插入模式下 什么也没有出现 在正常模式下 我得到E353 Nothing in register 发生这种情况时set clipboar
  • 为什么 AspectJ @Around 建议执行两次?

    我有以下 AspectJ 示例 它是作为 hello world 风格的概念证明而完成的 中的建议代码StyleAspect似乎执行了两次 即使实际代码在SomeClass仅执行一次 根据需要 这是代码 首先 一个名为 WithStyle
  • 从 Mozilla Firefox 重定向到 Android 应用程序 - 深层链接

    我使用意图过滤器来允许深度链接到我的应用程序的活动 就像下面给出的例子一样 https developer android com training app indexing deep linking html https develope
  • 从 jQuery 返回 PHP

    我想通过 jQuery 回显 HTML 下拉值
  • 实施 Spring-Social 记住我

    我有一个启用 Spring Security 的项目 我已经使用登录表单实现了 记住我 效果很好 但我在登录表单上也有来自 google facebook 的社交登录 效果很好 问题是他们不记得用户 有没有办法设置类似的 记住我 功能 我当
  • 回滚时,App 和 DB 哪个应该主动执行任务?

    MySql InnoDB 设置自动提交关闭并使用默认隔离级别 REPEATABLE READ 有两种场景 两个不同的事务 T1 和 T2 按以下时间顺序运行 1 time T1 T2 t1 update row 1 gt OK t2 upd
  • 使用 Gson 反序列化 Java 8 LocalDateTime

    我有带有 2014 03 10T18 46 40 000Z 格式的日期时间属性的 JSON 我想使用 Gson 将其反序列化为 java time LocalDateTime 字段 当我尝试反序列化时 出现错误 java lang Ille
  • 将 po 文件编译为 mo 的好处

    编译 GNU gettext 的好处和主要原因是什么 po 可移植对象 文件到 mo 机器对象 我看到很多程序正在读取 解析 po直接地 我没有使用 wordpress 但在他们的文档中它说 https codex wordpress or
  • github 52 周参与如何运作?

    我对我的 github 52 周参与图感到困惑 我在那里的大多数项目只有一位作者 我 然而 在 52 周的参与中 所有者的承诺 为零 尽管我所有的承诺都是由我自己完成的 我的页面 https github com yule https gi
  • Phonegap Pushnotification + node-gcm:群组通知

    我在 Node 应用程序中有这样的东西 var sender new gcm Sender XPTO var registrationIds whatever var message new gcm Message data avatar
  • Android 可绘制对象对于 API <23 显得拉伸,而对于 API 23 及更高版本则正确

    我目前正在为我的列表视图使用列表选择器 并使用图层列表创建它 这是我的 xml 代码
  • 在 matplotlib 中用两个 Y 轴(两个单位)绘制单个数据

    我正在尝试绘制单个时间序列 但想用左轴和右轴上的两个单位表示它 这是我到目前为止所做的 fig ax1 plt subplots t np arange 1 50 1 s1 np sin t 20000 40000 synthetic ts
  • POST 到 HTTPS 身份验证错误

    这是使用 C 控制台应用程序发布到 https 站点的简单帖子 我也对 Web 服务使用了相同的内容 当我运行它时它冻结了 下载了 fiddler 并在 身份验证 选项卡中我看到 不存在代理验证标头 不存在 WWW 验证标头 早些时候我使用
  • Objective-C 获取可为空 bool 的方法是什么?

    我应该如何获取一个可以在 Objective C 中分配 true false 和 nil 的 bool 值 Objective C 这样做的方式是什么 很像 C 的 Nullable 我希望能够使用 nil 值来表示未定义 An NSNu
  • 使用Gmail API发送电子邮件,在正文中编码希腊字符

    我正在更新一个用于发送电子邮件的应用程序 以使用 GMAIL API 而不是 SMTP 我遇到电子邮件编码问题 主题已按其应有的方式显示 但主体未正确显示 以下是收到的邮件截图 我用来发送电子邮件的代码 public bool SendMa