Sendgrid-nodejs: 附件的自定义标题

创建于 2016-03-28  ·  41评论  ·  资料来源: sendgrid/sendgrid-nodejs

你好,

我们使用 sendgrid 将 iCal (ics) 文件与邮件正文一起附加。 我们可以将 ics 文件的内容类型设置为“文本/日历”,但是无法设置额外的标题“method=REQUEST”,这会导致电子邮件客户端无法将附件识别为日历事件。

是否可以为每个附件设置自定义标题?

问候

non-library issue

所有41条评论

你好@mindnuts

我不确定我是否理解。 让我确保我明白:

  1. 您有一封带有 iCal 附件的电子邮件
  2. 您想为该电子邮件添加标题(例如 X-Header: method=Request)
  3. 现在你不能添加额外的标题。 你尝试了什么?

谢谢!

@thinkingserious

在创建电子邮件对象时,我们正在创建文件数组a la并将 .ics 文件的“contentType”设置为“text/calendar”。 为了让 Outlook 正确检测到 ics 文件,附件还应该在标题中设置 method=REQUEST。

Content-Type: text/calendar; charset=UTF-8; method=REQUEST

这在 sendgrid 客户端中可以实现吗?

您能否分享您正在使用设置此标头的代码?

@thinkingserious给你:

var sendgrid  = require('sendgrid')('YOUR_SENDGRID_API_KEY');

var email = new sendgrid.Email({
  to:       '[email protected]',
  from:     '[email protected]',
  subject:  'Hello World',
  html: 'My first email <b>through SendGrid.</b>',
  text:     'My first email through SendGrid.'
});

email.addFile({
  filename: 'calendar.ics',
  path: './calendar.ics',
  contentType: 'text/calendar'
});

sendgrid.send(email, function(err, json) {
  if (err) { return console.error(err); }
  console.log(json);
});

这是 Sendgrid 为该附件生成的标头:

Content-Disposition: attachment; filename="calendar.ics"
Content-Transfer-Encoding: base64
Content-Type: text/calendar; charset=utf-8; name="calendar.ics"

我想要的是(请求只是一个例子):

Content-Type: text/calendar; charset=utf-8; method=REQUEST; name="calendar.ics"

谢谢,这个例子很有帮助。

您是否尝试过直接使用headers参数设置标题?

@thinkingserious我不想设置电子邮件的标题,我希望能够为添加到电子邮件的附件(在我的情况下为 .ics 文件)设置自定义标题。

问候

感谢您的更新,这是有道理的。

这将不再是 v3 库的问题。 目前,您可以设置该标头的唯一方法是通过 SMTPAPI: https :

@thinkingserious感谢您的回复。 V3 的预计到达时间是多少?

应该不会超过几个月。

@mindnuts

现在距离我们还有几周的时间,您可以在此处查看 v3 /mail/send 端点: https : https ://github.com/sendgrid/sendgrid-nodejs/tree/v3beta

谢谢您的支持!

你好@thinkingserious

我想每个人都还在等待解决方案,我也是!
我还想将方法设置为 REQUEST 并遇到问题。

你有更新吗? 已经2个月了!

谢谢,
祝你今天过得愉快,
杰里米

@thinkingserious

由于这个问题,我仍然被锁定!
你有任何更新吗? 任何解决方案?

谢谢,
杰里米

再次@thinkingserious你打算很快解决这个问题吗?
我们真的需要它!

+1

response: {
      "statusCode": 400,
      "body": {
        "errors": [
          {
            "message": "The attachment type cannot contain ';', or CRLF characters.",
            "field": "attachments.0.type",
            "help": "http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type"
          }
        ]
      },
      "headers": {
        "server": "nginx",
        "date": "Wed, 01 Mar 2017 04:43:59 GMT",
        "content-type": "application/json",
        "content-length": "216",
        "connection": "close",
        "x-frame-options": "DENY",
        "access-control-allow-origin": "https://sendgrid.api-docs.io",
        "access-control-allow-methods": "POST",
        "access-control-allow-headers": "Authorization, Content-Type, On-behalf-of, x-sg-elas-acl",
        "access-control-max-age": "600",
        "x-no-cors-reason": "https://sendgrid.com/docs/Classroom/Basics/API/cors.html"
      }
    }
}

我错过了什么吗? 建议的解决方案是什么? 为什么这是关闭的?

@帕斯卡洛皮茨

这个不应该被关闭。 谢谢你的提醒。

