SMailer FAQ

SMailer发布之后,陆续收到一些朋友的来信,询问有关使用SMailer时遇到的一些问题,我将之作了整理,如果您对SMailer及其使用有疑问的话,不妨先阅读一下这个简单的FAQ,或许里面有你需要的答案。

Q: 在VC IDE环境下引用了SMailer,编译时出现C1010错误,是何缘故,比如:.\mutils\base64helper.cpp(143) : fatal error C1010: unexpected end of file while looking for precompiled header directive

A:如果用VC IDE环境下的Project组织程序,在引入SMailer的相关cpp文件时,请不要忘记在开头处包含stdafx.h文件:#include "stdafx.h"
如果仍有问题,请正确检查你所下载的源文件是否完整,是否包含了非法字符。

Q:在VC IDE环境下引用了SMailer,连接时出现LNK2001错误,是何缘故,比如:... error LNK2001: unresolved external symbol __imp__closesocket@4 ...

A:SMailer使用了WINSOCK提供的用于网络传输的API,它们都位于ws2_32.lib中,所以你需要在设置工程属性的时候,在连接设置中显式添加上该库,以便编译器在连接时能找到该库。

Q:在VC IDE环境下引用了SMailer,编译时出现C4786警告,是何缘故,比如:warning C4786: '……' : identifier was truncated to '255' characters in the debug information

A:SMailer中使用了S(T)L,关于在使用S(T)L时,需要注意的一些事项,请参考我的另一篇文章“如何运行C++ STL程序”

Q:SMailer在每次发送前都要对发送内容进行编码,请问这是邮件传输协议的要求,还是纯属个人习惯才将内容加密。另外,在接收邮件时是否还要对接收内容进行相应的解码操作。

A:根据SMTP协议(RFC 821)的要求,发送的邮件需要经过base64编码。这样,在使用其他邮件接受工具收信时,才能保证内容正确。由此,接受邮件时自然也需要经过解码处理。

Q:SMailer是在什么平台环境下开发的,其中所使用的STL是何版本

A:关于开发环境,在“一组实现邮件发送功能的C++封装类 — SMailer ”一文中有所提及,此处再作补充。SMailer在MSVC6下开发完成,并在Cygwin-b20下经过测试(头文件要做一点小小的改动),至于STL,我使用的是MSVC自带的P.J.STL,在STL port下的测试我没有做过,但是相信没有问题。