Новичок
Покинул форум
Сообщений всего: 44
Дата рег-ции: Нояб. 2012
Помог: 0 раз(а)
|
Здравствуйте.
Есть скрипты для отправки почты клиентам.
Почта отправляется с их согласия.
Письма обычным текстом отправляются отлично, но с html не отправляются.
Если допустим вставляю картинку img приходит только текст, в исходном коде сообщения пустой тег <img> без единого атрибута.
Подскажите в чем проблема?
Спасибо.
PHP:
скопировать код в буфер обмена
<?PHP define('MSG_LIST', '1;Рассылка звершена;'); define('MAIL_CONTENT_TEXT', 1 ); define('MAIL_CONTENT_HTML', 2 ); define('MAIL_CONTENT_LIST', '1;TEXT;2;HTML;'); define('MAIL_KIND_MANUAL', 1 ); //адреса вводятся вручную define('MAIL_KIND_TXT', 2 ); //список адресов из файла define('MAIL_KIND_LIST', '1;вводятся вручную;2;из файла emails.txt;'); define('MAIL_PASSWORD', 'password'); //пароль define('MAIL_LOG', 1 ); // 1 - лог включен, иначе выключен define('MAIL_FILE_LOG', 'mails_log.txt'); //файл, в который помещаются адреса куда письма были успешно отправлены define('MAIL_FILE_LIST', 'emails.txt'); //файл, со списком адресов define('WAIT_TIME', 0 .2 ); //интервал между рассылками писем, зависит от почтового сервера //define('MAIL_SENDER', '1;mail1@yandex.ru;2;mail2@yandex.ru;'); define('MAIL_SENDER', '1;test@yandex.ru;'); define('MAIL_SENDER_NAME', '1;Name1;'); //формируем тело списка, где $tpl шаблон пар <код;значение>, $code - выбранный коды, через delim function GetListItems($code, $delim, $tpl){ $buf=''; for($i=0;$i<$size;$i++){ $tmp=(in_array($aItems[$i*2 ],$aCodes))? " selected":""; $buf.="<option value=\"".$aItems[$i*2]."\"".$tmp.">".$aItems[$i*2 + 1]."</option>"; } return $buf; } //получаем элемент списка с заданным кодов (см. выше) function GetListValue($code, $delim, $tpl){ if ((($i=array_search($code,$aItems))!==false)&&($i<count ($aItems)-1 )){ return $aItems[$i+1]; } return ''; } class TMails{ var $buf; var $Password; var $From; var $Content; var $MailKind; var $EMailList; var $Title; var $MailText; function TMails(){ $this->buf = ''; } //выводим сообщение function ShowMsg($msg){ $this->buf .= '<div align=center><h4>'.$msg.'</h4></div>'; } function ShowHeader(){ $this->buf = <<< HEAD <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <title>Рассылка писем</title> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251"> <META NAME="Copy Right" CONTENT="Сайт"> <META NAME="AUTHOR" CONTENT="content"> </HEAD> <BODY> HEAD; } function ShowFooter(){ $this->buf .= '</BODY></HTML>'; } function ShowMainForm(){ $FromList = GetListItems($this->From, ';', MAIL_SENDER); $ContentList = GetListItems($this->Content, ';', MAIL_CONTENT_LIST); $KindList = GetListItems($this->MailKind, ';', MAIL_KIND_LIST); $this->buf .= <<< MAIL_PREVIEW <form action="{$_SERVER['PHP_SELF']}" method=POST> <table cellspacing="1" cellpadding="0"> <tr><td width=150>Пароль:</td><td><input type="password" name="Password"></td></tr> <tr><td width=150>От:</td><td><select size=1 name="From">{$FromList}</select></td></tr> <tr><td width=150>Тип письма:</td><td><select size=1 name="Content">{$ContentList}</select></td></tr> <tr><td width=150>Источник адресов:</td><td><select size=1 name="MailKind">{$KindList}</select></td></tr> <tr><td width=150>Список получателей (для ручного ввода - на строке один адрес):</td><td><textarea cols=40 rows=10 name="EMailList">{$this->EMailList}</textarea></td></tr> <tr><td>Заголовок:</td><td><input type=text name="Title" size=100 value="{$this->Title}"></td></tr> <tr><td>Текст письма:</td><td><textarea cols=80 rows=20 name="MailText">{$this->MailText}</textarea></td> </tr> <tr><td></td><td><input name="Submit" type=submit value="Отправить"></td></tr> </table> </form> MAIL_PREVIEW; } function SendTxt(){ if ($this->Password != MAIL_PASSWORD){ $this->buf .= 'Введен неверный пароль'; return false; } if ((trim($this->Title) == '') || (trim($this->MailText) == '')){ $this->buf .= 'Не задан заголовок или тело письма'; return false; } //заголовки $from = GetListValue($this->From, ';', MAIL_SENDER_NAME).' <'.GetListValue($this->From, ';', MAIL_SENDER).'>'; $headers = ''; if ($this->Content == MAIL_CONTENT_TEXT){ $headers = "Content-Type: text/plain; charset=windows-1251\r\n"; } else { $headers = "MIME-Version: 1.0\r\n"."Content-Type: text/html; charset=windows-1251\r\n"; } $headers .= "From: ".$from."\r\n"."Reply-To: ".$from."\r\n"."X-Mailer: PHP\r\n"; //текст if ($this->Content == MAIL_CONTENT_HTML){ $this->MailText = '<html><head><title>'.htmlspecialchars($this->Title).'</title></head><body>'. $this->MailText.'</body></html>'; } $send_count = $error_count = 0; $f_mail = ($this->MailKind == MAIL_KIND_TXT ) ? file(MAIL_FILE_LIST ) : explode("\r\n", $this->EMailList); for($i = 0; $i < $lines; $i++){ $email = trim($f_mail[$i]); if ($email != ''){ $this->buf .= $email.'<br>'; if (!@mail($email, $this->Title, $this->MailText, $headers)){ $this->buf .= ' - ошибка<br>'; $error_count++; } else { $send_count++; if ((MAIL_LOG == 1 ) && ($f_stat = @fopen(MAIL_FILE_LOG , 'a+'))){ @fwrite($f_stat, $email."\n"); } } } //задержка перед отправкой } $this->buf .= 'Отправлено: '.$send_count.'<br>Всего ошибок: '.$error_count.'<br>'; return true; } function ProcessEvents(){ $is_send = isset($_POST['Submit']); $this->Password = isset($_POST['Password']) ? $_POST['Password'] : ''; $this->From = isset($_POST['From']) ? $_POST['From'] : ''; $this->Content = isset($_POST['Content']) ? $_POST['Content'] : ''; $this->MailKind = isset($_POST['MailKind']) ? $_POST['MailKind'] : ''; $this->EMailList = isset($_POST['EMailList']) ? $_POST['EMailList'] : ''; $this->Title = isset($_POST['Title']) ? $_POST['Title'] : ''; $this->MailText = isset($_POST['MailText']) ? $_POST['MailText'] : ''; $this->ShowHeader(); if ($is_send){ switch ($this->MailKind){ case MAIL_KIND_MANUAL: case MAIL_KIND_TXT: if (!$this->SendTxt()) $this->ShowMainForm(); break; } } else { $this->ShowMainForm(); } $this->ShowFooter(); return $this->buf; } } $m = new TMails(); echo $m->ProcessEvents(); ?>
(Отредактировано автором: 21 Февраля, 2013 - 00:38:45)
|