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, , sBuf, -, NULL, , NULL, FALSE);
//分配目标缓存
char *dBuf = new char[dBufSize];
memset(dBuf, , dBufSize); //转换
int nRet = WideCharToMultiByte(CP_OEMCP, , sBuf, -, dBuf, dBufSize, NULL, FALSE);

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

MFC之使用blat发送邮件的更多相关文章

  1. 批处理协同blat自动发邮件

    Blat - A Windows (32 & 64 bit) command line SMTP mailer. Use it to automatically eMail logs, the ...

  2. 在c++中使用Outlook Object Model发送邮件

    一.Outlook Object Model简介 Outlook Object Model(OOM)是outlook为开发者提供的一个COM组件,我们可以在程序中使用它来发送邮件.管理邮箱等.相关介绍 ...

  3. 利用SQLServer数据库发送邮件

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...

  4. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

  5. vs2010静态链接MFC库报链接错误

    由于需要将MFC程序在其它电脑上运行,所以需要将动态链接的MFC改成静态链接,本以为很简单,没想到链接的时候出现下面的链接错误: uafxcw.lib(afxmem.obj) : error LNK2 ...

  6. MFC中成员变量的声明顺序与析构顺序

    第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...

  7. VC中的MFC到底是什么?

    1. 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API ...

  8. JavaMail发送邮件

    发送邮件包含的内容有: from字段  --用于指明发件人 to字段      --用于指明收件人 subject字段  --用于说明邮件主题 cc字段     -- 抄送,将邮件发送给收件人的同时抄 ...

  9. 技术笔记:Indy控件发送邮件

    工作中有个需求需要发送邮件,因为使用的delphi6,所以自然就选择了indy组件,想想这事挺简单的.实现的过程倒是简单,看着Indy的demo很快就完了,毕竟也不是很复杂的功能. 功能要求: 1.压 ...

随机推荐

  1. 求你了,别再说Java对象都是在堆内存上分配空间的了!

    Java作为一种面向对象的,跨平台语言,其对象.内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解.可以说,关于JVM的相关知识,基本是每个Java开发者 ...

  2. 数学-Matrix Tree定理证明

    老久没更了,冬令营也延期了(延期后岂不是志愿者得上学了?) 最近把之前欠了好久的债,诸如FFT和Matrix-Tree等的搞清楚了(啊我承认之前只会用,没有理解证明--),FFT老多人写,而Matri ...

  3. spring多数据源分布式事务的分析与解决方案

    一.概述 1.业务背景 对老系统进行重构合并,导致新系统需要同时对3个数据库进行管理.由于出现跨库业务,需要实现分布式事务. 2.开发环境 spring框架版本  4.3.10.RELEASE 持久层 ...

  4. MySQL第三章知识第一部分

    SQL的特点:是一个综合的.功能极强并且简洁容易学的语言. SQL的功能:数据查询.数据操纵.数据定义.数据控制. 数据库系统的主要功能是通过数据库支持的数据语言来实现. 菲关系模型(层次模型.网状模 ...

  5. 解决vue在控制台的 NavigationDuplicated 报错

    解决问题: 点击相同的链接,会有一个重复key的报错 const originalPush = Router.prototype.push Router.prototype.push = functi ...

  6. 面向对象第四单元(UML)及期末总结

    前言 统一建模语言(英语:Unified Modeling Language,缩写 UML),是软件架构设计建模和规约的语言. 在UML系统开发中有三个主要的模型: 功能模型:从用户的角度展示系统的功 ...

  7. Maven+JSP+Servlet+JDBC+Mysql实现的dbExper宾馆管理系统

    本文存在视频版本,请知悉 项目简介 项目来源于:https://github.com/mafulong/databaseExper-hotelMaster 这次分享的也是毕设或课程设计选择一样很多的宾 ...

  8. 关于python如何安装和配置chromedriver以及一些相关问题

    解决问题三部曲:观察,思考,尝试 1.如何配置chromedriver: https://www.cnblogs.com/lintest/p/11697059.html 常见异常解决的一个参考吧:ht ...

  9. gRPC(2):客户端创建和调用原理

    1. gRPC 客户端创建流程 1.1 背景 gRPC 是在 HTTP/2 之上实现的 RPC 框架,HTTP/2 是第 7 层(应用层)协议,它运行在 TCP(第 4 层 - 传输层)协议之上,相比 ...

  10. 简述UDF/UDAF/UDTF是什么,各自解决问题及应用场景

    UDF User-Defined-Function 自定义函数 .一进一出: 背景 系统内置函数无法解决实际的业务问题,需要开发者自己编写函数实现自身的业务实现诉求. 应用场景非常多,面临的业务不同导 ...