【问题标题】:Sending plain text e-mails using SendGrid使用 SendGrid 发送纯文本电子邮件
【发布时间】:2018-02-22 17:41:26
【问题描述】:

我正在尝试从 C# 函数发送纯文本电子邮件;但是,生成的邮件带有 HTML 标记。我已将其简化为以下控制台应用程序:

static async Task Main(string[] args)
{
    SendGridMessage msg = new SendGridMessage()
    {
        From = new SendGrid.Helpers.Mail.EmailAddress("noreply@test.com"),
        Subject = "test",
        PlainTextContent = "Hello"
    };
    msg.AddTo(new SendGrid.Helpers.Mail.EmailAddress("my@address.com", "test recipient"));            

    SendGridClient client = new SendGridClient("mykey");
    Response response = await client.SendEmailAsync(msg);

    Console.WriteLine(response.StatusCode);
    Console.ReadLine();

}

它可以很好地发送电子邮件,但是在电子邮件上查看源代码显示它是 HTML 格式的:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
<p>Hello</p>

<img src="https:// ... />
</body></html>

我尝试了各种组合,包括将 HtmlContent 设置为纯文本(这会产生非常不同的电子邮件,但仍然不是纯文本),以及如下语法:

var emailContent = new Content
{
    Type = "text/plain",
    Value = emailMessage
};
message.Content.Add(emailContent);

我知道没有中介重新格式化邮件,因为我可以从 Outlook 向自己发送纯文本电子邮件。

我使用的是 SendGrid 9.9.0,但我尝试了 9.8.0,以防它最近发生了变化。

我在这里遗漏了什么,还是我希望 SendGrid 能够做一些它无法做到的事情?

【问题讨论】:

  • 发送前SendGridMessageContents 属性的值是多少?我的猜测是它包含 HTML,您只需从列表中删除该条目。只是猜测,基于source code。我自己没有使用过 SendGrid。
  • 这也是一个很重要的问题,邮件的view source怎么操作?
  • 内容为空。就像我上面说的,如果我手动填充内容,那么它就是我设置的任何内容(例如“text/plain”、“msg”),但这对生成的电子邮件没有影响
  • @astaykov 右击outlook中的消息并选择查看源代码
  • 有没有试过设置mime类型,即msg.AddContent(MimeType.Text, "hello");(构造对象时明显没有设置PlainTextContent

标签: c# azure email sendgrid


【解决方案1】:

取自SendGrid online docs:

首先,登录您的 SendGrid 帐户,点击“设置”,然后点击“邮件” Settings”,然后下拉 Plain Content 设置,然后放置一个 不要将纯文本转换为 HTML 选项中的复选标记。务必 保存此设置。

标准似乎是电子邮件同时使用 HTML 和纯文本发送,因此纯文本版本也会自动转换为 HTML。

【讨论】:

猜你喜欢
  • 2016-03-02
  • 2010-11-10
  • 2012-11-01
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多