Код плагина:
$e =& $modx->Event;
if ($e->name == 'OnDocFormSave'){
if ($_REQUEST['parent'] == $parent && intval($parent) > 0){
$tbl_kat = "easynewsletter_categories";
$tbl_sbscr = "easynewsletter_subscribers";
$tbl_config = "easynewsletter_config";
$newsletter_header = '';
$newsletter_subject = $_REQUEST['pagetitle'];
$newsletter_newsletter = $_REQUEST['ta'];
$newsletter_footer = '';
$sql = "SELECT * FROM $tbl_config WHERE `id` = 1";
$result = $modx->db->query($sql);
$row = $modx->db->getRow($result);
$mailmethod = $row["mailmethod"];
$smtp = $row["smtp"];
$fromname = stripslashes($row["sendername"]);
$from = $row["senderemail"];
$auth = $row["auth"];
$authuser = $row["authuser"];
$authpassword = $row["authpassword"];
include_once MODX_BASE_PATH."/manager/includes/controls/class.phpmailer.php";
$sql = "SELECT email,firstname FROM $tbl_sbscr WHERE `cat_id` = $cat ORDER BY email ASC";
$ar = $modx->db->makeArray($modx->db->query($sql));
$i=0;
$sentsuccess=0;
$hand = fopen(MODX_BASE_PATH."/assets/modules/easynewsletter/logs/".date('d-m-Y H_i_s').".csv","w");
if(fwrite($hand,iconv("utf-8","windows-1251", $newsletter_subject." (проведенная рассылка)\nДата проведения: ".date('d-m-Y в H:i:s')."\n"))){
foreach ($ar as $eml){
$mail = new PHPMailer();
if ($mailmethod == IsMail) {
$mail->IsMail();
}
if ($mailmethod == IsSMTP) {
$mail->IsSMTP();
$mail->Host = $smtp;
if ($auth == 'true') {
$mail->SMTPAuth = true;
$mail->Username = $authuser;
$mail->Password = $authpassword;
} else {
$mail->SMTPAuth = false;
}
}
if ($mailmethod == IsSendmail) {
$mail->IsSendmail();
}
if ($mailmethod == IsQmail) {
$mail->IsQmail();
}
$mail->CharSet = $modx->config['modx_charset'];
$mail->From = $from;
$mail->FromName = $fromname;
$mail->Subject = $newsletter_subject;
$mail->Body = $newsletter_newsletter;
$mail->AltBody = $newsletter_newsletter;
$mail->AddAddress($eml['email']);
if(!$mail->send()) {
$out .= $lang['newsletter_sending_done4'];
return 'Main mail: ' . $_lang['ef_mail_error'] . $mail->ErrorInfo;
} else {
$string = ($i+1).";".$eml['email'].";".$eml['firstname']."\n";
fwrite($hand,iconv("utf-8","windows-1251",$string));
$sentsuccess++;
}
$i++;
}
}
else{
return "Запись в файл не удалась. И отправка тоже =(. Проверьте папку easynewsletter/logs на существование и запись";
}
fclose($hand);
}
}
Конфигурация (здесь указываете свои значения родительского ресурса, в котором сохраняются документы для автоматической отправки и ID категории рассылки из настройки EasyNewsletter):
&parent=ID папки;int;5 &cat=ID катег. рассылки;int;2
Событие:
OnDocFormSave
Dmi3yy 05.11.2018 12:45 #
надо использовать API что б не было в дальнейшем проблем
github.com/evolution-cms/docs/blob/master/ru/03_Разработчику/03_API/64_sendmail.md<br />
<br />
Вот к примеру наконецто поправили в ShopKeeper <br />
github.com/extras-evolution/Shopkeeper/pull/22/files<br />
<br />
таким образом не будет в дальнейшем проблем да и код будет чище и понятней