email — функция рассылки php-приложений

У меня проблема с использованием функции рассылки в приложении php ecomm, которое я купил у envato. Разработчик имеет функцию почтовой программы, которая используется для отправки электронных писем с веб-сайта.
Функция:

/*  Send mail with custom templates:$template : E-mail template.$array : Variables for email template. $subject : E-mail Subject.$to : E-mail receiver.*/

function mailing($template,$array,$subject,$to) {
$cfg = DB::select('SELECT * FROM config WHERE id = 1')[0];
$array['url'] = url('');
$array['name'] = $cfg->name;
$array['address'] = nl2br($cfg->address);
$array['phone'] = $cfg->phone;
$array['email'] = $cfg->email;
// Get the template from the database
$message = DB::select("SELECT template FROM templates WHERE code = '".$template."'")[0]->template;
foreach ($array as $ind => $val) {
$message = str_replace("{{$ind}}",$val,$message);
}
$message = preg_replace('/\{\{(.*?)\}\}/is','',$message);
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= 'From: '.$cfg->name.' <'.$cfg->email.'>'."\r\n";
mail($to,$subject,$message,$headers);
return true;
}

Шаблон электронной почты взят из базы данных.

Как часть процесса проверки в файле API.php, функция почтовой программы используется для отправки заказа пользователю по электронной почте с помощью следующего кода:

// Send an email to customer
mailing(
'order',
array(  'buyer_name'=>$data['name'],
'buyer_email'=>$data['email'],
'buyer_fields'=>$email_fields,
'name'=>$this->cfg->name,
'address'=>$this->cfg->address,
'phone'=>$this->cfg->phone,
'products'=>$email_products,
'total'=>$total
),
'Order Confirmation #'.$order,
$data['email']
);

Это нормально, однако, я пытаюсь заставить это также отправить мне электронное письмо с заказом вместо того, чтобы проверять административный пользовательский интерфейс, как в настоящее время работает. Кто-нибудь может указать мне правильное направление?

Спасибо заранее.

0

Решение

Простой ответ — добавить еще один вызов mail() замена $to с вашим адресом электронной почты в mailing() функция.

Но так как это, вероятно, используется более чем в одном месте в приложении, было бы неплохо добавить параметр к этой функции, который сообщает об этом по электронной почте вам и предполагаемому получателю.

function mailing($template,$array,$subject,$to, $toMe=false) {
//      new parameter                       ^^^^^^^^^^^

$cfg = DB::select('SELECT * FROM config WHERE id = 1')[0];
$array['url'] = url('');
$array['name'] = $cfg->name;
$array['address'] = nl2br($cfg->address);
$array['phone'] = $cfg->phone;
$array['email'] = $cfg->email;
// Get the template from the database
$message = DB::select("SELECT template FROM templates WHERE code = '".$template."'")[0]->template;
foreach ($array as $ind => $val) {
$message = str_replace("{{$ind}}",$val,$message);
}
$message = preg_replace('/\{\{(.*?)\}\}/is','',$message);
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= 'From: '.$cfg->name.' <'.$cfg->email.'>'."\r\n";
mail($to,$subject,$message,$headers);
// now mail yourself if $toMe is true
if ( $toMe !== false ) {
mail($toMe,$subject,$message,$headers);
}
return true;
}

Затем в любом месте приложения, куда оно отправляет почту, вы можете добавить запрос на получение копии письма. НО, если вы не добавите новый параметр, mailing() Функция будет действовать так же, как и раньше.

// Send an email to customer
mailing(
'order',
array(  'buyer_name'=>$data['name'],
'buyer_email'=>$data['email'],
'buyer_fields'=>$email_fields,
'name'=>$this->cfg->name,
'address'=>$this->cfg->address,
'phone'=>$this->cfg->phone,
'products'=>$email_products,
'total'=>$total
),
'Order Confirmation #'.$order,
$data['email'],
'me@mymail.com'     // new parameter added
);

Сейчас ни один из существующих звонков mailing будет выполнено, потому что вы использовали значение по умолчанию в прототипе функции, если вы не добавите дополнительный параметр к вызову mailing но любой из них, который вы хотите изменить, может быть легко выполнен, и, когда вы указываете адрес, когда хотите получить копию, вы можете использовать любой из ваших адресов электронной почты.

0

Другие решения

Просто добавьте еще

mail($to,$subject,$message,$headers);

выровнять и заменить $to с вашей электронной почтой. Вот и все.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector