c++ 利用 chilkat 库发送 html邮件

转载请注明出处:http://blog.csdn.net/yangyihongyangjiying/article/details/44757687  谢谢!

先简单介绍一下chilkat库,chikat是由一家芝加哥公司开发的商业组件,功能比较齐全,详细介绍可以到官网自行阅读不是外发产品还是可以用的,chilkat支持多个平台、语音,详细请看:http://www.chilkatsoft.com/

c++ 下载地址:http://www.example-code.com/cpp/default.asp  下载时自行认准对应IDE版本,免得出现一些莫名奇怪的bug,类似unresolved
external symbol __report_rangecheckfailure这种
log可以参考我的博文unresolved external symbol __report_rangecheckfailure 解决思路

下边是通过chilkat写下的发送html邮件demo:

static string& trim(std::string &s)
{
	if (s.empty())
	{
		return s;
	}  

	s.erase(0,s.find_first_not_of(" "));
	s.erase(s.find_last_not_of(" ") + 1);
	return s;
} 

//注意:当字符串为空时,也会返回一个空字符串
static void split(string& s, std::string& delim, vector<string >* ret)
{
	size_t last = 0;
	size_t index = s.find_first_of(delim,last);
	while (index != std::string::npos)
	{
		ret->push_back(s.substr(last,index-last));
		last=index+1;
		index=s.find_first_of(delim,last);
	}
	if (index-last>0)
	{
		ret->push_back(s.substr(last,index-last));
	}
}

bool SendHtml(string& sUser, string& sPwd, string& sSmtpHost,
	string& sSubject, string& sTo, string& sHtmlContent)
{
	CkMailMan mailman;

	//  解锁设备,CkMailMan 正常使用的前提条件
	bool success = mailman.UnlockComponent("30-day trial");
	if (!success)
	{
		Log(LOG_INFO, "can not to unlock component.");
	}

	//  设置邮箱服务器,例如:smtp.xx.com
	mailman.put_SmtpHost(sSmtpHost.c_str());

	// 设置邮箱登陆用户名、密码
	mailman.put_SmtpUsername(sUser.c_str());
	mailman.put_SmtpPassword(sPwd.c_str());

	CkEmail email;

	// 设置邮件标题
	email.put_Subject(sSubject.c_str());
	// 发送的内容
	email.SetHtmlBody(sHtmlContent.c_str());
	// 发件人
	email.put_From(sUser.c_str());

	// 下边分割收件人,并逐一添加到CKEMail中
	vector<string> vTos;
	string sSplit = ";";
	split(sTo, sSplit, &vTos);
	vector<string>::iterator iTos = vTos.begin();
	for (; iTos != vTos.end(); iTos ++)
	{
		if (!trim(*iTos).empty())
		{
			// 一次只能添加一个用户或用户组
			email.AddTo("",iTos->c_str());
		}
	}

	// 修改邮件编码格式为utf8,这个很重要,不然有些中文字符将无法很好显示
	email.put_Charset("utf8");

	success = mailman.SendEmail(email);
	if (!success) {
		Log(LOG_ERROR, "error happen to send email:%s!", mailman.lastErrorText());
		return false;
	}

	// 最后关闭链接
	success = mailman.CloseSmtpConnection();
	if (success != true) {
		Log(LOG_INFO,"Connection to SMTP server not closed cleanly.");
	}

	return true;
}

这里务必提醒一下,如果邮件中包含中文,必须通过email.put_Charset("utf8"); 将邮件的编码格式转为utf8,这样那些无法通过ascii码编码的中文才能正常显示出来。

时间: 2024-08-27 06:02:45

c++ 利用 chilkat 库发送 html邮件的相关文章

python3:利用smtplib库和smtp.qq.com邮件服务器发送邮件

python3:利用smtplib库和smtp.qq.com邮件服务器发送邮件 使用qq的邮件服务器需要注意的两个地方主要是: 1.协议问题 使用465端口 SSL 协议 2.口令问题 出现SMTPAuthenticationError 主要的原因就是口令和帐号信息不对,这里我们使用qq服务器发送 需要先到邮箱里设置独立密码(必须), 然后开启 SMTP/POP3服务.然后用qq手机安全中心扫一扫会给一个授权码, 在代码中要填写的密码是这个授权码, 而不是邮箱密码! 示例代码: # python

