3

我希望我的程序通过将MapiMessage传递给MAPISendMail在用户最喜欢的电子邮件客户端中撰写外发电子邮件。电子邮件的元素,例如主题,在我的程序中可以作为不可变字符串(例如)使用。将这些字符串的地址直接传递给 MAPI 实现是否被认为是“安全的” ?const char*const_cast< LPSTR >

我推测LPSTR在 MAPI 中使用它只是因为 API 非常古老,而且几年前没有广泛使用不可变字符串的做法,或者有一些神秘的原因需要它们是可变的。另一方面,也许字符串需要可变是有充分理由的,我只是不明白。不幸的是,我无法找到很多信息来支持这一点,无论是哪种方式。

4

1 回答 1

1

我不认为这是安全的。来自 MAPISEndMail 文档“如果没有丢失任何信息,则可以按原样发送消息,或者可以提示用户验证信息并在必要时更改值。MAPISendMailW 和 MAPISendMail 都与 MAPISendDocuments 函数不同,因为它们允许消息具有更大的灵活性生成。消息文本 某些客户端应用程序可能会截断太长或包含回车、换行或换页的主题行。

这对我来说表明 MapiMessage 的成员可能会被更改。此外,MAPI 不能比包含大量 LPCSTR 的 Win32 SDK 更古老。

我会在调用 MAPISendMail 之前分配新的缓冲区并复制你的 const 字符串

于 2013-05-16T21:51:10.120 回答