You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/application/controllers/sendmail.php

251 lines
10 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Sendmail extends CI_Controller
{
function __construct()
{
parent::__construct();
//$this->output->enable_profiler(TRUE);
$this->load->model('Logs_model');
$this->load->model('InfoSMS_model');
}
public function index($status=0)
{
$this->permission->is_admin();
$data['status']=$status;
$data['nav_status']='index';
if($status==1) $data['nav_status']='sent_mail';
$data['maillist']=$this->InfoSMS_model->un_send_mail(200,$status);
$this->load->view('bootstrap/header',$data);
$this->load->view('bootstrap/sendmail');
$this->load->view('bootstrap/footer');
}
public function log_list()
{
$data['nav_status']='loglist';
$data['log']=$this->InfoSMS_model->get_mail_log();
$this->load->view('bootstrap/header',$data);
$this->load->view('bootstrap/sendmail_log_list');
$this->load->view('bootstrap/footer');
}
//设置邮件为未发送
public function set_unsend($M_SN){
if ($this->InfoSMS_model->set_mail_status($M_SN,0)) {
echo 1;
}else{
echo 0;
}
}
public function send_mail(){
@set_time_limit(0);
$result=$this->InfoSMS_model->un_send_mail(2,0);
if (empty($result))
{
echo 'null';
die();
}
$this->load->library('email');
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://hwsmtp.exmail.qq.com';//ssl://smtp.sendgrid.net';
$config['smtp_port'] = 465;
$config['smtp_user'] = 'noreply02@chinahighlights.net';//'zm198311@yahoo.com.cn';
$config['smtp_pass'] = 'eHgb2Z8G\HbR';//cits@123';
$config['smtp_timeout'] = 3600;
$config['mailtype'] = 'html';
$config['wordwrap'] = TRUE;
$config['crlf'] = "\r\n";
$config['newline'] = "\r\n";
foreach ($result as $key => $m)
{
$this->email->initialize($config);
$order_condition=false;
if (!empty($m->M_ToEmail)) {
$this->email->from('noreply02@chinahighlights.net', $m->M_FromName);
$this->email->to($m->M_ToEmail,$m->M_ToName);
$this->email->reply_to($m->M_ReplyToEmail, $m->M_ReplyToName);
if(!empty($m->M_CopyEmail)) $this->email->cc($m->M_CopyEmail);//抄送
$this->email->subject($m->M_Title);
($m->M_Web!='chtcdn' && $m->M_Web!='paypal msg') && $m->M_Body = str_replace(array("\r\n", "\r", "\n"), "<br>", $m->M_Body);
$this->email->message($m->M_Body);
if (!$this->email->send())
{
//发送失败,则记录日志,并发送一封邮件给管理员
/** 2020.01.10 通知管理员的邮件不发了! */
$error_msg=$this->email->print_debugger();
$this->Logs_model->write('send_mail',$m->M_SN,$error_msg);
echo 'false';
}
else
{
//成功发送
$m->M_Web!='paypal msg' && $order_condition=" or (M_ToEmail='$m->M_ToEmail' and M_ToName='$m->M_ToName' and M_Title='$m->M_Title') ";
$this->Logs_model->write('send_mail_success',$m->M_SN,'成功发送:'.$m->M_ToEmail);
echo 'ok';
}
}
$this->InfoSMS_model->set_mail_status($m->M_SN,1);
$this->email->clear(TRUE);
}
}
//HT邮件发送列表
public function ht_failed_mail($status=0){
$data['status']=$status;
$data['nav_status']='failed_nav';
if($status==1) $data['nav_status']='success_nav';
if($status==2) $data['nav_status']='unsend_nav';
$data['birthday_mail']=$this->InfoSMS_model->get_cusbirthdaycard_list($status);
$data['batchftp_mail']=$this->InfoSMS_model->get_batchftp_list($status);
$data['stranded_mail']=$this->InfoSMS_model->get_strandedemail_list($status);
$this->load->view('bootstrap/header',$data);
$this->load->view('bootstrap/ht_failed_mail');
$this->load->view('bootstrap/footer');
}
//HT邮件是否有发送失败的邮件
public function has_failed_mail(){
$birthday_mail=$this->InfoSMS_model->get_cusbirthdaycard_list(0,TRUE);
$batchftp_mail=$this->InfoSMS_model->get_batchftp_list(0,TRUE);
$stranded_mail=$this->InfoSMS_model->get_strandedemail_list(0,TRUE);
$num=count($birthday_mail)+count($batchftp_mail)+count($stranded_mail);
if($num==0) {
echo '暂无发送不出去的邮件';
exit();
}
//发送失败的生日邮件
$text="cusbirthdaycard(CBC_SN):";
if (!empty($birthday_mail)) {
foreach ($birthday_mail as $b) {
$text.=$b->CBC_SN.',';
}
}
//发送失败的报价信确认信邮件
$text.="<br>batchftp(BAT_SN):";
if (!empty($batchftp_mail)) {
foreach ($batchftp_mail as $t) {
$text.=$t->BAT_SN.',';
}
}
//发送失败的供应商平台邮件
$text.="<br>strandedemail(M_SN):";
if (!empty($stranded_mail)) {
foreach ($stranded_mail as $s) {
$text.=$s->M_SN.',';
}
}
//发送警告通知
$toname='jiangjianhua';
$tomail='jiangjh@citsguilin.com';
$ccmail='cht58@citsguilin.com';
$this->send_notice_mail($toname,$tomail,'cits','cht07@citsguilin.com',$ccmail, "HT有 $numHT 封邮件发送失败",$text);
}
//HT邮件发送程序是否运行
public function is_ht_mail_running(){
$start_date=date('Y-m-d');
$end_date=date('Y-m-d',strtotime("tomorrow"));
//计算当天需要发送邮件数量
$birthday_count=$this->InfoSMS_model->get_ht_mail_count($start_date,$end_date,'CS_CusBirthDayCard','CBC_BirthDay');
$batchftp_count=$this->InfoSMS_model->get_ht_mail_count($start_date,$end_date,'BatchFTP','LastEditDate');
$stranded_count=$this->InfoSMS_model->get_ht_mail_count($start_date,$end_date,'CCP_StrandedEmail','M_AddTime');
$mail_count=0;
$mail_count+=$birthday_count;
$mail_count+=$batchftp_count;
$mail_count+=$stranded_count;
if ($mail_count>0) {
//计算当天已发送邮件数量
$num1=$this->InfoSMS_model->get_ht_mail_count($start_date,$end_date,'CS_CusBirthDayCard','CBC_BirthDay','CBC_SendState');
$num2=$this->InfoSMS_model->get_ht_mail_count($start_date,$end_date,'BatchFTP','LastEditDate','BAT_State');
$num3=$this->InfoSMS_model->get_ht_mail_count($start_date,$end_date,'CCP_StrandedEmail','M_AddTime','M_Sign');
$send_count=0;
$send_count+=$num1;
$send_count+=$num2;
$send_count+=$num3;
if($send_count==0){
//如果当天有需要发送的邮件并且已发送记录为0则发送一封警告邮件
$toname='liangyuyun';
$tomail='jiangjh@citsguilin.com';
$ccmail='cht58@citsguilin.com';
$this->send_notice_mail($toname,$tomail,'cits','cht07@citsguilin.com',$ccmail, "HT邮件发送程序已停止运行","HT邮件发送程序已停止运行...");
exit();
}
}
echo 'ok!';
}
//发送邮件
public function send_notice_mail($toname,$tomail,$fromname,$frommail,$ccmail,$subject,$mailbody){
$this->load->library('Phpmailer_lib');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = '202.103.68.122:25';
$mail->SMTPAuth = true;
$mail->Username = "cht58@citsguilin.com";
$mail->Password = "B047f21d654e07";
$mail->From = $frommail;
$mail->SMTPSecure = 'tls';
$mail->CharSet = "utf-8";
$mail->Encoding = "base64";
$mail->AddAddress($tomail);
$mail->AddAddress($ccmail);
$mail->IsHTML(true);
$mail->Subject = $subject;
$mail->Body = $mailbody;
if (!$mail->Send()) {
echo "邮件发送有误 <p>";
echo "邮件错误信息: " . $mail->ErrorInfo;
} else {
echo " 邮件发送成功!<br />";
}
}
//发送邮件
public function send_like_mail($tomail){
$tomail = $tomail.'@citsguilin.com';
$subject='点赞邮件模板';
$mail_sn=time();
$mailbody='<div style="overflow:hidden">
<a style="height:auto;text-decoration: none;" href="http://saas.chtcdn.com/index.php?app=public&mod=Zan&act=comment&mailid='.$mail_sn.'">
<img src="http://saas.chtcdn.com/data/upload/Comment.png" />
</a>
<a style="height:auto;text-decoration: none;" href="http://saas.chtcdn.com/index.php?app=public&mod=Zan&act=zan&mailid='.$mail_sn.'" >
<img src="http://saas.chtcdn.com/data/upload/like.png" />
</a>
<br/>
<img style="float:left;clear:both;" src="http://saas.chtcdn.com/index.php?app=public&mod=Zan&act=index&mailid='.$mail_sn.'"/>
</div>';
$this->load->library('Phpmailer_lib');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = '202.103.68.122:25';
$mail->SMTPAuth = true;
$mail->Username = "cht58@citsguilin.com";
$mail->Password = "B047f21d654e07";
$mail->From = 'aas@citsguilin.com';
$mail->SMTPSecure = 'tls';
$mail->CharSet = "utf-8";
$mail->Encoding = "base64";
$mail->AddAddress($tomail);
$mail->IsHTML(true);
$mail->Subject = $subject;
$mail->Body = $mailbody;
if (!$mail->Send()) {
$result= "邮件发送有误: " . $mail->ErrorInfo;
} else {
$result= 'success';
}
echo($result);
}
}