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, , 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发送邮件的更多相关文章
- 批处理协同blat自动发邮件
Blat - A Windows (32 & 64 bit) command line SMTP mailer. Use it to automatically eMail logs, the ...
- 在c++中使用Outlook Object Model发送邮件
一.Outlook Object Model简介 Outlook Object Model(OOM)是outlook为开发者提供的一个COM组件,我们可以在程序中使用它来发送邮件.管理邮箱等.相关介绍 ...
- 利用SQLServer数据库发送邮件
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...
- vs2010静态链接MFC库报链接错误
由于需要将MFC程序在其它电脑上运行,所以需要将动态链接的MFC改成静态链接,本以为很简单,没想到链接的时候出现下面的链接错误: uafxcw.lib(afxmem.obj) : error LNK2 ...
- MFC中成员变量的声明顺序与析构顺序
第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...
- VC中的MFC到底是什么?
1. 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API ...
- JavaMail发送邮件
发送邮件包含的内容有: from字段 --用于指明发件人 to字段 --用于指明收件人 subject字段 --用于说明邮件主题 cc字段 -- 抄送,将邮件发送给收件人的同时抄 ...
- 技术笔记:Indy控件发送邮件
工作中有个需求需要发送邮件,因为使用的delphi6,所以自然就选择了indy组件,想想这事挺简单的.实现的过程倒是简单,看着Indy的demo很快就完了,毕竟也不是很复杂的功能. 功能要求: 1.压 ...
随机推荐
- H5系列一、静态页面总结
1.img父标签设置高度,如果容器没有设置高度的话,图片会默认把容器底部撑大几像素 -- 大概3px,给容器设置高度. 2.input标记换行后默认有一个间隙,设置float属性.input标记默认还 ...
- js中(event)事件对象
事件对象 • 什么是事件对象? • 就是当你触发了一个事件以后,对该事件的一些描述信息 • 例如: ° 你触发一个点击事件的时候,你点在哪个位置了,坐标是多少 ° 你触发一个键盘事件的时候,你按的是哪 ...
- office一直提示配置进度与图标问题
原来安装了wps office,广告太烦,于是卸载了wps安装Microsoft office 2010,安装完成后每次打开excel文件都要重新安装配置,修改注册表norereg和设置兼容模式都不行 ...
- R语言实战(一) R语言介绍
从2018年秋季(大二上学期)开始接触R语言,曾在2019年寒假读过一遍本书的第一版,感觉受益匪浅,之后遇到问题也曾回头来查阅这本书,前几天刚学习过Simulink,趁现在有空再来温习这本书,回顾一下 ...
- ASP.net MVC 构建layui管理后台(整体效果)
登录页: 首页 模块管理 角色管理,角色分配 用户管理
- Vue 学习笔记(四)
一.路由简单示例 HTML <script src="https://unpkg.com/vue/dist/vue.js"></script> <sc ...
- 【opencv系列01】OpenCV4.X介绍与安装
一.介绍 OpenCV(开源计算机视觉库:http://opencv.org)是英特尔开源的一个跨平台计算机视觉的BSD许可库,包含数百种计算机视觉算法.OpenCV由Gary Bradsky于199 ...
- 矩阵快速幂-QuickPow
矩阵快速幂引入: 1.整数快速幂: 为了引出矩阵的快速幂,以及说明快速幂算法的好处,我们可以先求整数的幂.如果现在要算X^8:则 XXXXXXXX 按照寻常思路,一个一个往上面乘,则乘法运算进行7次. ...
- JAVA用geotools读取shape格式文件
Shapefile属于一种矢量图形格式,它能够保存几何图形的位置及相关属性.但这种格式没法存储地理数据的拓扑信息. 其中,要组成一个Shapefile,有三个文件是必不可少的,它们分别是". ...
- java实现小功能
// 自写逻辑,遍历所有匹配的子字符串坐标 private static void forMatchIdx(String str1, String str2) { char[] arr1 = str1 ...