使用MAPI的文件附件的Unicode文件名

时间:2012-08-07 08:05:20

标签: c++ unicode mapi

使用MAPI时,是否可以将带有unicode文件名的文件附加到电子邮件中?

文档说MAPISendMailW只能从Win8开始提供,这对我来说几乎没用。文档说在Win7及更早版本上使用MAPISendMailHelper,但MAPISendMailHelper的文档说如果MAPISendMailW不可用,它会将unicode信息转换为ANSI。

我开始怀疑它可能根本不可能,但无论如何我都要问以防万一。

2 个答案:

答案 0 :(得分:1)

简单MAPI是不可能的,MAPISendMailHelper仅在MAPISendMail不可用时调用MAPISendMailWMAPISendMail不支持Unicode。

使用extended MAPI(微软简称为“MAPI”,包含示例),这是可能的,但扩展MAPI会使您的代码变得更加复杂,并且实际上仅限于Outlook / Exchange。

答案 1 :(得分:0)

使用MAPI时,将带有Unicode文件名的文件附加到电子邮件的可能性取决于每个电子邮件客户端附带的特定简单MAPI处理程序(DLL)的实现,该客户端可以将自身注册为简单MAPI处理程序。大多数现代电子邮件客户端,如The Bat!,都实现了MAPISendMailW。

如果电子邮件客户端实现MAPISendMailW,则可以附加具有Unicode文件名的文件。如果它没有实现MAPISendMailW,那么您将无法发送包含默认Windows Codgepage之外的字符的Unicode文件名的文件,甚至MAPISendMailHelper也不会提供帮助:例如,如果您有&# 34;德国"在Windows设置中为非Unicode程序设置语言,并且您的文件名包含希腊字符,这些字符将丢失并更改为问号。