当使用 mediaUrl 选项通过 Twilio 通过 SMS 消息发送 vcard 文件时,它会显示在 iPhone 上,文件旁边有“text 1”,就好像“text 1”是文件名一样。
我尝试重命名 vcard 文件,使用示例 vcard 文件等。无论文件显示为“文本 1”。
我在 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)
我还将文件重命名为唯一名称,并再次尝试以防 Twilio 或沿途的任何地方缓存旧文件。标题在那里,但消息仍然在 iPhone 上显示“文本 1”。
以防它与 Azure blob 存储有关。我还编写了一个 ASP.Net MVC 文件操作,该操作返回带有内容处理标头的文件 - 它也在 iPhone 上显示为“文本 1”。

这里是 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)