Vcard MMS 文件名始终为“text 1”

eri*_*cdc 7 twilio

当使用 mediaUrl 选项通过 Twilio 通过 SMS 消息发送 vcard 文件时,它会显示在 iPhone 上,文件旁边有“text 1”,就好像“text 1”是文件名一样。

我尝试重命名 vcard 文件,使用示例 vcard 文件等。无论文件显示为“文本 1”。

示例 vcf

我在 iPhone 8 和 10 上试过。我试过裸骨 VCF 文件和 Outlook 中的全功能文件,甚至在线示例,如http://www.w3.org/2002/12/cal/vcard-examples/john -doe.vcf - 无论如何,它们在 iPhone 上显示为“文本 1”。

我该怎么做才能使它成为电话号码或姓名?

编辑 --- 在@philnash 发表评论后,我能够向文件添加一个内容处置标头,该标头现在返回标头中,如下所示:

 Content-Disposition: attachment; name="John Doe"; filename="john-doe.vcf" 
Run Code Online (Sandbox Code Playgroud)

这是 Fiddler 的截图:
提琴手截图

我还将文件重命名为唯一名称,并再次尝试以防 Twilio 或沿途的任何地方缓存旧文件。标题在那里,但消息仍然在 iPhone 上显示“文本 1”。

以防它与 Azure blob 存储有关。我还编写了一个 ASP.Net MVC 文件操作,该操作返回带有内容处理标头的文件 - 它也在 iPhone 上显示为“文本 1”。 IIS服务器

phi*_*ash 4

这里是 Twilio 开发者布道者。

当 Twilio 为 MMS 提供元数据时,它会根据Content-Disposition从您提供的 URL 请求媒体时获取的标头来提供元数据。如果没有可用的值,则会将其设置为通用值,例如本例中的“文本 1”。

为了克服这个问题,您需要Content-Disposition在您正在提供服务的文件上设置响应标头。在此标头中,您可以声明名称和文件名。我无法对此进行测试(我不在美国,因此无法接收来自 Twilio 的彩信),但我猜测该名称已被使用,尽管我也会使用文件名进行测试。

标题应该看起来有点像这样:

Content-Disposition: inline; name="John Doe"; filename="john-doe.vcf"
Run Code Online (Sandbox Code Playgroud)

  • 嗨@philnash,我让它工作了。缓存肯定与此有关。我每次都可以使用相同的物理文件名将新内容上传到我的 CDN。正如您所解释的,这部分非常重要: Cache-Control: no-cache Content-Disposition: inline; filename="您要显示的名称.vcf" Content-Type: text/x-vcard (3认同)