你好,
我们使用 sendgrid 将 iCal (ics) 文件与邮件正文一起附加。 我们可以将 ics 文件的内容类型设置为“文本/日历”,但是无法设置额外的标题“method=REQUEST”,这会导致电子邮件客户端无法将附件识别为日历事件。
是否可以为每个附件设置自定义标题?
问候
你好@mindnuts ,
我不确定我是否理解。 让我确保我明白:
谢谢!
@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 的哪一部分? 某种简单的替代?
+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 ,
感谢您的详细阐述,我想您可能对编码有所了解。