/** * Отправляет E-mail * @param $ToName * @param $ToEmail * @param $Subject * @param $Text * @param bool $Html * @param string $From * @param string $FromEmail */ function SendMail($ToName, $ToEmail, $Subject, $Text, $Html = false, $From = '', $FromEmail = '') { $mail = LmEmailExtended::Instance(); if ($From == '' && $FromEmail == '') { $mail->SetFrom(System::config('general/site_email'), Cp1251ToUtf8(System::config('general/site_name'))); } else { $mail->SetFrom($FromEmail, Cp1251ToUtf8($From)); } $mail->SetSubject(Cp1251ToUtf8($Subject)); if (!$Html) { $mail->AddTextPart(Cp1251ToUtf8($Text)); } else { $mail->AddHtmlPart(Cp1251ToUtf8($Text)); } $mail->AddTo($ToEmail, Cp1251ToUtf8($ToName)); if (!$mail->Send()) { ErrorHandler(USER_ERROR, 'Проблема при отправке E-mail "' . $Subject . '".', __FILE__); } }
function IndexFeedBackSend() { $err = array(); if (!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['subject']) || !isset($_POST['department']) || !isset($_POST['message']) || !isset($_POST['feedback_form'])) { GO(Ufu('index.php')); } else { if ($_POST['name'] != '') { $name = SafeDB($_POST['name'], 250, str); } else { $err[] = 'Пожалуйста, укажите Ваше имя!'; } if ($_POST['email'] != '') { $email = SafeDB($_POST['email'], 50, str); } else { $err[] = 'Пожалуйста, укажите Ваш действительный адрес E-mail!'; } if ($_POST['subject'] != '') { $subject = SafeDB($_POST['subject'], 250, str, false, false, false); } else { $err[] = 'Пожалуйста, введите тему сообщения!'; } // Проверяем капчу if (!System::user()->isDef('captcha_keystring') || System::user()->Get('captcha_keystring') != $_POST['keystr']) { $err[] = 'Вы ошиблись при вводе кода с картинки.'; } if ($_POST['department'] != '') { $department = SafeEnv($_POST['department'], 11, int); System::database()->Select('feedback', "`active`='1' and `id`='{$department}'"); if (System::database()->NumRows() > 0) { $dep = System::database()->FetchRow(); $dep_email = SafeDB($dep['email'], 255, str); $department = SafeDB($dep['name'], 255, str); } else { $err[] = 'Департамент больше не существует или обратная связь с этим департаментом отключена.'; } } else { $err[] = 'Пожалуйста, выберите департамент!'; } if ($_POST['message'] != '') { $message = SafeDB($_POST['message'], 65535, str, false, false, false); } else { $err[] = 'Пожалуйста, введите сообщение!'; } } $size = $_FILES['attach']['size']; // / 1024; if ($_FILES['attach']['error'] == UPLOAD_ERR_OK && $size >= System::config('feedback/max_filesize')) { $err[] = 'Слишком большой размер файла.'; } if (count($err) == 0) { $mail = LmEmailExtended::Instance(); $mail->SetTo($dep_email, Cp1251ToUtf8($department)); $mail->SetFrom($email, Cp1251ToUtf8($name)); $mail->SetSubject(Cp1251ToUtf8($subject)); $text = Indent("\n\t\t\tЗдравствуйте!\n\n\t\t\tС помощью формы обратной связи на сайте \"" . System::config('general/site_name') . "\"\n\t\t\tвам было отправлено сообщение.\n\n\t\t\tДепартамент: {$department}\n\t\t\tИмя: {$name}\n\t\t\tE-mail: {$email}\n\t\t\tТема сообщения: {$subject}\n\t\t\tДата отправки: " . TimeRender(time(), true, false) . "\n\t\t\tСообщение: {$message}\n\t\t"); $mail->AddTextPart(Cp1251ToUtf8($text)); if ($_FILES['attach']['error'] == UPLOAD_ERR_OK) { $mail->AddAttachmentPart(file_get_contents($_FILES['attach']['tmp_name']), $_FILES['attach']['name']); } if ($mail->Send()) { System::site()->AddTextBox('Обратная связь', '<div style="text-align: center;">Ваше сообщение успешно отправлено!</div>'); } else { System::site()->AddTextBox('Обратная связь', '<div style="text-align: center;">При отправке вашего сообщения произошла ошибка, повторите попытку или обратитесь к администратору.</div>'); } } else { $text = 'Сообщение не отправлено:<br /><ul>'; foreach ($err as $error) { $text .= '<li>' . $error . '</li>'; } $text .= '</ul>'; System::site()->AddTextBox('Ошибка', $text); IndexFeedBackForm(); } }
/** * Возвращает проинициализированный объект * @return LmEmailExtended */ public static function Instance() { if (!self::$_instance instanceof LmEmailExtended) { self::$_instance = new LmEmailExtended(new EmailOptions()); } self::$_instance->ToAddress = array(); self::$_instance->BodyParts = array(); self::$_instance->Boundary = ''; self::$_instance->From = ''; self::$_instance->FromName = ''; self::$_instance->ReplyTo = ''; self::$_instance->ReplyToName = ''; self::$_instance->Subject = ''; return self::$_instance; }
function AdminMailSend() { $topic_id = SafeEnv($_POST['topic'], 11, int); $subject = SafeEnv($_POST['subject'], 255, str); $from = SafeEnv($_POST['from'], 255, str); $from_email = SafeEnv($_POST['from_email'], 255, str); $text = SafeEnv($_POST['text'], 0, str); $text_html = SafeEnv($_POST['html'], 0, str); if (isset($_POST['auto_br'])) { $auto_br = '1'; } else { $auto_br = '0'; } if (!isset($_GET['id'])) { System::admin()->AddCenterBox('Рассылка'); System::database()->Select('mail_topics', "`id`='{$topic_id}'"); $topic = System::database()->FetchRow(); $list = System::database()->Select('mail_list', "`topic_id`='{$topic_id}'"); // Сохраняем письмо $vals = Values('', $topic_id, $subject, time(), $from, $from_email, $text, $text_html, $auto_br, count($list)); System::database()->Insert('mail_history', $vals); Audit('Рассылки: Произведена рассылка писем по теме "' . $topic['title'] . '"'); // Отправка $mail = LmEmailExtended::Instance(); $mail->SetSubject(Cp1251ToUtf8($subject)); $mail->SetFrom($from_email, Cp1251ToUtf8($from)); if (trim($text) != '') { $mail->AddTextPart($text); } if (trim(strip_tags($text_html))) { $mail->AddHtmlPart(Cp1251ToUtf8($text_html)); } $result = true; foreach ($list as $row) { $mail->SetTo($row['email']); if (!$mail->Send()) { System::admin()->HighlightError('Ошибка ' . SafeDB($row['email'], 255, str) . ': письмо отправить не удалось.'); // todo нужно выводить ошибку почему письмо не отправилось $result = false; } } if ($result) { System::admin()->Highlight('Все письма успешно отправлены.'); } else { System::admin()->HighlightError('При рассылке произошли ошибки. Письмо сохранено в истории.'); } CalcMailCounter($topic_id, true); } else { $id = SafeEnv($_GET['id'], 11, int); $set = "topic_id='{$topic_id}',subject='{$subject}',from='{$from}',from_email='{$from_email}',plain_text='{$text}',text_html='{$text_html}',auto_br='{$auto_br}'"; System::database()->Update('mail_history', $set, "`id`='{$id}'"); GO(ADMIN_FILE . '?exe=mail&a=history&topic_id=' . $topic_id); } }
function IndexFormSendMail($email, $form_name, $time, $user, $ip, $data_rows) { if ($user != 0) { $user_info = GetUserInfo($user); $user = SafeDB($user_info['name'], 255, str) . ' ( id:' . SafeDB($user_info['id'], 11, int) . ' )'; $from = $user_info['name']; $from_email = $user_info['email']; } else { $user = '******'; $from = System::config('general/site_name'); $from_email = System::config('general/site_email'); } $subject = 'Веб форма "' . SafeDB($form_name, 255, str) . '"'; $mail = LmEmailExtended::Instance(); $mail->SetSubject(Cp1251ToUtf8($subject)); $mail->SetFrom($from_email, Cp1251ToUtf8($from)); $mail->AddTo($email, Cp1251ToUtf8('Администратор')); $post_text = ''; foreach ($data_rows as $row) { if ($row[2] == 'file') { $mail->AddAttachmentPart(file_get_contents($row[1]), $row[3]); } else { $post_text .= '<b>' . SafeDB($row[0], 255, str) . ':</b><br />' . SafeDB($row[1], 0, str) . '<br />'; } } $text = Indent(' <html> <head> <title>Форма</title> </head> <body> <table cellspacing="2" cellpadding="10" border="1"> <tr> <th>Дата: ' . TimeRender($time, true, false) . '</th> <th>Пользователь: ' . $user . '</th> <th>IP: ' . $ip . '</th> </tr> <tr> <td colspan="3" style="text-align: left;">' . $post_text . '</td> </tr> </table> </body> </html> '); $mail->AddHtmlPart(Cp1251ToUtf8($text)); if (!$mail->Send()) { ErrorHandler(USER_ERROR, 'Проблема при отправке E-mail "' . $subject . '".', __FILE__); } }