码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-03-31 09:14:08      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:chilkat   c++   发送邮件   中文字符   


转载请注明出处: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码编码的中文才能正常显示出来。



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

标签:chilkat   c++   发送邮件   中文字符   

原文地址:http://blog.csdn.net/yangyihongyangjiying/article/details/44757687

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!