使用C#.Net将名片发送到Outlook

时间:2011-11-03 14:23:28

标签: c# .net character-encoding outlook vcard

我有一个特定的要求,即使用C#.Net将用户联系人详细信息作为名片发送到Outlook,它可以很好地工作并将名片发送到Outlook,但是当用户名是unicode格式时会遇到问题。

样品1:
  - 用户名:疯狂
  - 它完美无缺,能够查看用户名,而且没有任何前景问题。

示例-2:
  - 用户名:Müller
  - 它发送名片,但它在展望中显示为“Müller”。

使用的逻辑是:

  1. 详细信息将写入.vcf文件(文本文件)
  2. 该文件将附在邮件中。
  3. 代码示例
    System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(filePath);
    streamWriter.Write(msgStr);
    streamWriter.Close();
    streamWriter.Dispose();

    附件_mailAttachment =新附件(filePath);
    _mailAttachment.ContentDisposition.Inline = true;
    mailMessage.Attachments.Add(_mailAttachment);
    client.Send(MAILMESSAGE);

    甚至尝试在写入文件时对内容进行编码,但没有帮助。

    任何帮助,我如何解决unicode格式化问题?

    示例Vcard内容:
    BEGIN:VCARD
    版本:2.1
    N; CHARSET = UTF-8; LANGUAGE = EN:穆勒;亚历山大
    FN; CHARSET = CHARSET = UTF-8; LANGUAGE = en:MüllerAlexander
    ORG:CEF企业发展办公室
    标题:服务经理
    END:VCARD

    但名字仍显示为“Müller,Alexander”?

2 个答案:

答案 0 :(得分:1)

您可以查看.Net vCard生成库here。它支持您要做的事情。此外,您必须记住,通常vCard文件必须编码为ASCII,因此您可能必须转换为ASCII(如QUOTED-PRINTABLE)才能工作。

答案 1 :(得分:0)

您需要为带有

的unicode字符的字段指定字符集
CHARSET=utf-8

例如:

N;CHARSET=utf-8:Müller