c# - iPhone v 卡中的变音符号

标签 c# encode vcf-vcard

我需要向 iPhone 用户发送包含 .vcf 文件的电子邮件以添加联系人。问题是联系人姓名包含元音变音符号,并且显示不正确。 我还注意到,如果我在电子邮件正文中发送相同的文本或在记事本中打开组成的 vcf 文件,符号将正确显示。

public void SendEmail(string to, string subject, string body)
    {
        using (var message = new MailMessage())
        {
            message.To.Add(new MailAddress(to));
            message.Subject = subject;
            message.SubjectEncoding = Encoding.UTF8;
            message.BodyEncoding = Encoding.UTF8;
            message.HeadersEncoding = Encoding.UTF8;
            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(body)))
            {
                string attachamentName = string.Format("{0}.vcf", subject);
                Attachment attachment = new Attachment(stream, MediaTypeNames.Application.Octet) { Name = attachamentName };
                attachment.ContentDisposition.DispositionType = DispositionTypeNames.Attachment;
                message.Attachments.Add(attachment);

                using (var client = new SmtpClient())
                {
                    client.Send(message);
                }
            }
        }
    }

incorrect v-card the same text in the body

有人可以帮我吗?

更新:抱歉,必须编辑代码示例,我不小心提交了错误的代码。

更新 #2:看来这不仅仅是 iPhone 的问题,Outlook 也无法识别变音符号。

更新#3:添加了发送电子邮件的完整代码

最佳答案

尝试更改为:

BEGIN:VCARD\r\nVERSION:2.1\r\nN;CHARSET=LATIN1:Fältskog;Agnetha\r\nFN;CHARSET=LATIN1:Agnetha Fältskog\r\nORG:\r\nTITLE:\r\nEND:VCARD

刚刚从其他地方阅读 - 看起来格式需要这个 CHARSET每个字段上的标签,似乎 LATIN1iso-8859-1字符集,而不是 utf-8需要指定这些。

关于c# - iPhone v 卡中的变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22506003/

相关文章:

c# - Sharepoint 客户端对象模型设置 ModifiedBy 字段

Python和压缩算法性能

android - 如何为textview android格式化字符串

java - asmack - 无法读取 VCard

.htaccess - vCard .vcf 文件下载浏览器支持 - godaddy

c# - ASP.NET CORE MVC 从对象集合中选择列表

c# - asp网格中如何在表格的顶部添加新行

php - 将 vcf 保存到联系人

c# - 我如何在 C# 中加密 web.config 变量

Java MD5 编码器与 C# MD5CryptoServiceProvider 不匹配