Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рассылка писем 
:(
    Опции темы
kilogram
Дата 16.6.2012, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: -1
Всего: 0



Читаю Котова, там приводится такой код.

Файл index.php
Код

<?php ## Отправка почты по шаблону (без кодирования).
// Подключаем функцию mailx() (см. ниже).
include_once "mailx.php";
include_once "mailenc.php";
// Этот текст может быть получен, например, из базы данных,
// или являться сообщением форума или гостевой книги.
$text = "Cookies  need love like everything does.";
// Получатели письма.
$tos = array("[email protected]", "[email protected]","[email protected]");
// Считываем шаблон.
$tpl = file_get_contents("mail.eml");
// Отправляем письма в цикле по получателям.
foreach ($tos as $to) {
  // Заменяем элементы шаблона.
  $mail = $tpl;
  $mail = strtr($mail, array(
    "{TO}"   => $to,
    "{TEXT}" => $text,
  ));
  // Вызываем mailx(), включенную из файла.
  mailx($mail);

}

?>


Файл mailenc.php
Код

<?php ## Кодирование заголовков письма.
// Корректно кодирует все заголовки в письме $mail с использованием 
// метода base64. Кодировка письма определяется автоматически на основе
// заголовка Content-type. Возвращает полученное письмо.
function mailenc($mail) {
  // Разделяем тело сообщения и заголовки.
  list ($head, $body) = preg_split("/\r?\n\r?\n/s", $mail, 2);
  // Определяем кодировку письма по заголовку Content-type.
  $encoding = '';
  $re = '/^Content-type:\s*\S+\s*;\s*charset\s*=\s*(\S+)/mi';
  if (preg_match($re, $head, $p)) $encoding = $p[1];
  // Проходимся по всем строкам-заголовкам.
  $newhead = "";
  foreach (preg_split('/\r?\n/s', $head) as $line) {
    // Кодируем очередной заголовок.
    $line = mailenc_header($line, $encoding);
    $newhead .= "$line\r\n";
  }
  // Формируем окончательный результат.
  return "$newhead\r\n$body";
}

// Кодирует в строке максимально возможную последовательность
// символов, начинающуюся с недопустимого символа и НЕ 
// включающую E-mail (адреса E-mail обрамляют символами < и >).
// Если в строке нет ни одного недопустимого символа, преобразование
// не производится.
function mailenc_header($header, $encoding) {
  // Кодировка не задана - делать нечего.
  if (!$encoding) return $header;
  // Сохраняем кодировку в глобальной переменной. Без использования
  // ООП это - единственный способ передать дополнительный параметр
  // callback-функции.
  $GLOBALS['mail_enc_header_encoding'] = $encoding;
  return preg_replace_callback(
    '/([\x7F-\xFF][^<>\r\n]*)/s',
    'mailenc_header_callback',
    $header
  );
}

// Служебная функция для использования в preg_replace_callback(). 
function mailenc_header_callback($p) {
  $encoding = $GLOBALS['mail_enc_header_encoding'];
  // Пробелы в конце оставляем незакодированными.
  preg_match('/^(.*?)(\s*)$/s', $p[1], $sp);
  return "=?$encoding?B?".base64_encode($sp[1])."?=".$sp[2];
}
?>


Файл mailx.php
Код

<?php ## Более удобная отправка почты.
// Функция отправляет письмо, полностью заданное в параметре $mail.
// Корректно обрабатываются заголовки To и Subject.
function mailx($mail) {
  // Разделяем тело сообщения и заголовки.
  list ($head, $body) = preg_split("/\r?\n\r?\n/s", $mail, 2);
  // Выделяем заголовок To.
  $to = "";
  if (preg_match('/^To:\s*([^\r\n]*)[\r\n]*/m', $head, $p)) {
    $to = @$p[1]; // сохраняем
    $head = str_replace($p[0], "", $head); // удаляем из исходной строки
  }
  // Выделяем Subject.
  $subject = "";  
  if (preg_match('/^Subject:\s*([^\r\n]*)[\r\n]*/m', $head, $p)) {
    $subject = @$p[1];
    $head = str_replace($p[0], "", $head);
  }
  // Отправляем почту. Внимание! Опасный прием!
  mail($to, $subject, $body, trim($head));
}
?>


Файл mail.eml
Код

Привет, {TO}!
{TEXT}
Это сообщение сгенерировано роботом - не отвечайте на него.


Запускаю код на локальном компьютере, приходит письмо всем трем получателям:
Код
$tos = array("[email protected]", "[email protected]","[email protected]");


Забросил на сервер http://santa.hut4.ru/ приходит  ТОЛЬКО 1 письмо НА [email protected].

Почему так?
PM MAIL   Вверх
Fiyanov
Дата 19.6.2012, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 255
Регистрация: 19.4.2007
Где: Kazakhstan->Te mirtau

Репутация: нет
Всего: 2



перед этой строчкой

Код

mail($to, $subject, $body, trim($head));


напишите 

Код

print $to;


если выведит array - то может быть делло в этом. $to - можзет быть просто строкой где адреса перечислены через запятую: "[email protected], [email protected], [email protected]".


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0629 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.