JavaMail(二):利用JavaMail发送复杂邮件

上一篇文章我们学习了利用JavaMail发送简单邮件,这篇文章我们利用JavaMail发送稍微复杂一点的邮件(包含文本.图片.附件).这里只贴出核心代码,其余代码可参考JavaMail(一):利用JavaMail发送简单邮件 封装发送邮件代码 /** * 封装发送邮件代码 * @author fly * @时间 2017-05-09 * */ public class Email { /** * 创建并发送一封包含文本.图片.附件的复杂邮件 * @throws Exception */ publ

如何使用确定对方已经阅读你发送的邮件并从对方邮件中确定对方的ip地址

好多大学的选修课都是按照老师的要求把作业发送到邮箱中,但是好多同学发送了作业or结业论文后不知道老师是否已经接收到.可以使用以下的方式来确定老师是否已经阅读邮件. 第一步:打开邮箱找到"已发送" 第二步:双击你发送的邮件,看到最上方的选项 点击撤回,如果对方未阅读,则可以撤回,否者无法撤回.但是超过15天的则无法撤回.所述方式比较被动,下面介绍如何在发送前设置: 第一步:点击到写信的页面: 在最下方有向下的小型双箭头:点击后如下展示: 把需要回执勾选,则对方打开文件后就会显示对方需要你

自定义表单的数据发送到邮件

背景:前几天客户让在网站里面增加一个报名的系统,于是就想到了自定义表单,但是后面客户提出要求说假如学院报名后能把报名信息发送到他的qq邮箱,这样,他就不用登陆后台查看dede的自定义表单了.觉得也不错,比较实用,先前考虑的是dede的会员邮件系统来实现,最后发现没有这个phpmailer省事.于是利用phpmailer 的class.phpmailer.类实现发送.修改:/plus/diy.php 修改了自定义表单模板的童鞋记得修改下templets/plus/post_diyform.htm 

Exchange 2013 PowerShell发送SMTP邮件

作为一个Exchange管理员,我们可能需要使用PowerShell脚本自动化的发送电子邮件.下面一起学习下如何使用PowerShell脚本在你的组织中发送SMTP电子邮件信息. 怎么做到这点呢? PowerShell V2以及后续版本都提供了核心命令可以通过SMTP发送电子邮件信息.使用下面的语法可以发送一份电子邮件信息: Send-MailMessage -To [email protected] ` -From [email protected] ` -Subject "Test E-ma

利用springframework+javax.mail发邮件(普通邮件、带附件邮件、HTML格式邮件)

Spring提供了发送电子邮件的支持,可以发送普通邮件.带附件邮件.HTML格式邮件,甚至还可以使用Velocity模板定制化邮件内容. 一.引入相关的库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <!-- spring核心库 -->         <dependency>             <groupId>org.springframework<

在Delphi中使用indy SMTP发送gmail邮件[转]

在Delphi中使用indy SMTP发送gmail邮件[转] 2012-01-01 22:44:30|  分类: Delphi |  标签: |举报 |字号大中小 订阅 在Delphi中发送email很简单,发送ssl方式的gmail邮件也很简单,只要在使用的idSMTP上附加一个TIdSSLIOHandlerSocket 就可以了. 使用控件 procedure sendMail(sToMail, sSubject, sContent: String); var SMTP: TIdSMTP;

python发送各类邮件的主要方法

python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点.     一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:    1.smtplib模块 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])   SMTP类构造函数,表示与SMTP服务器之间的连接,通过这个连接可以向smtp服务器发送指令,执

linux mail利用外部邮箱地址发邮件

mail命令发送邮件需要sendmail或postfix服务 三种常用格式发信 mail -s "标题" [email protected] #第一种方法,你可以把当前shell当成编辑器来用,编辑完内容后Ctrl-D结束 echo “mail content”|mail -s "标题" [email protected] #第二种方法,我用的最多,可能是喜欢管道的缘故吧 mail -s "标题" [email protected] < f