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.压 ...
随机推荐
- java编写非对称加密,解密,公钥加密,私钥解密,RSA,rsa
非对称加密已经被评为加密标准,主要包含(公钥加密私钥解密,或者私钥加密公钥解密)本文主要讲解的是如何用java生成 公钥和私钥并且 进行字符串加密 和字符串解密 //如需要代码copy如下 im ...
- 2020ubuntu1804server编译安装redis笔记(一)及报make test错误解决办法
redis的大名我想大家都不陌生,今天在ubuntu server上进行编译安装,虽然apt也可以安装,但作为内存数据库,redis又是c开发的,编译安装,对机器的适应和性能更好. 安装笔记如下 第1 ...
- DEV GridControl控件使用(CheckBox全选、操作按钮、事件处理,获取值)
1.GridControl控件使用 (1)绑定数据源 //绑定DataTable gridControl1.DataSource = DbHelper.ExecuteDataTable("S ...
- ggplot之多变量绘图
1. 普通plot 准备数据. x<-seq(0,2*pi,0.05) y<-sin(x) z<-cos(x) data<-data.frame(x,y,z) plot: pl ...
- Win10下如何安装和搭建appium自动化测试环境
转:https://www.cnblogs.com/huainanhai/p/11577419.html 安装Android SDK https://www.jianshu.com/p/2acdc1d ...
- scrapy全栈抓xpc练习
# spider文件 # -*- coding: utf-8 -*- import scrapy import re from scrapy import Request import json im ...
- pyppeteer基本使用demo
# -*- coding: utf-8 -*- # 类似selenium,支持异步,不需要再单独安装环境,pyppeteer自动安装环境 # 异步await要写到一个函数的内部 from pyppet ...
- 03.文件I/O
UNIX系统中的大多数文件I/O只需用到5个函数:open.read.write.lseek和close. 本章所说明的函数称为不带缓冲的I/O.不带缓冲指的是每个read和write都调用内核中的一 ...
- Java 注解简介
一,什么叫注解 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: 1 2 3 4 @Override public String t ...
- Natas15 Writeup(sql盲注之布尔盲注)
Natas15: 源码如下 /* CREATE TABLE `users` ( `username` varchar(64) DEFAULT NULL, `password` varchar(64) ...