MFC之使用blat发送邮件

blat的下载地址:
http://www.blat.net%20

我用它进行了smtp服务的邮件发送。这里我使用的qq邮箱,qq邮箱使用的密码是授权码,可以再qq邮箱设置里面开启smtp服务。
下载下来是文件目录结构这样的:

首先可以再本机上注册,要用管理员运行cmd,cd到blat.exe目录输入如下命令:
blat -install smtp.qq.com 576484879@qq.com 3 25
具体操作如下:

下面就是编写代码,主要就是引入blatdll.h头文件,引入lib,加载blat.dll,从dll中获取send方法,最后发送。

这里#pragma  commentlib,”blat”)要配置lib的寻找目录。

这里是不能像加载.lib文件一样去加载.dll,我不知道该怎么做,所以我用的是再代码里用LoadLibrary)方法来做的。
具体用法:

typedef int__stdcall*pSend)LPCSTR sCmd);
	HINSTANCE hdll;
	pSend mySend;
	hdll = LoadLibraryTEXT"blat32/blat.dll"));
	mySend = pSend)GetProcAddresshdll, "Send");
    // mySenddBuf)

  这里要注意的是:typedef int__stdcall*pSend)LPCSTR sCmd);win32编译的就一定要加__stdcall,不然会再dll中找不到这个方法,LPCSTR 就是const char*,虽然写LPCTSTR也能匹配到方法,但是传递过去的字符串会被自动截取。

构造我的邮件信息,这里我是发送验证码就很简单。

CString yzm;
    yzm.FormatTEXT"验证码:%d"),m_uYzm);

    CString cmd2;//
    cmd2.FormatTEXT"-to SendTo@sina.com -subject 更改密码 -body %s -u 576484879@qq.com -pw 授权码 -charset utf-8"), yzm);

这里需要把CString转换成char*,方法如下

wchar_t *sBuf = cmd2.AllocSysString);
    DWORD dBufSize = WideCharToMultiByteCP_OEMCP, 0, sBuf, -1, NULL, 0, NULL, FALSE);
    //分配目标缓存
    char *dBuf = new char[dBufSize];
    memsetdBuf, 0, dBufSize);

    //转换
    int nRet = WideCharToMultiByteCP_OEMCP, 0, sBuf, -1, dBuf, dBufSize, NULL, FALSE);

最后就是发送了
    int x = mySenddBuf);
整个就完成了。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注