zoukankan      html  css  js  c++  java
  • MFC之使用blat发送邮件

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

    我用它进行了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  comment(lib,"blat")要配置lib的寻找目录。

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

    typedef int(__stdcall*pSend)(LPCSTR sCmd);
    	HINSTANCE hdll;
    	pSend mySend;
    	hdll = LoadLibrary(TEXT("blat32/blat.dll"));
    	mySend = (pSend)GetProcAddress(hdll, "Send");
        // mySend(dBuf)
    

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

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

    CString yzm;
        yzm.Format(TEXT("验证码:%d"),m_uYzm);
    
        CString cmd2;//
        cmd2.Format(TEXT("-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 = WideCharToMultiByte(CP_OEMCP, 0, sBuf, -1, NULL, 0, NULL, FALSE);
        //分配目标缓存
        char *dBuf = new char[dBufSize];
        memset(dBuf, 0, dBufSize);
    
        //转换
        int nRet = WideCharToMultiByte(CP_OEMCP, 0, sBuf, -1, dBuf, dBufSize, NULL, FALSE);

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

  • 相关阅读:
    在python中使用正则表达式(二)
    在python中使用正则表达式(一)
    利用cookies进行登录并封装请求方法
    fiddler学习笔记&&基本使用
    理解css相邻兄弟选择器
    selenium+Page Objects(第三话)
    selenium+Page Objects(第二话)
    selenium+Page Objects(第一话)
    python+selenium基础之XPATH轴定位(第二篇)
    关于类、方法、对象(实例):静态方法
  • 原文地址:https://www.cnblogs.com/HelloQLQ/p/12679526.html
Copyright © 2011-2022 走看看