使用亿美邮件平台发送单封验证邮件实现

亿美邮件平台有php api,不过他们是这样的格式:

只支持文件上传后发送,支持批量发送,只支持GBK格式,不支持utf8格式。。

各种坑。我需要用的是单个邮件发送,本来传递一个email给他们就可以发送邮件。但是他们api有上面的限制,所以我只能另想办法了:

[code lang=”php”]
public function index(){
$c = new Client(‘账号’,’密码’,’http://sdk.b2m.cn/UpLoadService.svc’);

/**
* 获取验证码,只需要调用一次,将 $code 保存起来,过期后再执行获取
*/
$code = $c->GetIdentifyCode();
$c->setCode($code);
$retf = $c->CreateTriggerCampaign(
array(
‘SendType’=>1,
‘MailName’=>’蒸汽之城验证邮件’,
‘Mailcontent’=>’testxxcon2fsdf22222222方了l’,
‘Fromaddress’=>’344129@s.emay.100mail.net’,
‘SendTime’=>date(‘c’)
)
);
$email = "shanmao@mechanist.co";
$datetime = time();
$text = $this->createtext($email,$datetime);
//dump($text);
$ret = $c->SendTriggerMail(
$retf,
array(
‘CreateTime’=>date(‘c’),
‘Data’=>file_get_contents($text),
//’Data’=>"",
‘FileName’=>$datetime.’.txt’,
‘FileType’=>’.txt’
)
);
//print_r( $c->getDebugInfo());
/*if ($ret==null){
echo $c->get_last_error();
}else{
dump($ret);
}*/
if($ret[‘SuccessCount’]==1){
echo ‘success’;
}

}

function createtext($email,$datetime){
$strr = "姓名,手机号码,生日,电子邮件,备注,公司名称,个人主页,公司电子邮件地址,公司网页地址,自定义文本1,自定义文本2,自定义文本3,自定义文本4,自定义文本5,自定义文本6
aaaaa,13322232324,1949-10-1,".$email.",wh,亿美,wang@sohu.com,mail.emay.cn,www.emay.cn,zdy1,zdy2,zdy3,zdy4,zdy5,zdy6";
$file=getcwd()."/attached/email/".$datetime.".txt";
if(!file_exists($file))
{
$handle=fopen($file,"w");
fwrite($handle,$strr);
fclose($handle);
$CodeSwitch = new CodeSwitch();
$CodeSwitch->DetectAndSwitch($file,"gb2312");
return $file;
}

}
[/code]

如上代码。我首先新建一个txt文件,按照亿美给我的格式生成txt后上传到亿美发送。
问题随之而来。我生成的都是UTF8编码的文件。亿美不支持!
再次坑爹。
网上找了编码转换代码。刚好thinkphp有支持。用CodeSwitch 扩展类即可实现~
用以上代码就可以实现邮件单发了。
还有一个操作就是邮件发送完成后删除你刚建的txt文件。