Я строю систему, в которой вы можете отправлять электронную почту в желаемую дату и время, есть интерфейс, который собирает эти данные, и через cron отправляется электронное письмо.
Это все работает, как и ожидалось, но у меня проблема с вложениями.
Когда cron запускает и отправляет электронное письмо, создается впечатление, что выходит более 1 электронного письма, второе электронное письмо добавляет вложения предыдущего электронного письма, отправленного самому себе, и это продолжается. Я попытался сбросить значение массива, который содержит имена файлов, но все равно не повезло.
E-mail A - (имеет 3 вложения / отправляет 3 вложения)
E-mail B - (имеет 2 вложения / отправляет 5 вложений)
Электронная почта C - (имеет 2 вложения / отправляет 7 вложений)
Это странно, потому что это вывод моего массива после каждого цикла:
Successful
Array
(
[id] => 38
[company_id] => 225
[message_sender] => Favour Sanctuary
[message_subject] => Delayed Email Testing
[recipients] => xxxxxxxx@gmail.com
[message_body] => I hope you get this and the pictures
[message_type_id] =>
[time_sent] => 2019-05-08 14:17:27
[attach_file] => ["instagram8.png","networking.jpg"]
[date] => 2019-05-08
[time] => 13:19:00
[sent] => 0
)
Successful
Array
(
[id] => 39
[company_id] => 225
[message_sender] => Verdana State
[message_subject] => Attachment Mail
[recipients] => xxxxxxxx@gmail.com
[message_body] => This time you will get it
[message_type_id] =>
[time_sent] => 2019-05-08 14:33:16
[attach_file] => ["checkout.gif","kokoseller_new_logo.jpg","data_empty.png"]
[date] => 2019-05-08
[time] => 14:35:00
[sent] => 0
)
Successful
Array
(
[id] => 40
[company_id] => 225
[message_sender] => Kwame Eugene
[message_subject] => Memories of FFx
[recipients] => xxxxxxxx@gmail.com
[message_body] => Lets hope this goes well
[message_type_id] =>
[time_sent] => 2019-05-08 16:31:34
[attach_file] => ["evidence.pdf","kokoelec.jpg"]
[date] => 2019-05-08
[time] => 16:35:00
[sent] => 0
)
Вот моя функция Cron:
<code>function delayed_email(){
$check_date = date('Y-m-d');
$check_time = date('H:i:s');
$events = $this->db->query('SELECT * from record_mail where `date` IS NOT NULL and `time` IS NOT NULL and (`sent` = 0 OR `sent` IS NULL)')->result_array();
foreach($events as $e){
if($e['date']==$check_date && $e['time'] <= $check_time){
$company_id = $e['company_id'];
$subject = $e['message_subject'];
$message = $e['message_body'];
$sender = $e['message_sender'];
$recipients = $e['recipients'];
$attach_files = json_decode($e['attach_file'], TRUE);
$send = regular_email($recipients,$message,$subject,$attach_files,$company_id,$sender);
unset($attach_files);
$attach_files = array();
}
if ($send == TRUE){
echo 'Successful';
echo '<pre>';
print_r($e);
echo '
';
// $ params = array ('sent' => 1);
// $ this-> db-> where ('id', $ e ['id']);
// $ this-> db-> обновление ( 'record_mail', $ PARAMS);
} Еще {
эхо «не удалось»;
}
}
}
Вот мой помощник по электронной почте:
function regular_email($recipients, $message=NULL, $subject=NULL, $attach_files= NULL, $company_id=NULL, $sender=NULL){
$CI =& get_instance();
$CI->load->database();
$CI->load->library('email');
$CI->load->helper('url');
$to = $recipients ? $recipients : 'xxxxxx@gmail.com';
$subject = $subject ? $subject: 'Correspondence';
$body = $message;
$sender = $sender ?: company_name($company_id);
$CI->email->from('xxxxxxx@gmail.com' , $sender);
$CI->email->reply_to('xxxxxxx@gmail.com');
$CI->email->to($to);
$CI->email->subject($subject);
$CI->email->message($body);
if(is_array($attach_files)) {
foreach($attach_files as $k => $v){
$attach = base_url('uploads/email_attach_file/') . '/' . $v;
$CI->email->attach($attach);
}
} else {
//ATTACH ONE
$attach = base_url('uploads/email_attach_file/') . '/' . $attach_files;
$CI->email->attach($attach);
}
$result = $CI->email->send();
if($result){
return TRUE;
} else {
return FALSE;
};
/*if(!$CI->email->send()){
return $CI->email->print_debugger();
} */
}