再次@thinkingserious你在解决这个问题吗?!

你好@ataraxido

这个问题在产品路线图上,但我不知道什么时候会交付。

最近,我们收到了一些针对此功能的新投票。 每当发生这种情况时,我都会更新产品团队以帮助提高优先级。

最诚挚的问候,

埃尔默

@thinkingserious只是想补充一点,这对我们来说也是一个非常重要的功能。 产品路线图有任何更新吗?

同意@hdornier ,我会将您的声音添加到该问题中。 感谢您抽出宝贵时间投票!

@thinkingserious ,你提到这可以用 smtpapi 来完成。 你有这样的例子吗? smtpapi 的哪一部分? 某种简单的替代?

@e99cog

我不知道为什么我之前这么说:(

我不知道这是否适用于 SMTPAPI,但这里有一个如何使用它的

最诚挚的问候,

埃尔默

+1也在这里

最后,我不得不使用 mailgun 和它拥有的 message.mime 端点来解决这个问题,因为它允许我显式发送 mime。

sendgrid 是否在任何 API 中提供此功能?

嘿大家!

我是 Matt,是 SendGrid 的开发人员体验产品经理。 我有兴趣从 MIME 类型中了解您需要的更多信息。 我们通常将此作为谷歌视频群聊,以便我可以了解您的用例和您需要的细节。

请随意在我的日历上抽出时间 - https://calendly.com/matt-bernier/mail-send-mime-types

谢谢!!

也需要为即将到来的项目处理这个问题——有没有关于这个的状态? 已经2年了。

+1
任何预计到达时间?

我对这个也很感兴趣。 当然,现在一定有可能想出答案。

我不想诅咒事情,但一只小鸟告诉我我们_超级_接近部署它:) 一旦它上线,我会在这里发布更新。

大家好!

我非常兴奋地宣布此问题已得到解决并且修复程序已投入生产! 请尝试一下,如果您遇到任何其他问题,请告诉我。

感谢您对这一问题的耐心等待!

最诚挚的问候,

埃尔默

@thinkingserious这是个好消息! 你能帮助理解下一步要采取什么步骤吗? 是否支持附加标头 > method=REQUEST?

你好@thinkingserious

我刚刚尝试过,但仍然出现错误(使用 API):

{"errors":[{"message":"附件类型不能包含 ';' 或 CRLF 字符。","field":"attachments.0.type","help":" http://sendgrid. com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type "},{"message":"附件类型不能包含';'或CRLF字符。","field":"attachments. 1.type","help":" http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type "}]}

这是我正在使用 API API 做的事情:

$attachment->setType('text/calendar; charset="UTF-8"; method=REQUEST');

你确定问题解决了吗? 我们应该做什么 ?

谢谢

@ataraxido它对我
"attachments": [{ "content": "QkVHSU46....EQVINCg==", "type": "text/calendar; method=REQUEST", "filename": "file1.ics" }]

返回 202 并发送邮件

@ataraxido你不需要指定字符集,因为 SendGrid 会自动附加这个字段(同样适用于 text/html、text/plain)。 再试一次,让我们知道这是否有效🤞

@ataraxido ,

你在哪里可以让它工作?

你好@abhilashabhatia

是的,您现在可以执行"type": "text/calendar; method=REQUEST" 。 如果您遇到任何问题,请告诉我。

你好@thinkingserious

我已经能够发送“标题”方法=REQUEST,但我无法发送在 Outlook 中工作正常的内联 ICS。
即使与此自定义“标题”内联,该事件也会提醒附加的 ICS。

我认为这对您的所有客户来说都是非常广泛的用例; 你有一个工作示例或操作方法吗?

谢谢

+1 来自@ataraxido的评论——我们可以举个例子吗@thinkingserious

@ataraxido @tetreault

只是为了澄清,作为附件发送在 Outlook 中有效,但不能内联?

这现在在我们的待办事项上,我已经创建了一个问题,以防社区中有人想提供 PR。

@thinkingserious实际上 ICS 已内联到电子邮件中,但 Outlook 将其视为附件,因此它确实具有电子邮件内联事件的预期行为/显示。
我想知道为什么,尝试了很多东西。 我认为这可能是因为您强制内联项使用 base64 编码,而典型的 ICS 内联是 7 位。

你好@ataraxido

感谢您的详细阐述,我想您可能对编码有所了解。

此页面是否有帮助?
0 / 5 - 0 等级