`
guowee
  • 浏览: 176788 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用 MAPI 发送中文短信时避免乱码的方法

阅读更多

此文章转载来自于:http://www.titilima.cn/show-532-1.html

 

这个有必要记录一下,在使用 MAPI 发送中文短信时,会发现所有的英文都很正常,但是中文却变成了 "?" 这样的乱码。在接收端用内存视图查看,会发现这个 "?" 是真正的问号字符,而不是乱码。
出现这个问题的原因是发送端未将短信属性设为 Unicode 格式,具体代码如下:

 

C++代码
// IMessage* pMessage;      MAPINAMEID idName;  
ZeroMemory(&idName,  sizeof (MAPINAMEID));   
idName.lpguid = (LPGUID)&PS_MAPI;  
idName.ulKind = MNID_STRING;  
idName.Kind.lpwstrName = L "SMS:Unicode" ;  
LPMAPINAMEID pidName = &idName;  
LPSPropTagArray pPropTag = NULL;   HRESULT  hr = pMessage->GetIDsFromNames(1, &pidName, MAPI_CREATE, &pPropTag); 

这样就获得了 Unicode 短信属性的 Tag,接下来就可以设置短信并发送了。

 

SPropValue props[5];  

ZeroMemory(&props,  sizeof (props));  

props[0].ulPropTag = PR_SUBJECT_W;  

props[0].Value.lpszW = L "你好,世界!" ;   

props[1].ulPropTag = PR_SENDER_EMAIL_ADDRESS;  

props[1].Value.lpszW = L "" ;  

props[2].ulPropTag = PR_MSG_STATUS;  

props[2].Value.ul = MSGSTATUS_RECTYPE_SMS;  

props[3].ulPropTag = PR_MESSAGE_FLAGS;   props[3].Value.ul = MSGFLAG_FROMME | MSGFLAG_UNSENT;   props[4].ulPropTag = CHANGE_PROP_TYPE(pPropTag[0].aulPropTag[0], PT_BOOLEAN);   props[4].Value.b = TRUE;   hr = pMessage->SetProps( sizeof (props) /  sizeof (props[0]), (LPSPropValue)&props, NULL);   hr = pMessage->SubmitMessage(0);

 

另外,值得一提的是,PS_MAPI 要自己定义一下了,如果找不到的话:

 GUID PS_MAPI = {0x00020328, 0, 0, 0xC0,0,0,0,0,0,0,0x46};

分享到:
评论

相关推荐

    使用 MAPI 实现邮件发送.docx

    "使用 MAPI 实现邮件发送" 一、简述 使用 MAPI(Messaging Application Programming Interface)可以实现邮件发送功能。在本文中,我们将使用 Simple MAPI,这是一个子集,提供了一组易于使用的函数和相关数据结构...

    使用 MAPI 控件发送邮件(7KB)...

    在VB(Visual Basic)编程中,使用MAPI(Messaging Application Programming Interface)控件发送邮件是一种常见的方法,尤其在早期的Windows应用程序开发中。MAPI提供了一种标准接口,允许应用程序与邮件系统进行...

    在MFC程序中用MAPI发送邮件

    - 使用MAPI发送邮件可能需要安装相应的邮件客户端,如Outlook,因为MAPI通常依赖本地的邮件客户端。 6. **示例代码**: 下面是一个简单的MFC程序中使用MAPI发送邮件的示例: ```cpp #include <mapi.h> void ...

    用MAPI发送邮件(4KB)...

    在VB(Visual Basic)编程中,使用MAPI(Messaging Application Programming Interface)发送邮件是一种常见的方法。MAPI允许程序与电子邮件系统进行交互,如Outlook,从而实现自动化发送邮件的功能。以下将详细介绍...

    精彩编程与编程技巧-用 MAPI 控件实现发送邮件...

    此外,还可以参考一些社区论坛和在线教程,例如查阅 `Mapi98.CHM` 文件,这是一份详细的帮助文档,包含了关于 MAPI 控件的所有使用方法和实例。 通过以上介绍,我们可以看到,利用 MAPI 控件实现邮件的自动化发送...

    MAPI .net cf

    在.NET Compact Framework环境下,开发针对Windows Mobile等移动设备的软件时,也需要处理邮件功能,这就需要用到MAPI的C#封装。 本文将详细介绍如何在.NET Compact Framework中使用MAPI .NET CF,以及提供的文件...

    用MAPI控件批量发送文件(10KB)...

    4. **邮件的创建与附件**:在使用MAPI控件发送文件时,需要设置邮件的收件人、抄送人、主题和正文。同时,通过`MAPI.AddAttachment`方法可以将10KB大小的文件作为附件添加到邮件中。由于文件较小,这个大小限制可能...

    MAPI客户程序(应用程序中发送邮件)

    3. **使用MAPI发送邮件**:在C++中,可以通过包含"IMAPI.CPP"和"IMAPI.H"这两个文件来实现MAPI功能。`IMAPI`通常包含了封装MAPI接口的类,`IMAPI.H`则是相关的头文件,定义了接口和常量。开发者需要创建一个MAPI会话...

    Inside MAPI

    ### 实例:使用MAPI发送邮件 假设我们需要开发一个简单的应用,该应用能够通过MAPI接口发送邮件。下面是一个简化的流程: 1. **初始化MAPI会话**:首先需要调用`Logon`函数来创建一个MAPI会话。 2. **获取默认存储...

    MAPI.rar_mapi_mobile_mobile sms_sms_短信

    这可能包括短信的收件人、发件人、时间戳、内容等信息。对于MAPI,可能涉及到从邮件服务器检索短信,而不是直接访问手机存储。 5. **解析和显示**:将获取到的短信数据解析成应用程序可以处理的格式,然后在界面上...

    MAPI接口编程技术[归类].pdf

    MAPI(Messaging Application Program Interface)是Microsoft提供的一种电子邮件程序接口,允许开发者使用Outlook Express系统进行电子邮件的发送和接收。该接口提供了一些基本的电子邮件处理函数,包括邮件的发送...

    Demo - Extended MAPI in Delphi 2010

    4. **示例代码分析**:Demo中的代码可能包含了初始化MAPI会话、选择或创建邮件存储、打开邮件文件夹、创建新邮件、附件处理、发送邮件等常见操作的示例。通过这些代码,开发者可以学习到如何在Delphi 2010中正确地...

    在MFC程序中用MAPI发送邮件(43kb)

    总的来说,通过学习和理解这些源码,你可以掌握在MFC程序中利用MAPI发送邮件的方法,这对于开发具有邮件功能的应用程序非常有用。然而,由于MAPI本身较为复杂,实际使用时可能还需要查阅更多的文档和参考资料来完善...

    MAPI_MAPI 邮件_mapi_vc MA_发送邮件_邮件

    一个使用MAPI发送邮件的例子,推荐下载

    MAPI_Test.zip_visual c

    在项目"MAPI Test"中,我们可以看到一个简单的实现示例,它演示了如何使用上述方法发送一条短信。这个例子可以帮助我们更好地理解和应用MAPI接口,进一步完善我们的Windows Mobile SMS应用程序。 需要注意的是,...

    MapiMail.zip_delphi mapi_delphi mapimail_mail delphi_mapi_zip

    这篇内容将详细介绍如何在Delphi中使用MAPI发送邮件,并结合提供的"sendmail.dcr"和"sendmail.pas"文件来解析其核心功能。 首先,要使用MAPI,你需要引入相关的库。在Delphi中,这通常通过引入`mapi32.lib`库和包含...

    用MAPI发送邮件(4KB)

    标题中的“用MAPI发送邮件”指的是通过Microsoft Messaging Application Programming Interface (MAPI)来实现电子邮件的发送功能。MAPI是一种标准的接口,允许应用程序与邮件系统进行交互,包括创建、发送、接收和...

    MAPI.rar_MA_mapi

    MAPI提供了一套标准的API,使得开发者能够实现邮件发送、接收、存储和管理等功能,而无需关心底层的通信协议细节。 在【MAPI.rar_MA_mapi】这个压缩包中,包含的是一个关于使用MAPI进行电子邮件应用程序开发的源...

    ruby下用mapi发送邮件

    ruby下用mapi发送邮件

Global site tag (gtag.js) - Google Analytics