третий пример - подкрепляем файлы и изображения - отправка почты на php
А вот это уже не простой, но очень интересный пример! В нем мы не просто отправляем письмо, в нем мы отправляем приложенный файл! Но и это еще не все, помимо отправки простого файла, мы еще и прикрепляем к письму картинку! Думаю стоит обратить на это внимание, когда передо мной появилась такая задача, я потратил немало времени на ее решение. Ах да, забыл! Еще и письмо мы отформатируем с помощью html - т.е. мы получаем мощный инструмент, с помощью которого мы сможем генерировать любые необходимые нам письма. Для обработки писем я использовал исходники, найденные на просторах интернета. Первоисточник я сейчас не смогу найти, поэтому ссылка ведет на файл, который лежит на моем сайте, но, честно признаюсь, этот класс писал не я! Собственно, вот ссылка: class.phpmailer.zip - не забудьте разархивировать ;-) На хостинге от PeterHost для корректной обработки картинок необходимо в папку со скриптом положить файл .htaccess следующего содержания:
<IfModule mod_charset.c>
CharsetRecodeMultipartForms off
</IfModule>
<?php
function show_form()
{
?>
<form action="" method=post enctype="multipart/form-data">
<div align="center">
<br />Имя*<br />
<input type="text" name="name" size="40">
<br />Контактный телефон<br />
<input type="text" name="tel" size="40">
<br />Контактный email*<br />
<input type="text" name="email" size="40">
<br />Teма<br />
<input type="text" name="title" size="40">
<br />Сообщение*<br />
<textarea rows="10" name="mess" cols="30"></textarea>
<br />Файл<br />
<input name="attachfile" type="file" size="28">
<br />Изображение<br />
<input name="attachimage" type="file" size="28">
<br /><br /><input type="submit" value="Отправить" name="submit">
</div>
</form>
* Помечены поля, которые необходимо заполнить
<?
}
function complete_mail() {
// $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
$_POST['title'] = substr(htmlspecialchars(trim($_POST['title'])), 0, 1000);
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 30);
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 30);
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 50);
// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['name']))
output_err(0);
// если неправильно заполнено поле email - показываем ошибку 1
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
output_err(1);
// если не заполнено поле "Сообщение" - показываем ошибку 2
if(empty($_POST['mess']))
output_err(2);
// обратите внимание, теперь мы можем писать красивые письма, с помощью html тегов ;-)
$mess = '
<b>Имя отправителя:</b>'.$_POST['name'].'<br />
<b>Контактный телефон:</b>'.$_POST['tel'].'<br />
<b>Контактный email:</b>'.$_POST['email'].'<br />
'.$_POST['mess'];
// подключаем файл класса для отправки почты
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = 'test@test.ru'; // от кого
$mail->FromName = 'www.php-mail.ru'; // от кого
$mail->AddAddress('to@yandex.ru', 'Имя'); // кому - адрес, Имя
$mail->IsHTML(true); // выставляем формат письма HTML
$mail->Subject = $_POST['title']; // тема письма
// если был файл, то прикрепляем его к письму
if(isset($_FILES['attachfile'])) {
if($_FILES['attachfile']['error'] == 0){
$mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
}
}
// если было изображение, то прикрепляем его в виде картинки к телу письма.
if(isset($_FILES['attachimage'])) {
if($_FILES['attachimage']['error'] == 0){
if (!$mail->AddEmbeddedImage($_FILES['attachimage']['tmp_name'], 'my-attach', 'image.gif', 'base64', $_FILES['attachimage']['type']))
die ($mail->ErrorInfo);
$mess .= 'А вот и наша картинка:<br /><img src="cid:my-attach" border=0><br />я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) ';
}
}
$mail->Body = $mess;
// отправляем наше письмо
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
echo 'Спасибо! Ваше письмо отправлено.';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
« второй пример, посложнее, но с проверкой данных | генератор форм обратной связи на php » |
Ниже Вы можете пофлудить - можете спросить, обругать, похвалить и т.д.
Добавление комментариев отключено
Здравствуйте! Ребята, помогите пожалуйста с подключением: можно подробнее описать что и куда вставить, написать прописать и т п ? ато я смотрю в книгу.....(((
<br>Спасибо
12.10.2013 ХЗ
А что нужно подключить?
что-то тут такая же фигня с кодировкой, как в предыдущих примерах.
до этого проблема решалась заменой функции отправки на mb_send_mail(...), которая присылала то же самое, но в правильно кодировке.
а тут письмо отправляется через $mail->Send(), совершенно непонятно как тут исправлять кодировку....
20.09.2013 Александр
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Используя класс class.phpmailer.php, для смены кодировки достаточно в обработчике после строки $mail = new PHPMailer(); добавить строку с указанием кодировки, например так: $mail->CharSet = "UTF-8";
----------------------------------------------------------------------------------------------------------------------------------------------------------------
А, понял, там
$mess .=
т.е. картинки прикрепляются. Спасибо)
не понял механизм прикрепления файлов к сообщению! как я понял сообщение комплектуется в переменной $mess, типа Имя отправителя: ... и тд, но зачем присоединять её же саму еще раз?
...
'.$_POST['mess']; - вот эта строка
почему вы назвали две переменные одинаково?
и где там посмотреть указанный формат для загрузки картинок?
третий пример не работает, такое вылетает Mailer Error: Language string failed to load: instantiate
пожалйуста помогите
Спасибо организатору этого обсуждения ! Разобрался ! Почитал коменты и решил вопрос через AddBCC.
<br><br>Мне было достаточно что бы отправить письмо благодарности с вложенным им же файлом отправителю. В благодарность отвечаю на нескольк раз повторявшийся здесь вопрос, но не никто на него не ответил.
<br><br>Многие хостеры отрезают возможность отправлять письма с сервера. Для этого нужно обоснованно попросить хостера что бы включили такую возможность. Некоторые включают такую услугу за отдельную плату, а некоторые вообще не реагируют на такие письма. Завел бесплатный хостинг вот здесь api.hostinger.ru/redir/377719 и проблемы такие отпали. Все бесплатно ! В том числе и организация рассылок до 100 писем в течении 30 минут.
Перечитал ответы попробовал применить и переписал строку if(!empty($_POST[email][3]))
все равно на другой е-майл не отправляется
в итоге выдает
X-Sendmail-Cmdline: sendmail.pl -t -i
To: sergeb32@gmail.com , $_POST[email], $row[email]
Subject: =?windows-1251?B?z/Du8fLu6SDx6vDo7/Ig8eDp8uAg8SDs5e3+?=
То есть первый е-майл пишет правильно а вот второй который прописан
$mail->AddAddress('sergeb32@gmail.com, $_POST[email], $row[email]');
из базы не берет. Что делать ?
Вроде все в норме, файл прикрепляется и отправляется, но ... Отправляется только на один адрес, второй е-майл как не пробоваал отправить не получается хоть $email $row[email] - пишет $email но сам е майл из базы не берет, даже сессию пробоварл применить все равно пишет$email
Здравствуйте, такая проблема. пытаюсь прикрепить pdf файл, но он на почту не приходит, так же как и картинка!
$mail = new PHPMailer();
$mail->From = 'qq@qq.by';
$mail->FromName = 'www.qq.by';
$mail->AddAddress("q.qq@tut.by", $_row['name']);
$mail->IsHTML(true);
$mail->AddAttachment("/mod_warranty/temp_pdf/".$row['id'].".pdf");
$mail->AddEmbeddedImage("/mod_warranty/html/template_pdf/qq.png", "warranty", "qq.png", "base64", ".png");
$message = '<h1>Вас приветствует компания ООО "qq"</h1><img src="cid:warranty" border="0">';
$mail->Body = $message;
if (!$mail->Send()) die ('Mailer Error:'.$mail->ErrorInfo);
echo "Отправлено!";
в чем может быть проблема?
установил. пишет:: Warning: require(class.phpmailer.php) [function.require]: failed to open stream: No such file or directory in /var/www/vhosts/u4956145.plsk.regruhosting.ru/httpdocs/monolit-stone.net/request-an-estimate/index.php on line 323 - что необходимо делать
25.02.2013 Александр
Либо class.phpmailer.php не залили, либо путь к нему неправильно указали
Мне не помогает $mail->CharSet = "UTF-8";
на mail.ru тогда всё из формы крокозябрами приходит. Может ещё где-то нужно менять кодировку? А необходимо, чтоб файлы с русскими именами приходили, поскольку контингент женщины отправляют файлы в Ворде по русски.
Ваш скрипт, у меня, выдал ошибку \"
<br>Parse error: syntax error, unexpected $end in /home/uganskbu/public_html/mailf/index.php on line 1\"
Приветствую коллеги, помогите решить проблему: Нужно чтобы можно было прикрепить не только один фаил, а много если указан <input class=\"file\" name=\"attachfile\" type=\"file\" size=\"36\" multiple=\"multiple\" > а то прикрепляется только последний фаил. чтобы одним инпутом можно было отослать несколько фаилов если их суммарный вес не привышает 20 мб .
<br>Можно как то пройтись циклом forich по массиву $_FILE[\'attachfile\'][] и прикрепить все фалы к письму, находящиеся в массиве \"attachfile\"
Здравствуйте!после отправления письма появляется:
<br>
<br>Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\\home\\localhost\\www\\888\\class.phpmailer.php on line 1091
<br>
<br>Warning: fread() [function.fread]: Length parameter must be greater than 0 in Z:\\home\\localhost\\www\\888\\class.phpmailer.php on line 1092
<br>
<br>Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\\home\\localhost\\www\\888\\class.phpmailer.php on line 1095
<br>Спасибо! Ваше письмо отправлено.
<br>
<br>Если у кого то возникала такая ситуация помогите решить проблему....
11.12.2012 Игорь
Проблема в устаревшей функции magic_quotes_runtime. Вот официальное сообщение php.net/manual/en/migration53.deprecated.php и тут www.php.su/php/?migration53. Решение в замене этой функции на ini_set(«magic_quotes_runtime», 0); и ini_set(«magic_quotes_runtime», $magic_quotes); Удачи.
Здравствуйте! Мне нужен скрипт на подобии этого, только по возможности чуть больше. Чтоб там можно было выбирать категории, пункты, местоположение и т.д. 10 фотографий, капча и главное чтоб после отправки сообщения отправитель получал рандомный код, к примеру (Ваше сообщение отправлено, код сообщения: 7367263). Это нужно для сайта объявлений. Я могу и заплатить, просто узнать сколько это будет стоить. Заранее спасибо!
01.08.2012 Павел
Добрый день. Могу взяться за написание кода. Пишите на электронку pavelbog@mail.ru
а как и куда ставить адресс что бы файлы присылались на свой адресс
Здравствуйте!
Подскажите, пожалуйста, как сделать форму, чтобы можно было выбрать из нескольких выпадающих списков параметры (которые должны отправиться в письме), потом написать комментарий, а потом добавить файл. И если необходимо добавить несколько файлов, а потом всё это отправить. И на сколько реально, чтобы генерировался порядковый номер и отправителю с сайта приходило "ответное" письмо с заданным текстом и с порядковым номером (в письмо мне так же должен быть добавлен этот номер).
Спасибо!
Здравствуйте!
Форма работала долгое время на одном хостинге, после переноса письма приходят, но без прикреплённого файла, как можно проверить в чём ошибка?
24.05.2012 Николас
Видимо у меня была старая версия скрипта, проверил приведёный выше код - файл прикрепляется. Будем искать проблему в коде
Опишу проблему точнее:
index.php на Wordpress через функцию include включает в сайдбар другой php файл (contactform.php).
contactform.php выполняет свою работу, но после этого всё то, что стояло после include('contactform.php'); в index.php просто отказывается грузиться. Кто знает в чем может быть проблема? Могу дать ссыль..
В файле contactform.php есть функция exit(); - видимо в ней дело. И как её обойти, чтобы продолжить выполнение index.php? Когда меняешь exit на return - форма прекращает номальную работу.
Проблема такого рода, что когда вставляешь эту форму в шаблон вордпресс через php функцию include, то после отправки страница формы, выводится все что было в коде до формы и сама форма, а далее код шаблона отказывается грузится (другие сайдбары, футер не грузятся), как будто что-то в коде формы прекращает вывод прочего кода. Какие могут быть причины/решения?
Нужно сделать рассылку на несколько адресов:
- первый адрес должен быть обязательным, а второй браться из формы на сайте.
Писал - $mail->AddAddress('my@gmail.com','.$_POST['input_name'][3].');
и так:
$mail->AddAddress('my@gmail.com','$empty_input[3]');
- выдает ошибку.
Спасибо
07.05.2012 Александр
// первый адрес
$mail->AddAddress('my@gmail.com','my@gmail.com');
// второй если заполнено поле в форме
if(!empty($_POST['input_name'][3]))
$mail->AddAddress($_POST['input_name'][3], $_POST['input_name'][3]);
08.05.2012 Для Александр
Спасибо огромное - работает прекрасно
Спасибо вам огромное за ооочень отличную и просто написанную статью!!!
<br>Здоровья вам и успехов!
приветствую!!! у меня вопрос а как можно в таких скриптах сделать форму от кого ($mail->From = $mail->From = 'test@test.ru';) не одно а множество то есть чтоб письмо приходило не от одного почтового ящика а от множество почтовых ящиков кто знает как это можно сделать??? и второй вопрос возможно ли сейчас отсылать на почту звуковые видео или флеш файлы но не в прикреплён нам виде??? кто знает отпишитесь можно на маю почту ynii@list.ru
Во-первых, огромное спасибо автору за титаническую работу.
Во-вторых, у меня вопрос: Что можно сделать, чтобы после отправки формы, при обновлении страницы, письмо повторно НЕ отправлялась? При этом хотелось бы, чтобы сообщение о доставке письма также появлялось.
Спасибо.
Вот как выглядит, у меня на сайте, доработанный код автора:
Есть форма ввода данных с аттачем в ПХП-файле:
......<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" id="formID" class="formular" name="formular">
<div><input type="text" size="50" name="name" id="name" placeholder="Имя:" class="validate[required,length[0,100]] text-input" /></div>
<div><input type="email" size="50" name="email" id="email" placeholder="@" class="validate[required,custom[email]] text-input" /></div>
<div><input type="subject" size="50" name="subject" id="subject" placeholder="Тема:" class="validate[required,length[0,40]] text-input" /></div>
<input type="text" id="fileName" class="file_input_textbox" placeholder="Файла нет" readonly />
<div class="file_input_div">
<input type="button" value="Прикрепить" class="file_input_button" />
<input type="file" name="file" class="file_input_hidden" onchange="javascript: document.getElementById('fileName').value = this.value" />
</div>
<div><textarea rows="5" cols="50" name="mess" id="mess" placeholder="Сообщение:" class="validate[required,length[6,300]]"></textarea></div>
<input type="submit" class="button1" value="Отправить" name="submit" />
<input type="reset" class="button2" name="button2" id="button2" value="Отменить" />
</form> ......
и в этом же файле( вверху ) скрипт отправки письма:
<?php
if(isset($_POST['submit'])) { /***---Если форма отправлена---***/
function send_mail()
{ $name = htmlspecialchars($_POST['name']); }
{ $subject = htmlspecialchars($_POST['subject']); }
{ $email = htmlspecialchars($_POST['email']); }
$style = 'font-family:Verdana, Arial, Helvetica, sans-serif; font-size : 13px; color:#474747;padding:6px;border-bottom:1px solid #cccccc;' ;
$style2 = 'font-family:Verdana, Arial, Helvetica, sans-serif; font-size : 13px; color:#474747;padding:10px;border-bottom:1px solid #cccccc;' ;
$message =
"<table cellspacing=0 cellpadding=0 border=0 >
<tr><td valign=top style='{$style};width:33%;border-right:1px solid #cccccc;'><b>Имя пославшего: </b> </td> <td valign=top style='{$style};'>" .$_POST['name']. "</td></tr>
<tr><td valign=top style='{$style};width:33%;border-right:1px solid #cccccc;'><b>Электронный адрес: </b> </td> <td valign=top style='{$style};'>" .$_POST['email']. "</td></tr>
<tr><td valign=top style='{$style};width:33%;border-right:1px solid #cccccc;'><b>Тема: </b> </td> <td valign=top style='{$style};'>" .$_POST['subject']. "</td></tr>
<tr><td valign=top style='{$style};width:33%;border-right:1px solid #cccccc;'><b>Сообщение: </b> </td> <td valign=top style='{$style2};width:600px; line-height: 27px;'>" .$_POST['mess']. "</td></tr>
</table><br>";
include "class.phpmailer.php";// подключаем класс
if(empty($_POST['name'])||empty($_POST['email'])||empty($_POST['subject']))/***--------Do Validations---------***/
{ $errors .= "\n Name, Email, Subject are required fields. "; }
if(IsInjected($visitor_email))
{ $errors .= "\n Bad email value!"; }
//send the email
if(empty($errors))
{
$mail = new PHPMailer();
$mail->From = $_POST['email'];
$mail->FromName = $_POST['name'];
$mail->AddAddress('deeand7@gmail.com');
$mail->IsHTML(true);
$mail->Subject = $_POST['subject']." | Письмо пришло с сайта БЛА-БЛА.РУ";
if(isset($_FILES['file']))
{ if($_FILES['file']['error'] == 0)
{ $mail->AddAttachment($_FILES['file']['tmp_name'],$_FILES['file']['name']); }
}
$mail->Body = $message;
if (!@$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
{
echo "<script language='JavaScript'>alert('Спасибо ".$_POST['name']." за использование контактной формы! Ваш email был отправлен и я свяжусь с Вами в кратчайшие сроки.')</script>";
}
if (!empty($_POST['submit'])) send_mail();
}}
function IsInjected($str){
$injections = array('(\n+)','(\r+)','(\t+)','(%0A+)','(%0D+)','(%08+)','(%09+)');
$inject = join('|', $injections); $inject = "/$inject/i";
if(preg_match($inject,$str)){ return true; }
else{ return false; } }
?>......
27.03.2012 Михаил
Спасибо за формы. Подскажите, пожалуйста, как мне прописать кодировку $headers = "Content-type: text/plain; charset = utf-8";
чтобы приходили письма по-русски, а не кубики
01.04.2012 Александр
Используя класс class.phpmailer.php, для смены кодировки достаточно в обработчике после строки $mail = new PHPMailer(); добавить строку с указанием кодировки, например так: $mail->CharSet = "UTF-8";
06.02.2013 Илья
Есть проблема.
<br>Для отправки письма, надо минимально заполнить поля Имя, маил, Тема. Только тогда письмо отправляется. Если заполнить меньше, и нажать \"Отправить\", то записи в форме стираются, а надо выводить ошибку.
<br>Ошибку выводит только при неправильном вводе е-маила.
А какие настройки должны быть на сервере? Почему два одинаковых сайта, расположенных на разнах хостах работают по разному, вернее на одном работает отправка, на втором пишет что ошибок нету, письмо успешно отправлено, но письмо на е-майл не приходит!
13.01.2012 biv
может в спам уходит?
я так тоже долго не понимал в чем дело, пока в спам не глянул и нашел 10 штук своих отправленных. почта на гмэйл была.
Возможно ли как-нибудь удалить строчку exit(); и при этом чтобы форма корректно работала?
Здравствуйте!
Помогите, плиз!
Суть в том что если не все обязательные поля заполнить, то скрипт как и положено выдает ошибку, НО при этом не отображается ничего что ниже скрипта и из-за этого весь сайт перекашивается.
Если вот в этой части удалить exit(); то при НЕ заполненных обязательных полях сайт не перекашивается, как и положено выдает ошибку, НО при этом ниже ошибки пишет что "ваше письмо отослано" и отсылает письмо (хотя по идее не должен) :
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
Заранее спасибо!
18.12.2011 Влад
Анна, выход был найден следующим образом - помещать пхп код в самом низу страницы (вот прямо перед закрывающимся телом)
Кнопки пусть будут там где им положено быть, а обработать-то их можно и вконце страницы =)
класс
хороший класс :)
сенкс!
Работает на ура с первого раза) Довольно интересный у вас стиль кодинга))
Капча не выдает никакой код. Под формой выходит \"подформа\" (такое слово, только что в голову пришло!) в виде комментариев, которые вообще то видимо не должны показываться. В комментах нужно бы более подробно расписать, что как и куда. Для того, кто это не делал, это ж темный лес!
Подключила этот пример себе на страницу,вот что выскочило:
Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\home\portal\www\template\forall\class.phpmailer.php on line 1091
Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\home\portal\www\template\forall\class.phpmailer.php on line 1095
Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\home\portal\www\template\forall\class.phpmailer.php on line 1091
Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\home\portal\www\template\forall\class.phpmailer.php on line 1095
Спасибо! Вfше письмо отправлено.
А на самом деле письмо так и не пришло.Посмотрела,оно находится в заглушке z:\tmp\!sendmail
и оно очень длинное!Абракодабра.
На сайте не нашла ответ на данное сообщение,хотя оно уже повторялось.
Помогите,пожалуйста,кто знает,как исправить ошибку эту?
И еще вопрос-как убрать прикрепление картинки к письму?
Спасибе всем,кто ответит.
И почему я , смотря на это , чувствую себя бараном ? :(
<br>Пытаюсь выучить этот язык , но ничего не выходит , сплошные огорчения .
29.07.2013 Сергей
Все потому что верно будет вот так <br /> ;-)
вроде все сделал правильно. но после нажатия на кнопку отправит выходит вот это на чистой странице. что я делаю не так
<?
}
function complete_mail() {
// $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
$_POST['title'] = substr(htmlspecialchars(trim($_POST['title'])), 0, 1000);
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 30);
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 30);
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 50);
// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['name']))
output_err(0);
// если неправильно заполнено поле email - показываем ошибку 1
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
output_err(1);
// если не заполнено поле "Сообщение" - показываем ошибку 2
if(empty($_POST['mess']))
output_err(2);
// обратите внимание, теперь мы можем писать красивые письма, с помощью html тегов ;-)
$mess = '
<b>Имя отправителя:</b>'.$_POST['name'].'<br />
<b>Контактный телефон:</b>'.$_POST['tel'].'<br />
<b>Контактный email:</b>'.$_POST['email'].'<br />
'.$_POST['mess'];
// подключаем файл класса для отправки почты
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = 'test@test.ru'; // от кого
$mail->FromName = 'www.php-mail.ru'; // от кого
$mail->AddAddress('to@yandex.ru', 'Имя'); // кому - адрес, Имя
$mail->IsHTML(true); // выставляем формат письма HTML
$mail->Subject = $_POST['title']; // тема письма
// если был файл, то прикрепляем его к письму
if(isset($_FILES['attachfile'])) {
if($_FILES['attachfile']['error'] == 0){
$mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
}
}
// если было изображение, то прикрепляем его в виде картинки к телу письма.
if(isset($_FILES['attachimage'])) {
if($_FILES['attachimage']['error'] == 0){
if (!$mail->AddEmbeddedImage($_FILES['attachimage']['tmp_name'], 'my-attach', 'image.gif', 'base64', $_FILES['attachimage']['type']))
die ($mail->ErrorInfo);
$mess .= 'А вот и наша картинка:<br /><img src="cid:my-attach" border=0><br />я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) ';
}
}
$mail->Body = $mess;
// отправляем наше письмо
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
echo 'Спасибо! Ваше письмо отправлено.';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
17.10.2011 key-bo
в коде короткий тег <? вместо <?php
либо включи поддержку их
либо замени на <?php
Поэкспериментировал с кодировками. Нет такого результата. Дело не в кодировке. Вопрос тот же - Как из окна сообщения, которое имеет вид одной строки, изменить код что бы окно стало растягивающимся как на этом сайте?
23.09.2011 Александр
про кодировки не Вам написано. Почитайте ответ под своим большим сообщением от 18.09.2011
www.php-mail.ru/?gstid=2280
отправляю вложения -- все отлично работает, но файлы с русскими наименованиями приходят с перекодированными названиями -- внутренность вложений и тело самого письма нормальные.
Например, имя файла Анкета - Физкультурно-оздоровительный комплекс.xls перекодировало в тХГЙСКЭРСПМН-НГДНПНБХРЕКЭМШИ ЙНЛОКЕЙЯ ╚юРКЮМР╩ (2).xls
Подскажите, где и что надо подстроить?
22.09.2011 Александр
Попробуйте с кодировками поиграться:
Используя класс class.phpmailer.php, для смены кодировки достаточно в обработчике после строки $mail = new PHPMailer(); добавить строку с указанием кодировки, например так: $mail->CharSet = "UTF-8";
Доброго времени суток. Возникли такие проблемы:
1. Письмо приходит, но без прикрепленных файлов и изображений.
2. IP адрес не показывает. Пробовал все, что советовали в комментариях.
ЗЫ: скрипт на страницу подключаю через iframe, может-ли быть из-за этого ? ^_^
Как в место окна для ввода сообщения:
<input type="text" name="input_name[6]2" size="58" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][6])), 0, 500);?>" style="border: #4D9DC6 1px solid; background-color: #fff;"><font size="2">
вставить такое: <textarea <?=$addstyle?> cols='46' rows='6' size='500' name='msg'></textarea>
или такое же (растягивающееся) как на этом сайте в которое вписывается сообщение?
Вот мой код:
<?
session_start ();
error_reporting(0);
function show_form()
{
$_SESSION['code'] = rand(1000, 9999);
?>
<form action="" method=post enctype="multipart/form-data">
<div align="center">
<table cellspacing="1" cellpadding="2" bgcolor="#3E7EA0" width="314">
<tr bgcolor="#4488AD">
<td height="30">
<p align="center"> <b><span lang="ru"><font face="Verdana" style="font-size: 11pt" color="#FFFFFF">Заказ
на сайте</font><font face="Verdana" color="#FFFFFF" size="2">: </font></span></b>
<font face="Verdana" style="font-size: 9pt" color="#CAF4FF"><span lang="en-us">
www.</span></font><font face="Verdana" style="font-size: 9pt" color="#B9F1FF"><span lang="ru">часы
24 часа.рф</span></font><tr bgcolor="#FFFFFF">
<td>
<p style="margin-top: 3px; margin-bottom: 2px" align="left">
<font face="Verdana" style="font-size: 9pt"> Ваши Ф<span lang="ru">.</span>И<span lang="ru">.</span>О<b><span lang="ru">.</span> </b>
</font>
<font face="Verdana" size="1">(без сокращений<span lang="ru">)</span></font><span lang="ru"><font face="Verdana" style="font-size: 9pt"><b>:</b><font color="#FF0000">*</font> </font></p>
<p style="margin-top: 0; margin-bottom: 1px" align="center"><font face="Verdana">
<input type="text" name="input_name[0]0" size="58" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][0])), 0, 500);?>" style="border: #4D9DC6 1px solid; background-color: #fff;"><font size="2">
</font>
</font>
<p style="margin-top: 2px; margin-bottom: 2px" align="left">
<font face="Verdana" style="font-size: 9pt">
Ваш E-mail:<font color="#FF0000">*</font></font>
</font></p>
<p style="margin-top: 4px; margin-bottom: 1px" align="center"><font face="Verdana">
<input type="text" name="input_name[1]1" size="58" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][1])), 0, 500);?>" style="border: #4D9DC6 1px solid; background-color: #fff;"></font><font size="2" face="Verdana">
</font>
<p style="margin-top: 2px; margin-bottom: 2px" align="left">
<font face="Verdana" style="font-size: 9pt">
Ваш № телефона:<font color="#FF0000">*</font></font>
</font></p>
<p style="margin-top: 4px; margin-bottom: 1px" align="center"><font face="Verdana">
<input type="text" name="input_name[2]2" size="58" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][2])), 0, 500);?>" style="border: #4D9DC6 1px solid; background-color: #fff;"><font size="2">
</font>
<input type="hidden" name="check[]" value="1"><font size="2"></b>
</font></font>
<p style="margin-top: 2px; margin-bottom: 2px" align="left">
<font face="Verdana" style="font-size: 9pt">
Индекс и Область:<font color="#FF0000">*</font>
</font></p>
<p style="margin-top: 4px; margin-bottom: 1px" align="center"><font face="Verdana">
<input type="text" name="input_name[3]2" size="58" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][3])), 0, 500);?>" style="border: #4D9DC6 1px solid; background-color: #fff;"><font size="2">
</font>
<input type="hidden" name="check[]" value="1"><font size="2"></b>
</font></font>
<p style="margin-top: 2px; margin-bottom: 2px" align="left">
<font face="Verdana" style="font-size: 9pt">
Город и Улица:<font color="#FF0000">*</font>
</font></p>
<p style="margin-top: 4px; margin-bottom: 1px" align="center"><font face="Verdana">
<input type="text" name="input_name[4]2" size="58" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][4])), 0, 500);?>" style="border: #4D9DC6 1px solid; background-color: #fff;"><font size="2">
</font>
<input type="hidden" name="check[]" value="1"><font size="2"></b>
</font></font>
<p style="margin-top: 2px; margin-bottom: 2px" align="left">
<font face="Verdana" style="font-size: 9pt">
Дом<b> </b>
</font><font face="Verdana" style="font-size: 8pt">(корпус)</font><font face="Verdana" style="font-size: 9pt"><b>
и </b>квартира №:<font color="#FF0000">*</font>
</font></p>
<p style="margin-top: 2px; margin-bottom: 1px" align="center"><font face="Verdana">
<input type="text" name="input_name[5]2" size="58" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][5])), 0, 500);?>" style="border: #4D9DC6 1px solid; background-color: #fff;"><font size="2">
</font>
<input type="hidden" name="check[]" value="1"><font size="2"></b>
</font></font>
<p style="margin-top: 2px; margin-bottom: 2px" align="left">
<font face="Verdana" style="font-size: 9pt"> Опишите Ваш заказ</font><b><font face="Verdana" size="2">
</font></b>
<font face="Verdana" size="1">(что именно, цвет, кол-во)</font><font face="Verdana" style="font-size: 8pt">:</font><font color="#FF0000" style="font-size: 9pt" face="Verdana">*</font><font face="Verdana" size="2">
</font></p>
<p style="margin-top: 2px; margin-bottom: 2px" align="center"><font face="Verdana">
<input type="text" name="input_name[6]2" size="58" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][6])), 0, 500);?>" style="border: #4D9DC6 1px solid; background-color: #fff;"><font size="2">
</font>
<input type="hidden" name="check[]" value="1"><font size="2"></b>
</font></font>
<p style="margin-top: 2px; margin-bottom: 1px">
<span lang="ru"><font face="Verdana" style="font-size: 8pt">Вы можете
отправить нам </font></span><font face="Verdana" style="font-size: 8pt">
файл</font><font face="Verdana" style="font-size: 9pt">
</font></p>
<p style="margin-top: 2px; margin-bottom: 2px"><font face="Verdana"><input type="file" name="file_name[]" size="26" style="border: #4D9DC6 1px solid; background-color: #fff;"><font size="2">
</b>
</font></font>
<p style="margin-top: 0; margin-bottom: 0"><font face="Verdana">
<font style="font-size: 9pt" color="#FF0000">
</font><span lang="ru"><span style="font-size: 9pt">Введите Код</span><font color="#FF0000"><span style="font-size: 9pt">:</span><font size="2">
</font>
<input type="text" id="code" name="code" size="15" maxlength="4"></font><font size="2" color="#FF0000">
<img align="absmiddle" src="captcha.php"></font></font><tr>
<td bgcolor="#4488AD">
<table width="100%">
<tr><td align="left">
<font color="#FFFFFF">
<input type="submit" value="Отправить" style="background-color:#4В9ВС6;border: 1px solid #000;; float:right" name="submit"> </font>
<font color="#FFFFFF" face="Verdana" style="font-size: 8pt">Заполните
поля со знаком</font><font color="#FF0000"> *</font></td></tr>
</table>
</td>
</tr>
</table>
</div>
</form>
<?
}
function complete_mail() {
if (empty($_POST['code']) or empty($_SESSION['code'])) {
echo '<br><b>Вы не указали код подтверждения</b>';
$sendemail = 'No';
} elseif ($_POST['code'] != $_SESSION['code']) {
echo '<br><b>Код подтверждения не совпадает</b>';
$sendemail = 'No';
}
$empty_input[0] = 'от Ф.И.О. (полностью):';
$empty_input[1] = 'E-mail:';
$empty_input[2] = '№ тел.:';
$empty_input[3] = 'Индекс, Область:';
$empty_input[4] = 'Город, улица:';
$empty_input[5] = 'Дом, корпус, квартира:';
$empty_input[6] = 'Заказ:';
for ($i=0; $i<count($_POST['input_name']); $i++) {
$_POST['input_name'][$i] = substr(htmlspecialchars(trim($_POST['input_name'][$i])), 0, 100000);
if(substr(htmlspecialchars(trim($_POST['check'][$i])), 0, 1) == 1) {
if(empty($_POST['input_name'][$i])) {
$sendemail = 'No';
echo '<br /><b>Необходимо заполнить поле '.$empty_input[$i].'!</b>';
}
}
}
if($sendemail == 'No') show_form();
$mess = '';
$mess .= '<b>от ФИО: </b>'.$_POST['input_name'][0].'<br />';
$mess .= '<b>Е-mail: </b>'.$_POST['input_name'][1].'<br />';
$mess .= '<b>№ тел.: </b>'.$_POST['input_name'][2].'<br />';
$mess .= '<b>Индекс, Область: </b>'.$_POST['input_name'][3].'<br />';
$mess .= '<b>Город и улица: </b>'.$_POST['input_name'][4].'<br />';
$mess .= '<b>Дом, корпус, квартира: </b>'.$_POST['input_name'][5].'<br />';
$mess .= '<b>Заказ: </b>'.$_POST['input_name'][6].'<br />';
// подключаем файл класса для отправки почты
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->FromName = 'Ваше Ф.И.О.'; // от кого имя
$mail->From = 'Email'; // от кого email
$mail->AddAddress('staors@ya.ru', 'staors@ya.ru'); // получатель письма
$mail->FromName = 'Ваш № телефона'; // телефон
$mail->FromName = 'Индекс и Область'; // индекс и Область
$mail->FromName = 'Город и улица'; // Город, улица
$mail->FromName = 'Дом (корпус) квартира'; // Дом (корпус) квартира
$mail->IsHTML(true); // выставляем формат письма HTML
$mail->Subject = 'Форма для заказа'; // тема письма
$mail->Body = $mess;
// если был файл, то прикрепляем его к письму
if(isset($_FILES['file_name'])) {
if($_FILES['file_name']['error'][0] == 0){
$mail->AddAttachment($_FILES['file_name']['tmp_name'][0], $_FILES['file_name']['name'][0]);
}
}
if($sendemail != 'No'){
// отправляем наше письмо
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
echo 'Спасибо! Ваш заказ отправлен.';
}
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
22.09.2011 Александр
Если это не шутка, замените
<input type="text" name="input_name[6]" size="58" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][6])), 0, 500);?>" style="border: #4D9DC6 1px solid; background-color: #fff;">
на
<textarea cols='46' rows='6' size='500' name='input_name[6]'><?=substr(htmlspecialchars(trim($_POST['input_name'][6])), 0, 500);?></textarea>
Почему-то вылетает ошибка "Mailer Error: Language string failed to load: instantiate"
В свяви с чем это может быть?
18.09.2011 serg
Похоже что это проблема на хостинге с sendmail
После отправки сообщение вылезла ошибка:
Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:homenovcc.locwwwformclass.phpmailer.php on line 1091
Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:homenovcc.locwwwformclass.phpmailer.php on line 1095
Спасибо! Ваше письмо отправлено.
Помогите исправить. Заранее спасибо!
При загрузке файлов от 7 Мб скрипт возвращает пустую форму и ничего никуда не отправляет. Что делать?
18.12.2011 Влад (evs-vladislav@ya.ru
Дмитрий, та-же проблема.
Пробовал разные ящики, даже те которые принимают гигантские файлы (сначала думал что проблема с почтовиком).
Удалось решить?
Такая проблема: письмо отправляется в utf-8, само письмо доходит нормально, а вот файлы с русс. именем приходят крокозябликами. Помогите кто чем. Заранее спасибо!
24.06.2011 alkin
замени в файле class.phpmailer.php
var $CharSet = "windows-1251";
на
var $CharSet = "utf8";
А возможно в этой форме сделать много <input name="attachimage" type="file" size="28"> - с одинаковым именем attachimage - и прогнать в цикле - прикрепить каждый инпут?
20.06.2011 Вариант
с совсем-совсем одинаковым именем?
<input name="attachimage[]" type="file" size="28">
Такой вариант не прокатит?
20.06.2011 Алексей
спасибо, я так и сделал!
Подскажите!
Сделал инклюд формы в другой пхп документ.
Если все введено и письмо отправлено - ок, но если возникает ошибка, то хтмл страница обрезается после формы.
Проблема -
function output_err($num)
{
$err[0] = 'ERRPR! Please write the name.';
$err[1] = 'ERROR! Please write correct e-mail.';
$err[2] = 'ERROR! Date is not selected.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit(); - вот тут
}
Как можно решить?
29.03.2011 Александр
Вариантов миллион.
Сгенерите любую форму в генераторе, посмотрите, как это обходится там, и сделайте также.
Доброго время суток!
Подскажите люди добрые, как сделать так, что бы при отправке письма (после нажатия submit) на экране не происходило ничего?
Ну тоесть что бы письмо отправлялось, но не выводилось никаких сообщений, мол письмо успешно отправлено, что бы страница с формой отправки не обновлялась и т.д.
Здравствуйте!
<br>У меня проблема с кодировкой. Крокозяблы на кириллицу показывает. Никак не могу решить проблему. Пробовал уже и UTB-8 и Windows-1254. Через мета вписывал и через httaccess не получается никак решить проблему. Вставляю в вордпресс, если это важно.
<br>Помогите, пожалуйста.
12.04.2011 Олег
Используя класс class.phpmailer.php, для смены кодировки достаточно в обработчике после строки $mail = new PHPMailer(); добавить строку с указанием кодировки, например так: $mail->CharSet = \"UTF-8\";
Почему-то не срабатывает HTML в теле письма, а так же не прикрепляются файлики... В чём может быть дело?
Хочу получить результат, но не получается
11.01.2011 Александр
Жду мамонта на Красной площади. Никак не встретимся.
15.09.2011 Евгений
Попробуйте делать это без презерватива.
Привет!
Классный код. А можно прикрутить swf файл к телу письма, также как и картинку?
Заранее спасибо
Spasibo za kod! ochen horoshi!
Vopros: esli odno iz polei ne pravilno zapolnenno i forma vidaet oshibky, to vse polya sterayutsya i nado zapolnyat zanovo.
Kak sdelat 4to bi informacia s polei be steralas?
Zaranee spasibo.
30.11.2010 Александр
<input type="text" name="name" size="40" value="<?=htmlspecialchars($_POST['name']);?>">
Mailer Error: Language string failed to load: instantiate
<br>а какую языковую строку он грузит и как избавиться от ошибки???
<br>спасибо !!!
Mailer Error: Could not instantiate mail function.
не могу понять почему не работает почтовая функция???
Заранее спасибо кто подскажет!!!
Mailer Error: Language string failed to load: instantiate
я не могу разобратся с этой ошибкой!
после попытки отправить письмо с вложением появляется ошибка:Language string failed to load: provide_address
<br>
<br>Насколько понял, это ошибка отсутствия адресата. хотя адрес для доставки добавляю. Подскажите, как бороться с этой ошибкой?
возможно ли такое? с mootools заливать файлы в папку,а phpmailer отправляет данные формы с этими файлами?как это осуществить?подскажите плз
скрипт работает и работает отлично! Но у каждого есть свои прихоти. Каким образом нужно дополнить скрипт, чтобы при ошибке оставались поля заполненными?
Не очень уж хочется переписывать такой скрипт, уж больно он нравится. Может можно попроще?
Спасибо...
Люди добрые помогите! есть у меня скрипт
<?
/********************************************/
/*Welcome to PHP Mailer source-code!*/
/*The PHP Mailer and its functions, contexture are copyrighted by s1ayer [www.spg.arbse.net]*/
/*Current file: index.php*/
/*Optimized for PHP 4.3.6, Apache 1.3.27*/
/********************************************/
if (@function_exists("mail"))
{
include "config.php";
?>
<?
if (isset($_GET['send']) and isset($_POST['sform']))
{
$to = trim($_POST['to']);
if ($to != "")
{
$from = $_POST['from'];
$theme = $_POST['theme'];
$content = $_POST['content'];
$to = ereg_replace (",([^ ]{1})", ", \\1", $to);
$theme = $theme==""?"No subject":$theme;
if (@$_POST['cyr_encode'] == "yes")
$theme = "=?koi8-r?B?".base64_encode(convert_cyr_string($theme, "w","k"))."?=";
if (@$_POST['html'] == "yes")
$ctype = "html";
else
$ctype = "plane";
$header = "Content-Type: text/$ctype; charset=\"$charset\" \r\n";
$header .= "From: $from \r\n";
$header .= "X-Mailer: PHP-Mailer by s1ayer[www.spg.arbse.net] \r\n";
if (@$_POST['hide_addr'] == "no")
{
$error = 0;
$to_array = explode (", ", $to);
for ($i=0; $i<count($to_array); $i++)
{
if ($to_array == "")
continue;
if (!@mail($to_array[$i], $theme, $content, $header))
$error++;
}
if ($error == 0)
print "Отправка писем завершена<br><br>";
else
print "Невозможно отправить письмо!<br><br>";
}
else
{
if (@mail($to, $theme, $content, $header))
print "Письмо отправлено<br><br>";
else
print "Невозможно отправить письмо!<br><br>";
}
}
else
print "Вы не заполнили поле 'Кому' !<br><br>";
}
?>
<SCRIPT LANGUAGE="JavaScript">
<!--
function hide_button (){
document.getElementById('button').style.display = "none";
document.getElementById('processing').style.display = "block";
}
//-->
</SCRIPT>
<form action="?send" method="post">
<table>
<tr><td>Получатели:</td><td><textarea name='to' rows='20' cols='19'><?=$default_to?></textarea></td></tr>
<tr><td>От кого:</td><td><input type="text" name="from" value="<?=$default_from?>" size=40></td></tr>
<tr><td>Тема:</td><td><input type="text" name="theme" size=40></td></tr>
<tr><td valign="top">Содержание:</td><td><textarea name="content" rows=9 cols=50><?=$default_sign?></textarea></td></tr>
<tr><td colspan=2>
Опции:<br>
<ul>
<li>отправить в HTML ? <input type="checkbox" name="html" value="yes"></li>
<li>кодировать заголовок письма в koi8 ? <input type="checkbox" name="cyr_encode" value="yes" checked></li>
</ul>
</td>
</tr>
<tr><td colspan=2 align="right"><input type="hidden" name="sform" value="yes"><input type="submit" value="Отправить" id=button style="display: block" onClick="hide_button()"><button id="processing" style="display: none" disabled>Пожалуйста, ждите...</button></td></tr>
</table>
</form>
<?
}
else
print "Извините, сервер не поддерживает функции <tt>mail ()</tt>";
?>
как сделать чтобы почтовые адреса брались из текстового файла.
Помогите я ничё не понял.
У меня после отправки сообщение вылезла ошибка
<br>Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\\home\\dazaev.ru\\www\\forms\\class.phpmailer.php on line 1091
<br>
<br>Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\\home\\dazaev.ru\\www\\forms\\class.phpmailer.php on line 1095
<br>Спасибо! Ваше письмо отправлено. С чем это связано?
Скажите пожалуйста как прикрепить html страницу с одной картинкой которая лежит на этом же хостинге? И чтоб картинка была в этой странице... Заранее большое спасибо!
Спасибо за скрипт. Есть вопрос. Необходимо отправлять несколько файлов, причем их количество за ранее не известно. Возможно ли сделать так, чтоб скрипт после выбора загружаемого файла открывал дополнительное окно для ввода еще одного файла? Я уже убился искать варианты. Есть конечно решение загрузки файлов на сервер через Ajax, а потом отсылки их и в связи с этим тогда еще вопрос- оеально ли сделать так, чтоб скрипт при формировании письма просто забирал все файлы из определенной директории? Т.е. присоединять не конкретно один файл , а все?
<?
if(substr($_FILES['attachfile']['name'], -3) != 'rtf' AND substr($_FILES['attachfile']['name'], -3) != 'doc')
echo 'Файл не подходит';
else {
// выполняем отправку
Если у меня возможность прикрепит 5 файлов, это мне после каждой формы писать или достаточно одного раза перед или после форм?
01.09.2010 Александр
Один раз в обработчике. Только не забудьте для каждого файла имя свое задать, например attachfile1, attachfile2 и т.д.
02.09.2010 dimttra
я на секундочку извиняюсь, вопрос, конечно, глупый, а с какого места начинается вышеозначенный обработчик?
02.09.2010 Александр
вставляйте там, где идет
if(isset($_FILES['attachfile'])) {
02.09.2010 dimttra
"для каждого файла имя свое задать, например attachfile1"
......<input type="file" name="file_name[attachfile1]" size="50" style="border: #000 1px solid; background-color: #fff;">
..................
if(isset($_FILES['attachfile1'])) {
if($_FILES['attachfile1']['error'][0] == 0){
$mail->AddAttachment($_FILES['attachfile1']['tmp_name'][0], $_FILES['attachfile1']['name'][0]); }
}
.........
я правильно всё понял и сделал?
02.09.2010 Александр
Либо
......<input type="file" name="attachfile1" size="50" style="border: #000 1px solid; background-color: #fff;">
..................
if(isset($_FILES['attachfile1'])) {
if($_FILES['attachfile1']['error'][0] == 0){
$mail->AddAttachment($_FILES['attachfile1']['tmp_name'][0], $_FILES['attachfile1']['name'][0]); }
}
.........
Либо
......<input type="file" name="file_name[attachfile1]" size="50" style="border: #000 1px solid; background-color: #fff;">
..................
if(isset($_FILES['file_name']['attachfile1'])) {
if($_FILES['file_name']['attachfile1']['error'][0] == 0){
$mail->AddAttachment($_FILES['file_name']['attachfile1']['tmp_name'][0], $_FILES['file_name']['attachfile1']['name'][0]); }
}
Первый вариант без массива наверное проще для восприятия
У меня высвечивает Mailer Error: Language string failed to load: instantiate после отправки формы... Можете подсказать в чем может быть проблема?
10.08.2010 Татьяна
Поняла. Прочла предыдущие ответы. та же незадача с Mailer Error: Could not instantiate mail function. Может, с Apache что-нибудь?
prinoshu izvineniya, na tyajelo razborchiviy text s nizu, u menya net russkoy klaviaturi.
Privet,
<br>mne nujna pomosh\' s moim skriptom...
<br>nachyalos\' vse s imya otpravitelya, otpravlennie pis\'ma prihodili s imenem profider\'a.
<br>reshal delo dvumya sposobami: cherez \"$headers\" , i ili \"$from\". V oboih sluchyaeh ne jelaemoe imya menyalos\' na jelaemoe, no!.. Pis\'metso prihvativaet teper\' s soboy svoyu kopiyu vse s tem je imenem po umolchyaniyu.
<br>
<br>Mne obsalyutno nekkomu kompetentnomu obratit\'sya, mojet zdes\' u kogo poyavyatsya idei?
<br>icq 279670977
Спасибо чувак, phpmailer это было последнее что решил испробовать иначе бы уже не знал что делать. у меня вложение отправлялось с моего сервака, а с другого не отправлялось( пипец промучался уже столько говнокода перепробовал))
когда все запоняеш и отпровляеш переходит на белый экран и письмо не приходит!
а когда не заполниш где * пишет как положено ошибка!
}
убрал
function: complete_mail
заменил на: send_mail,
и ура. Большое спасибо
Большое спасибо!!!!!!!
<br>Все очень хорошо работает с первого раза!
<br>А если у кого-то не работает, тогда проблемы точно не с кодом ;)
Регулярка неправильная :)
Используйте filter_var с FILTER_VALIDATE_EMAIL
КРУТО!!!! Так долго искал и наконец нашел и все клева работает!!! Спасибо, огромное!!!!!!!
кто может помощь советом с третьим примером.буду благодарен стукните в мою асю 448-155-189. очень нужна помощь...
Спасибо за форму все работает отлично, но есть пару вопросов:
Почему я не могу отослать файл, либо картинку более 3 мб? Приходит письмо без вложении, и как устранить эту проблему. Файлы 500 кб доходят без проблем.
Спасибо.
Сделал все как написано,но дело в том что письма которые я отправляю до меня не приходят. Может где то нужно прописать свои данные
уважаемый dimttra
Вы создали страницу с расширением .html , чтобы работал скрипт страница должна быть .php
+ пробуйте на бесплатном хостинге поддерживающим php
ВСЕМ ПРИВЕТ.
<br>после добавления скрипта на страницу сайта ниже кнопки \"Отправить\" появляется вот это:
<br>
<br>* Помечены поля, которые необходимо заполнить From = \'test@test.ru\'; // от кого $mail->FromName = \'www.php-mail.ru\'; // от кого $mail->AddAddress(\'to@yandex.ru\', \'Имя\'); // кому - адрес, Имя $mail->IsHTML(true); // выставляем формат письма HTML $mail->Subject = $_POST[\'title\']; // тема письма // если был файл, то прикрепляем его к письму if(isset($_FILES[\'attachfile\'])) { if($_FILES[\'attachfile\'][\'error\'] == 0){ $mail->AddAttachment($_FILES[\'attachfile\'][\'tmp_name\'], $_FILES[\'attachfile\'][\'name\']); } } // если было изображение, то прикрепляем его в виде картинки к телу письма. if(isset($_FILES[\'attachimage\'])) { if($_FILES[\'attachimage\'][\'error\'] == 0){ if (!$mail->AddEmbeddedImage($_FILES[\'attachimage\'][\'tmp_name\'], \'my-attach\', \'image.gif\', \'base64\', $_FILES[\'attachimage\'][\'type\'])) die ($mail->ErrorInfo); $mess .= \'А вот и наша картинка:
<br>
<br>я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) \'; } } $mail->Body = $mess; // отправляем наше письмо if (!$mail->Send()) die (\'Mailer Error: \'.$mail->ErrorInfo); echo \'Спасибо! Ваше письмо отправлено.\'; } function output_err($num) { $err[0] = \'ОШИБКА! Не введено имя.\'; $err[1] = \'ОШИБКА! Неверно введен e-mail.\'; $err[2] = \'ОШИБКА! Не введено сообщение.\'; echo \'
<br>\'.$err[$num].\'
<br>
<br>\'; show_form(); exit(); } if (!empty($_POST[\'submit\'])) complete_mail(); else show_form(); ?>
<br>
<br>посмотреть в реале можно здесь: kinris.narod.ru/vopros.html#begin
<br>Что делать?????
Здравствуйте. Подскажите пожалуйста, как заставить эту форму работать? Я сгенерировал её, заполнил все нужные мне поля, выставил все условия и тд и тп., но я не знаю что мне теперь делать с этими тремя файлами ( mail.php + 2 файла class.phpmailer'a), закинул их на фтп сайта, но нигде не появилась данная форма :(.
Попробовал скопировать текст из mail.php и вставить в html код странички, появилась форма, но ниже появилась какая то писанина лишняя, и ни чего не работает...
Буду очень признателен если вы мне подскажете как интегрировать эту саму форму в сайт...
нельзя ли сделать чтобы после отправки данных формы сама форма не исчезала, меняясь на надпись "Спасибо! Ваше письмо отправлено" а всё осталось как было введено, без перехода на другие страницы.
замена строки
echo 'Спасибо! Ваше письмо отправлено.';
на
echo 'Спасибо! Ваше письмо отправлено.';
show_form();
не дает результата
27.05.2010 ММС
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
else{
echo 'Спасибо! Ваше письмо отправлено.';
show_form();
}
Просто ты забыл поставить скобки, поэтому у тебя на условии обрабатывался только вывод "echo"
Что делать если у одного провайдера работает а у другого нет?
Подскажите как отделить форму от php кода,
сайт на хостинге без php c формой, с неё данные отправляются на файл php находящийся на хостинге с php - это у меня реализовано , но понадобилась передача файлов
21.02.2010 Алексей
А зачем отделять?
Просто копируете форму в код вашей страницы, а потом вставляете весь код в скрипт:
<?php
function show_form()
{
?>
//Сюда
<form action="" method=post enctype="multipart/form-data">
<div align="center">
<br />Имя*<br />
<input type="text" name="name" size="40">
<br />Контактный телефон<br />
<input type="text" name="tel" size="40">
<br />Контактный email*<br />
<input type="text" name="email" size="40">
<br />Teма<br />
<input type="text" name="title" size="40">
<br />Сообщение*<br />
<textarea rows="10" name="mess" cols="30"></textarea>
<br />Файл<br />
<input name="attachfile" type="file" size="28">
<br />Изображение<br />
<input name="attachimage" type="file" size="28">
<br /><br /><input type="submit" value="Отправить" name="submit">
</div>
</form>
* Помечены поля, которые необходимо заполнить
//И до сюда(ниже не трогать!)
<?
21.02.2010 Алексей
Вместо стандартной формы
А как сделать рассылку? ну типа чтобы адреса. по которым будет отправляться письмо брались из...хотябы из текстового файла
<?php
// подключаем файл класса для отправки почты
require 'class.phpmailer.php';
$arr = file('spamlist.txt');
foreach ($arr as $key => $value) {
$mail = new PHPMailer();
$mail->From = 'test@test.ru'; // от кого
$mail->FromName = 'Злостный спамер'; // от кого
$mail->AddAddress($value, $value); // кому - адрес, Имя
$mail->IsHTML(true); // выставляем формат письма HTML
$mail->Subject = 'тема письма'; // тема письма
$mail->Body = 'Вас приветствует спам рассылка<br><br>ку-ку';
// отправляем наше письмо
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
echo 'Письмо отправлено на <a href="mailto:">'.$value.'</a><br>';
}
?>
Изумительный код, спасибо! Но еще бы добавить четвертый пример - форма с отправкой приложенного файла и капчей.
блин .. у меня паника..
все пишут что можно отправить писмо с прикрепленым файлом... Вопрост.. как мне сделать все тоже что пишут но только с условием того что файл уже находится на сервере и мне при отправки писма нужно просто прикрипить то что находится на СЕРВЕРЕ... помогите плиз .. пытался просто указать полный путь к файлу но, не чего не приходит(. Текст есть а файла типа .doc нету(
30.12.2009 Николай
Ну допустим, что у тебя в папке mail лежат два файла.
Один mail.php, в который подгружаешь класс PHPMailer, а другой файл - картинка img.jpg
<?php
$m->AddAttachment('img.jpg','kartinka.jpg');
?>
img.jpg - это ссылка на файл.
kartinka.jpg - имя, которое будет отображаться в письме.
У меня делается рассылка нескольким адресатам.
Вот как я это делаю:
for($j=0;$j<count($_POST['em_adress']);$j++)
{
if (!empty($_POST['em_adress'][$j]))
$mail->AddAddress($_POST['em_adress'][$j], 'Имя');
}
Ноя мне надо сделать так, чтобы при получении письма, скрывались все остальные адресаты помимо данного. Как это сделать?
Я так понял как-то с помощью AddBCC, но ничего не выходит!
А еще у меня не распознаются html теги в сообщении, хотя $mail->IsHTML(true);
Т.е. письмо даже не в формате HTML приходит. Т.е. <b>Текст</b> не выделяется никак...
Как это решить?
Заранее спасибо!
Люди, помогите пожалуйста! Вопрос жизни сайта! Где надо ввести адрес майла на который будет отправляться сообщение?
Забавно..
Косяк был где-то сдесь. Этот оператор упорно проверял e-mail при любом значении value в строке hidden поля.
if(substr(htmlspecialchars(trim($_POST['check'][$i])), 0, 1) == 1)
Как сгенерировання форма определяет, какое поле ей проверять заполнено ли? У меня упорно проверяет e-mail и только его.
Я так понял, это где-то тут:
if(substr(htmlspecialchars(trim($_POST['check'][$i])), 0, 1) == 1) {
if(empty($_POST['input_name'][$i])) {
$sendemail = 'No';
echo '<br /><b>Необходимо заполнить поле '.$empty_input[$i].'!</b>';
И еще возник вопрос. Автор прописал, как проверять правильность ввода имени, е-мейла и сообщения, а как на счет прикрепленного файла ни строчки. Мне надо обязательно проверять, прикрепил посетитель файл или нет, а то шлют чертеняки пустые письма. Хоть кто ни будь, помогите. Что в код дописать надо. Плиз, очень надо!
// если был файл, то прикрепляем его к письму
if(isset($_FILES['attachfile'])) {
if($_FILES['attachfile']['error'] == 0){
$mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
}
} else
output_err(3);
// И в function output_err($num)
$err[3] = 'ОШИБКА! Прикрепите файл.';
27.05.2010 ММС
if(!empty($_FILES['attachfile']['tmp_name'])) {
if($_FILES['attachfile']['error'] == 0){
$mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
}
} else
output_err(3);
Странно работает форма отправки сообщений с сайта. Проблема вот в чем. В форме указаны обязательные поля для заполнения, так вот, если какое льбо поле формы заполнить не верно или не заполнить совсем, то при нажатии на кнопку \\\\&amp;quot;Отправить\\\\&amp;quot; происходит нечто не понятное. Пропадает всё, что находится ниже формы, и текст и изображения, короче пол страницы пропадает и как я понимаю вместе с тегами отрезается, так как оставшаяся верхняя часть страницы разезжается на весь экран.
<br><br>&lt;br&gt;
<br><br>&lt;br&gt;Подскажите, как избавится от этой проблемы.
Ой, не то написала!
Вместо строки $mail->AddAddress('to@yandex.ru', 'Имя');
Напиши:
$mail_user = $_POST['email'];
$name_user = $_POST['name'] ;
$mail->AddAddress($mail_user, $name_user);
gral, я скажу :)
вместо $from='test@test.ru';
напиши $from=$_POST['email'];
кто скажит как изменить скрипт чтоб отправлялось именно на тот ящик который укажит пользавотель сайта!? плиз!!!!!!!!!
Здраствуйте! В форме мне надо выбирать только картинку, т.е файла нету(в форме), но ... надо чтобы все тело письма ($mess) включая картинку записывались в файл и этот файл отправлялся в письме(т.е чтобы было обычное письмо + во вложении файл в котором тоже самое что в пиьме). Возможно ли это сделать несоздавая файла на сервере?
Заранее спасибо!
Подскажите, пожалуйста,
а как сделать так, чтобы перед отправкой проверялось наличие вложенного файла и при отсутствии выдавалось сообщение?
какой будет код?
Подскажите пожалуйста, а как отправить файл не с локального диска пользователя, а с ссылки, т.е.
<br><br>www.qwe.qwe/downloads/qwe.pdf - на пример.
<br><br>
<br><br>Пробывал подставлять сылку в
<br><br>$_FILES[\\\'attachfile\\\']=\\\'www.qwe.qwe/downloads/qwe.pdf\\\'
<br><br>Письмо приходит со статусом прикрепленного файла, а самого файла неть.
<br><br>Шо делать?
<br><br>
<br><br>Благодарю за внимание ))
Та же проблема что и у Александра!
<br><br>&lt;br&gt;в поле от почему-то устанавливается адрес постмастера. (у нас используется битрикс- может он как-то это делает...)
<br><br>&lt;br&gt;Не понимаю.
<br><br>&lt;br&gt;Если например сделать что-то вроде
<br><br>&lt;br&gt;$mail-&amp;gt;From = \\\\\\\'&amp;lt;\\\\\\\'.$_POST[\\\\\\\'input_name\\\\\\\'][2].\\\\\\\'&amp;gt;\\\\\\\';
<br><br>&lt;br&gt;то адрес прописывается, но в виде &amp;lt;&amp;lt;lalal@lala.com&amp;gt;&amp;gt;
<br><br>&lt;br&gt;и это тоже ошибочно. Но если убрать \\\\\\\'&amp;lt;\\\\\\\' и \\\\\\\'&amp;gt;\\\\\\\'
<br><br>&lt;br&gt;$mail-&amp;gt;From = $_POST[\\\\\\\'input_name\\\\\\\'][2];
<br><br>&lt;br&gt;то получаем вышеописанную проблему- вместо адреса отправителя имеем в сформировавшемся письме адрес постмастера.
27.02.2010 Александр
я решил эту проблему, в настройках хостинга нужно указать доверенные адреса, в данном случае, тот адрес, на который должно уходить сообщение
Добрый день! Все супер, все работает, но вот мне это не помогло, все равно в письме в поле от кого пишет майл хоста (postmaster@akva.nichost.ru), а не отправителя?
Файл сохранить в форме так просто не получится.
Забудьте об этом :)
Христос воскрес!
Подскажите, как сделать так, чтобы при ошибке сохранялось значение поля выбранного файла. Логически пробовал так:
<input type="file" name="attachfile"<?if(isset($_FILES['attachfile'] echo 'SELECTED';?>>
но файл при ошибке в поле не сохраняется.
Помогите "чайнику" если можете.
Заранее спасибо!
Я почему задал этот вапрос)))
увидел сайт и форму, вот ссылка (прямая)
www.rentapartmentkiev.com/eng/reservation.html
как видете, как-то же продукт работает)) .html разрешение является примером))
Практики маловато, работаю на ошюпь)
ПЛИЗ!!!! Дайте комент по ссылке, это меня беспокоит))
Вижу коменты все помогают друг-другу! Вот мой вопрос, как разместить этот скрипт (форму обратной связи), на страницу сайта, написаного на аштимл, или этот продукт идёт только под ПИшПИ????
очень жду помоши, важно!
спасибо за форму! подскажите пожалуйста какой код надо добавить в форму что бы после ошибки юзера поля формы не очищалясь, забыл например имя набрать выскакивает сообщение и... надо всё заново набирать.
<br><br>&lt;br&gt;
<br><br>&lt;br&gt;спачибо ещё раз.
Я в шоке! Скрипт просто СУПЕР! Я 4 дня искал нормальный скрипт, а тут случайно подвернулся и БИНГО! Спасибо!!!
Спасибо за сайт. Впервые столкнулся с РНР и сразу все получилось. Скрипт роботает как золотые швейцарские часы: без сбоев, точно и с блеском. Но есть одна загвоздка. Когда пользователь не заполнил одно из обязательных полей и нажал кнопку ОТПРАВИТЬ, скрипт выдает надпись ОШИБКА, все происходит так как и должно быть. Проблема в следующем: форма относительно большая, содержит много полей.Когда пользователь доходит до кнопки ОТПРАВИТЬ, верхние поля формы и сообщение об ошибке находятся в не видимой зоне монитора. Не заметив сообщение об ошибке пользователь может уйти со страницы не отправив письмо. Как сделать так, что бы сообщение ОШИБКА появлялось где-нибудь возле кнопки ОТПРАВИТЬ. Помогите.
23.12.2010 webprog26
Используйте Javascript: onBlur() например для проверки формы по ходу ее заполнения.
Разобрался. В коде ошибка есть..
Вместо <img src="cid:image.gif" border=0> надо <img src="cid:my-attach" border=0> писать, то есть не имя файла, а имя аттача.
25.11.2009 zurito
infolex красавчик, спасибо, а то я бился чтобы embedded image корректно отображался И в почтовом клиенте (thebat, outlook) И в браузере. Твой коммент помог.
30.01.2010 Вентилятор
infolex, респект!
!!!!!!!!!!!!!!!!! читать его пост всем !!!!!!!!!!
14.03.2012 Владимир
И мне помогло!!! Спасибо.
У мну вопрос:
В классе есть возможность вбивать сразу несколько СКРЫТЫХ получателей путем
$mail->AddBCC(мыло);
$mail->AddBCC(мыло);
$mail->AddBCC(мыло);
$mail->AddBCC(мыло);
$mail->AddBCC(мыло);
$mail->AddBCC(мыло);
...........
Потом формирууется хеадер и письмо отправляется.
Вопрос. Этот список ограничен?? Можно например более 1000 вбить?
Скрипт заработал. А вот через smtp такое чувство не отправляет!, т.к. при любом пароле письма проходят!!! Письма опять не доходят до mail.ru, хотя он мне сказал , что вынес меня из черного списка.
Помогите. В чем дело? Что еще можно попробовать? Или хотя бы скеажите почему письмо не идет через смтп.
Спасибо ip заработало со строкой
IP адрес отправителя письма:'.getenv("REMOTE_ADDR").'
Извините еще вопрос, как сделать чтобы после отправки форму запускался какой либо файл в другом окне это надо для статистики гугла. Не могу сообразить как к <input type="submit" value="Отправить" name="submit"> </center>
это прикрутить.
<a href="#" onClick="window.open('mail_result.php', 'newWin', 'Toolbar=0, Location=0, Directories=0, Status=0, Menubar=0, Scrollbar=0, Resizable=0, Copyhistory=1, Width=350, Height=40,top=100,left=600'),document.getElementById('form').submit()">отправить письмо.</a>
Спасибо но ip все равное показывает, а дату показывает .
у меня до этого работало через<form action="mail.php">
Написал как посоветовали на ip не выдает
$mess = '
Текст сообщения:'.$_POST['text_r'].'
IP адрес отправителя письма:'.$REMOTE_ADDR.'
Дата письма:'.date("h.m.d.m.Y").'
'.$_POST['mess'];
Пишет:
Mailer Error: Language string failed to load: from_failedorder-send@yandex.ru
Подскажите как сделать чтобы в приходящем письме указывалcя IP И дата написания.
в предидущей форме у меня это работало
\nIP адрес отправителя письма:".$REMOTE_ADDR."
\nДата письма:"." ".date("d.m.Y");
а в этой не получается ничего
$mess = '
<b>Имя отправителя:</b>'.$_POST['name'].'<br />
<b>Контактный телефон:</b>'.$_POST['tel'].'<br />
<b>Контактный email:</b>'.$_POST['email'].'<br />
'.$_POST['mess'];
на
$mess = '
<b>Имя отправителя:</b>'.$_POST['name'].'<br />
<b>IP адрес отправителя письма:</b>'.$REMOTE_ADDR.'<br />
<b>Дата письма:</b>'.date("d.m.Y").'<br />
<b>Контактный телефон:</b>'.$_POST['tel'].'<br />
<b>Контактный email:</b>'.$_POST['email'].'<br />
'.$_POST['mess'];
А можно поподробнее.
$mail->Host = 'smtp.peterhost.ru'; // SMTP сервер
Я его должен поменять? И какой он на яндексе?
По сути я просто добавил:
$mail->IsSMTP();// отсылать используя SMTP
$mail->Host = 'smtp.yandex.ru'; // SMTP сервер
$mail->SMTPAuth = true; // включить SMTP аутентификацию
$mail->Username = 'order-send@yandex.ru'; // пропишите Ваш почтовый адрес
$mail->Password = 'пароль ящика'; // введите пароль на указанный ящик
Не работает. Растолкуйте пожалуйста. Очень прошу.
Выдает:
Warning: PHPMailer::SmtpSend(class.smtp.php) [function.SmtpSend]: failed to open stream: No such file or directory in /usr/local/htdocs/test.azur.ru/class.phpmailer.php on line 460
Warning: PHPMailer::SmtpSend() [function.include]: Failed opening 'class.smtp.php' for inclusion (include_path='.:/usr/local/lib/php') in /usr/local/htdocs/test.azur.ru/class.phpmailer.php on line 460
Fatal error: Class 'SMTP' not found in /usr/local/htdocs/test.azur.ru/class.phpmailer.php on line 527
Понимаешь. Данный код может встретиться на разных моих сайтах. И что мне тогда для каждого сайта писать письмо в службу поддержки mail.ru? Просто на со всех сайтов не приходит =(
Не уж-то только в этом проблема?
$mail = new PHPMailer();
$mail->From = 'test@test.ru'; // от кого
на
$mail = new PHPMailer();
$mail->IsSMTP();// отсылать используя SMTP
$mail->Host = 'smtp.peterhost.ru'; // SMTP сервер
$mail->SMTPAuth = true; // включить SMTP аутентификацию
$mail->Username = 'mail@php-mail.ru'; // пропишите Ваш почтовый адрес
$mail->Password = '******'; // введите пароль на указанный ящик
$mail->From = 'mail@php-mail.ru'; // укажите от кого письмо
Огромное спасибо за код.
У меня такая проблема: Не отправляю письмо на mail.ru. При чем на любой другой отсылается. На все приходит, кроме mail.ru. Почему?
Письмо стандартное. Никаких ошибок не выдается. Письмо просто не приходит
Помогите пожалуйста.
08.06.2010 маринка
Отправляю эротические фотки в майл.ру.Но до адресата они не доходят.Хотя обычные отсылаются.Почему?
18.12.2011 Влад
Маринка, отсылайте тогда их нам =))
Повторюсь :) Респект автор, два таких полезных сайта!
Все сделал по этому скрупту. Но на сервере выводит ошибку:
Warning: require(class.phpmailer.php) [function.require]: failed to open stream: No such file or directory in /home/tu2.ru/a/av/avtoelita/htdocs/www/1.php on line 61
Fatal error: require() [function.require]: Failed opening required 'class.phpmailer.php' (include_path='.:/usr/local/lib/php') in /home/tu2.ru/a/av/avtoelita/htdocs/www/1.php on line 61
Что сие означает?
С Новым Годом! И спасибо за скрипт! все работает, как часы!
Офигенные скрипты! И администратор очень чётко всё расписывает. Всё пробую ставить по очереди, и хотя и не сразу, но получается. Даже с PHP начинаю немножко разбираться после таких разъяснений ;) Вот если ещё узнать, как поставить \\\\\\\\&amp;amp;quot;код подтверждения\\\\\\\\&amp;amp;quot; как здесь, то вообще радости не будет предела... Спасибо!
Помогите, пожалуйста, нигде не могу найти решения проблемы - у меня не отправляются одновременно текст в textarea и файл, только либо то, либо другое. С вашим скриптом та же проблема. Помогите, пожалуйста, очень надо!!!
Все работает .Спасибо.Как зделать что бы после отправки письма посетитель не возращался на прежнию а переходил на другую страницу?
"18.02.2008 Mff
Mailer Error: Could not instantiate mail function. Что с этим теперь делать! Пытаюсь организовать рассылку, но вот после того как добавил папку language стало появляться вот это сообщение. Хостинг Агава.
18.02.2008 Mff
Постоянно выдается сообщение Mailer Error: Language string failed to load: instantiate. language.zip непомогает!"
У меня тот же самый сценарий был. Обратился в службу тех. поддрежки хостера - они там у себя что-то в конфиге, говорят, подправили и все пошло. С большой вероятностью, это проблемы хостинга...
А какие расширения для php мне нужно поставить на сервере чтобы функция mail(которая используется классом class.phpmailer.php) заработала? Извините за глупый вопрос - совсем недавно начал изучать php.
И снова я =)
Попробовал как вы посоветовали по 3 методу, стало не получатся, тогда я решил поставить точ в точ вашу версию на голую страницу, только получателя и отправителя поменял, в итоге получается что или где то у вас ощибка или всё таки я что то не секу... по вашей версии на мыло приходит сообщение в теле которого тупо буква "Р"...
Помогите пожалуйсто разобратся.
Огромная просьба!
Напишите пожалуйста пример кода для отправки писем, текст которых вставлялся бы из внешнего файла, .txt или .html
Спасибо
Извините Я "чайник" в этом деле!Скажите-вот я создал папку и вложил туда 3 файла.загрузил на сервак.А как ссылку настроить на какой из файлов?class.phpmailer или на mail?
Большое спасибо... тут столкнулся с 1 проблемкой
у меня поле title задаеть на самом сайте стандартное для всех... в общем что то кодировки глючат.
Строка выглядит примерно вот так
$_POST['title']='Форма заказа'
ну в общем в теме какая то кракозябра получаеться... как исправить не знаете?
Огромный респект автору. Я Очень долго искал такой скрипт. Почти весь интернет на эту тему обсуждает и приводит в пример один и тот же скрипт. Слегка дорабатывая его. Но все они не работоспособны, либо так коряво описаны, что даже программисты со стажем не всегда понимают. Спасибо тебе.
сам пример, конечно, здорово (видел много где - оно и верно), но молодец, что отметил:
<IfModule mod_charset.c>
CharsetRecodeMultipartForms off
</IfModule>
Отсюда вопрос: что это, зачем и с чем кушается?
Автор, тебе огромное спасибо! Не каждый может написать так, чтобы и "чайнику" (вроде меня) было понятно.
+1 к просьбам примера с кодом подтверждения типа ккапчу :-)
To 'guest': а вот поливать грязью других, ничего не делая самому, может ЛЮБОЙ ДУРАК :-Ь
сайт полное говно! расчитано на чайников! ничего полезного не увидел! и умного тоже!
Хорошо, что есть на свете такие люди!!!
Огромное спасибо Вам!!!
Автору огромнейший респект и спасибо!
Вопрос аналогичный вопросу Алекса, как прикрутить kcaptcha ?
(а лучше даже не ккапчу, а ващ вариант, как в этой гостевухе=) )
ага, ну да -- либо файл, либо картинка....
<br>но и то спасает, сенкс еще раз...
Как прикрутить kcaptcha к этой форме?
<br>Скачал от сюда: www.captcha.ru/kcaptcha/
<br>Подставил элементы в форму, но письма отправляются даже при неверном вводе.
Имя из этой строки в письме почему-то не появляется:
$mail->AddAddress('to@yandex.ru', 'Имя');
Не работает антифлуд (пустой файл antiflood.txt лежит в папке со скриптом и в корне).
Также письма не отправляются, если адрес получателя такого вида:
<?php
function show_form()
{
?>
<form action="" method=post enctype="multipart/form-data">
<br />Имя*<br />
<input type="text" name="name" value="<?=substr(htmlspecialchars(trim($_POST['name'])), 0, 50);?>" size="40" maxlength=50>
<br />Город<br />
<input type="text" name="city" value="<?=substr(htmlspecialchars(trim($_POST['city'])), 0, 50);?>" size="40" maxlength=50>
<br />Контактный телефон<br />
<input type="text" name="tel" value="<?=substr(htmlspecialchars(trim($_POST['tel'])), 0, 50);?>" size="40" maxlength=50>
<br />Контактный email*<br />
<input type="text" name="email" value="<?=substr(htmlspecialchars(trim($_POST['email'])), 0, 50);?>" size="40" maxlength=50>
<br />Teма<br />
<input type="text" name="title" value="<?=substr(htmlspecialchars(trim($_POST['title'])), 0, 200);?>" size="83" maxlength=200>
<br />Сообщение*<br />
<textarea rows="10" name="mess" cols="80" wrap="soft" maxlength=10000><?=substr(htmlspecialchars(trim($_POST['mess'])), 0, 10000);?></textarea>
<br /><p><input type="submit" value="Отправить" name="submit"><br />
* Отмечены поля, которые необходимо заполнить</p>
</form>
<?
}
function complete_mail() {
// $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично
$_POST['title'] = substr(htmlspecialchars(trim($_POST['title'])), 0, 200);
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 10000);
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 50);
$_POST['city'] = substr(htmlspecialchars(trim($_POST['city'])), 0, 50);
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 50);
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 50);
// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['name']))
output_err(0);
// если неправильно заполнено поле email - показываем ошибку 1
if(!preg_match("/[0-9a-z_.]+@[0-9a-z^\-.]+\.[a-z]{2,3}/i", $_POST['email']))
output_err(1);
// если не заполнено поле "Сообщение" - показываем ошибку 2
if(empty($_POST['mess']))
output_err(2);
// обратите внимание, теперь мы можем писать красивые письма, с помощью html тегов ;-)
$mess = '
Имя: '.$_POST['name'].'
Город: '.$_POST['city'].'
Контактный телефон: '.$_POST['tel'].'
Контактный email: '.$_POST['email'].'
'.$_POST['mess'];
// подключаем файл класса для отправки почты
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = $_POST['email']; // от кого
$mail->FromName = $_POST['name']; // от кого
$mail->AddAddress('mail@my-domain.ru'); // кому - адрес
$mail->IsHTML(false); // выставляем формат письма HTML
$mail->Subject = $_POST['title']; // тема письма
$mail->Body = $mess;
// отправляем наше письмо
$filename = "antiflood.txt";
chmod($filename, 0644);
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
if($contents != $mess){
$file = fopen("antiflood.txt", "w");
fputs ($file, $mess);
fclose ($file);
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
}
echo 'Спасибо! Ваше письмо отправлено.';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
chmod($filename, 0644);
Попробуйте, может поможет.
Не отправляются письма, если мэйл получателя вида info@domain-ab.ru и выдаёт ошибку е-мэйла на вполне нормальные обратные адреса типа alex.f@domain-123.ru
Что сказать, не смотря на пятницу, делаете всё Вы более,чем уверенно))) Всё работает! Осталось немного настроить, и в путь! Ещё раз, огромное спасибо!=)
Спасибо огромное за скрипт! Настроил в html под сайт, с оригинала формы генератора. Всё отлично работает. Единственное, что не получается, это, чтобы логи отправленных сообщений записывались в отдельный файл, например, mail.txt. Есть подозрения, что не все письма доходят. Сможете помочь с этим?
$mess = date("Y-m-d").$mess;
$file = fopen("log.txt", "a");
fputs ($file, $mess);
fclose ($file);
Спасибо авторам сайта огромное!
Подскажите пожалуйста, чтобы в это ($mail->From = 'mail@mail.ru'; // от кого ) поле пользователь вписывал свой имеэйл, как это сделать? Это мне нужно для того чтобы на почте вкючить автоответчик и пользователю тогда сможет приходит ответ о благодарности!
меняем на:
$mail->From = $_POST['email'];
Я не могу понять, где определен цвет ячейки для ввода имени и ящика (желтый, то бишь). Подскажите, пожалуйста, а то желтый меня не устраивает.
input{background-color: #fff;}
Прошу о помощи!
Скрипт установил как положено. Хостинг от Jino.ru
Проблема: Письменное сообщение приходит исправно, а файлов и картинок нет. Пробывал с .htaccess и без, все равно не выходит. Пожалуйста, подскажите, на что следует обратить внимание!?
Кстати, очень благодарен Вам за эти скрипты, до-олго я их искал.
вот я поставил этот скрип но как мне сделать чтоб при нажатие кнопки отравить сообщение ухадила мне на почту.
Скрипт работает, но если после отправки обновить страницу ( с незаполненными полями) то сообщение отправится ещё раз и так до бесконечности
Все 3 скрипта написаны с кучей ошибок. Привожу далее сайт, где можно разобраться во всем по порядку: и с кодировкой, и с возможностью спама, взлома..
<br><br>Еще раз повторюсь - привиденные скрипты не считаю пригодными для использования! Будьте аккуратнее!!
<br><br>
<br><br>www.netangels.ru/support/articles/php-mail/
04.10.2010 Сергей
по указанному адресу ошибка 404
Хороший скрипт, написан со вкусом...
Вот только я не спец в ПХП и мне вобще как-то он непонятен :))
HELP PLZ!!! Разобрался со всем, но как реализовать выбор из списка, select например, у меня форма отдельным файлом, а сам php обработчик в другом. И что бы было все в файле php обработчика, а не формы, Заранее спасибо!
Павлу: нужно скрипт обработки формы, начиная с: < ? } function complete_ mail()..... ?> вставлять в самый конец страницы, перед </body>.
<br>И ещё вопрос администратору сайта: не подскажите, где вы эту форму добавления комментариев приобрели?(в которой я сейчас пишу). Мне очень понравилась, я бы тоже приобрела себе такую!
Здравствуйте. Есть проблема. Значит при заполнении всех полей правильно, все прекрасно отправляется и письмо приходит. Всё отлично. И форма заказа выглядит как надо. А вот если не заполнить какое-либо поле со звездочкой, то появляется ошибка, например Ошибка! не заполнено имя... но при этом пропадает подвал на сайте. То есть остается левая колонка и форма отрпавки. А нижняя часть сайта отрезается до момента:
<p> </p>
<img src='star.gif' width='15' height='15' border='0' /> Помечены поля, которые необходимо заполнить
Такая ерунда на двух сайтах есть где я установил такую форму. ПОчему так?
Доброго времени суток! Все работает отлично, акромя одной детали:
Письмо приходит в кодировки Koi-8, а мне нудно, чтобы приходило в win-1251. Rfr это прописать?
здравствуйте.Спасибо за ваш труд.Попыталась использовать его в своих нуждах и вот... при отправке письма с формы возникает ошибка Mailer Error: Could not instantiate mail function.
Подскажите, в чем может быть проблема? Спасибо.
Спасибо за скрипт, все замечательно. Не подскажите, как сделать, что бы прикрепленные файлы приходили все с одним заданным именем, например "файл1", "файл2" и т.д. С картинками сдорово получилось.
Беру свои слова обратно, предыдущие три поста считать недействительными, кроме слов про классный скрипт и поляну. Позор на мою голову, посты внимательней читать нужно, умные люди давно уже все рассказали! Еще раз: афтар, Красавчег, пеши исчо!
зы. Я пробовал и из генератора скрипт ковырять, и из примера, фигвам.
ПА-МА-А-А-ГИ-И-И-ТЕ!!!!! Такой классный скрипт, то что надо. Я весь инет облазил, этот самый лучший. Но вот в чем проблема. Мне нужно отправлять прикрепленный jpeg, а в теле письма его иконку. Все получается на УРА, но только с одним файлом:
if(isset($_FILES['file_name'])) {
if($_FILES['file_name']['error'][0] == 0){
$mail->AddAttachment($_FILES['file_name']['tmp_name'][0], $_FILES['file_name']['name'][0]);
}
}
if(isset($_FILES['file_name'])) {
if($_FILES['file_name']['error'] == 0){
if (!$mail->AddEmbeddedImage($_FILES['file_name']['tmp_name'], 'my-attach', 'image1.gif', 'base64', $_FILES['file_name']['type']))
die ($mail->ErrorInfo);
$mess .= 'А вот и наша картинка:<br /><img src="cid:my-attach" border=0 width=100> ';
}
}
А мне нужно много. Не смейтесь над чайником, помогите! С меня поляна!
Народ, подскажите, как с помощью этого сделать рассылку сразу нескольким адресатом.
Автору - огромное спасибо, просто молодец, а то самому писать времени нет. Респект ;-) Легко настраивается, отлично работает - 5 баллов.
А как сделать чтоб строчка Спасибо! Ваше сообщение отправлено. была бы зеленого цвета?
нормальный пример!
<br>сам с .htaccess мучился, а тут разжували
Эта форма не работает на сервере, там стоит PHP5.
Возникает ошибка:
Warning: complete_mail(class.phpmailer.php): failed to open stream: No such file or directory in /pub/home/vis/htdocs/contact.php on line 91
Warning: complete_mail(class.phpmailer.php): failed to open stream: No such file or directory in /pub/home/vis/htdocs/contact.php on line 91
Fatal error: complete_mail(): Failed opening required 'class.phpmailer.php' (include_path='.:/usr/local/share/pear') in /pub/home/vis/htdocs/contact.php on line 91
А можно этот скрипт переделать так, чтоб на е-майл приходил только файл, т.е чтоб не было полей тема, сообщение и др., а было бы одно поле - добавить файл ? Подскажите пожалуйста, как это написать, и вообще возможно ли?
Скрипт работает!
Спасибо автору сайта,но возник вопрос...
При получении mail.ru в заголовках пишет, что есть подозрение на спам
Спасибо Классный скрипт!
Не подскажите как сделать выпадающий список ?
О прикольно все заработало спасиб за скрипт.
А если у меня стоит денвер.И все письма скидываются в папку tmp\!sendmail , то после того как я залью на сервер(Peterhost) все будет отсылатся ,как надо ?
Заранее спасибо за ответ
Здравствуйте, хороший скрипт, спасибо! У меня все работает, сообщения и файлы на почту отправляются, но....Имеются 2 проблемки: первая - в форме у меня на страничке(www.fotoglamur.com/for.php) надписи не по русски, а непонятными значками, подскажите как и где прописать кодировку windows 1251 к этому скрипту? И вторая проблемка - когда отправишь сообщение появляется страничка с надписью Спасибо! Ваше сообщение отправлено, а ниже этих слов всё отрезано, хотя часть скрипта по обработке формы я вставила вроде правильно(перед закрытием /body). Помогите пожалуйста!
Помогите пожалуйста. после получения письма вложенный файл не открывается. В чем может быть проблема?
столкнулся с проблемой, при отправке картинки в оутлуке картинка не подгружается, а выглядит крестиком (типа неправильный адрес)
решил проблему исправлением одной строчки в function complete_mail():
// если было изображение, то прикрепляем его в виде картинки к телу письма.
if(isset($_FILES['attachimage'])) {
if($_FILES['attachimage']['error'] == 0){
if(!$mail->AddEmbeddedImage($_FILES['attachimage']['tmp_name'], 'my-attach', 'image.gif', 'base64', $_FILES['attachimage']['type']))
die ($mail->ErrorInfo);
$mess .= '<br />А вот и наша картинка:<br /><img src="cid:my-attach" border=0><br />я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) ';
заменил в тэге img путь к картинке src="cid:my-attach" т.е. указатель на id картинки
Посыпаю голову пеплом!
В самом начале было указано - сделайте файл .htaccess определенного содержания. Неплохо бы было указать еще и зачем. :)
Оказывается, русский apache перекодирует некоторые символы, в частности символы с кодом 00 он переводит в символ с кодом 20 (пробел), и что бы этого не было и нужен вышеописанный файлик.
Так, почитав комменты, понял, что по первой части вопроса нужно пользовать конструкцию "$_FILES['attachfile']['name']", но вторая часть (про присоединенный word-овский файл, требует ответа...
Судя по комментам, автор тут явно появляется. Поэтому надеюсь таки не ответ! Проблема вот в чем. Сделал форму: имя телефон, e-mail, присоединенный файл. Первое - как проверить - действительно ли файл присоединен? Конструкция с полями типа input не прокатиывает. :( Второе и самое главное - присоединенный word-овский файл при скачивании не открывается, хотя размер совпадает байт в байт. При детальном рассмотрении выяснилось, что все байты с кодом '00' стали байтами с кодом '20'! Это можно как-то поправить?
<b>Mailer Error: Could not instantiate mail function.</b> Что с этим теперь делать! Пытаюсь организовать рассылку, но вот после того как добавил папку language стало появляться вот это сообщение. Хостинг Агава.
Mailer Error: Could not instantiate mail function. Что с этим теперь делать! Пытаюсь организовать рассылку, но вот после того как добавил папку language стало появляться вот это сообщение. Хостинг Агава.
Постоянно выдается сообщение Mailer Error: Language string failed to load: instantiate. language.zip непомогает!
Выдается сообщение Mailer Error: Language string failed to load: instantiate.
Как исправить?
Не силён в PHP
Куда вписать свои данные чтобы письмо с сайтаприходило именно мне?
Автору скрипта большое спасибо!!!
У меня как начинающему есть несколько вопросов, если позволите...
Как сделать так чтобы проверялся размер файла вложения при отправке, ведь если файл больше допустимого размера то он просто игнорируется, и когда это лучше делать перед отправкой или на сервере,
2.Как ограничить файлы вложения по типу, к примеру мне нужно чтобы файлы были только типа doc & rtf.
Был-бы очень признателен за помощь советом и/или скриптом.
Спасибо за понимание и поддержку.
С уважением, Андрей
Andry.Boris@gmail.com
if(substr($_FILES['attachfile']['name'], -3) != 'rtf' AND substr($_FILES['attachfile']['name'], -3) != 'doc')
echo 'Файл не подходит';
else {
// выполняем отправку
}
if($_FILES['attachfile']['type'] != 'application/octet-stream' AND $_FILES['attachfile']['type'] != 'application/msword')
echo 'Файл не подходит';
else {
// выполняем отправку
}
?>
Дорогой Автор!
Большое спасибо за скрипт !
Осталась только одна проблемкаю Плиз хелп!!! -
вот как бы сделать , чтобы данные введенные в форму (без вложений ) - приходили бы не только на указанный адрес электронной почты т.е. $mail->AddAddress('vasya@mail.ru', 'Имя'); // кому - адрес, Имя. А плюс к Этому приходило подтверждение на введенный $_POST['email']. логически попробовал поставить такой вариант:
require 'class.phpmailer.php';
$email[1]='client@vasya.com';
$email[2]='.$_POST['email'].';
$mail = new PHPMailer();
$mail->From = 'mailer@vasya.com';// от кого
$mail->FromName = ' X Mailer www.vasya.com'; // от кого
$email[1]->AddAddress('client@vasya.com', 'Client Support'); // кому - адрес, Имя
$email[2]->AddAddress('.$_POST['email'].','.$_POST['name'].'); // кому - адрес, Имя
$mail->IsHTML(true);// выставляем формат письма HTML
$mail->Subject = $_POST['title'];// тема письма
- но увы :)syntax error, unexpected T_STRING! Надо учить матчасть судя по всему :)
Очень прошу помочь...
С наступающим новым годом !
Всем успеха и здоровья !
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = 'mailer@vasya.com';// от кого
$mail->FromName = ' X Mailer www.vasya.com'; // от кого
$mail->AddAddress('client@vasya.com', 'Client Support'); // кому - адрес, Имя
$mail->AddAddress($_POST['email'],$_POST['name']); // кому - адрес, Имя
$mail->IsHTML(true);// выставляем формат письма HTML
$mail->Subject = $_POST['title'];// тема письма
?>
Замечательный скрипт, спасибо большое :)
У меня только одна проблема, не отправляются файлы большого размера... проблему искать на хостинге или есть какие-то ограничения на размер отправляемого письма?
<?
phpinfo();
?>
Запустите его и посмотрите upload_max_filesize
18.12.2011 Влад (evs-vladislav@ya.ru
Автору огромное спасибо, без этого скрипта не знал бы куда деваться.
Одна проблема осталась:
на сервере upload_max_filesize: и локал и мастер по 30M, а отправляются файлы только до 7 мб почему-то.
Пробовал и на gmail, и на yandex-почту - письма-то с большими вложениями они принимают, а с сайта больших файлов не отправить :(
Есть тут кто или это сайт уже тока сам посебе существует?
ответьте пожалуста на моё мыло shikin_kolya@mail.ru. или в аську 550953 А как сделать генератора чисел (код подтверждения)вот как на данной формачке что я пишу?
При отправке письма выдает вот какое сообщение: Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP"
and "smtp_port" setting in php.ini or use ini_set() in F:\apache\localhost\www\post.php on line 50
Че делать не знаю?!
Здраствуйте! Подскажите, как сделать, чтобы на почту приходили поля, выбранные из select??
Скажите пожалуйста что именно надо поменять в файле class.phpmailer.php чтобы работало на хостинге?
08.05.2011 Sasha
Я меня на кодировку utf-8 потому что там стандартная не прошла
Все,разобрался,еще раз респект тебе за скрипт и содействие!
Вот решение проблеммы для антифлуда в третьем варианте скрипта:
Меняем это:
// отправляем наше письмо
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
echo 'Спасибо! Ваше письмо отправлено.';
}
На вот это:
// отправляем наше письмо
$filename = "antiflood.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
if($contents != $mess){
$file = fopen("antiflood.txt", "w");
fputs ($file, $mess);
fclose ($file);
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
}
echo 'Спасибо! Ваше письмо отправлено.';
}
Зы: не забываем создать и положить в корень файл - antiflood.txt
Огромное спасибо за ваше пояснение,но теперь письма не отправляются,а записываются в файл - antiflood.txt,что делать? (:
Спасибо за скрипт,на фоне других - этот супер!
Для работы брал третий вариант,но вот вопрос,если в первом и втором варианте мне понятно,что и где заменить для избежания антифлуда,то к сожалению (в виду не знания пока хорошо пшп) в третьем варианте я не знаю,что и где заменить. Плиз дайте внятный хелп.
Заранее благодарен.
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
Ув. Добрый день.
попробовал разные варианты, никак не выходит.
После отправления письма, нашел как возвращать форму, а как убрать эхо и самое главное (при обновлении страницы), высылается очередное письмо. т.е отправив первое, можно кликать Ф5 и спамить ящик. )
Можно поставить ограничения или каким-то образом убить повторные отправления? disable submit'а не помогает, и сессий тут нету с куками. %) прямо дилема. %)
Нашел информацию, ее можно добавить в пример.
для получения отчета о доставке сообщения
Return-Receipt-To: moey@po4ty.net
для получения отчета о прочтении сообщения
Disposition-Notification-To: moey@po4ty.net
X-Confirm-Reading-To: moey@po4ty.net
X-PMRQC: 1
Как запросить подтверждение о доставке письма?
<br>Вот в отправке письма ничего сложного, если аттач есть - тоже не проблема... а как сделать, чтобы когда человек получал от меня письмо, то от него бы приходило подтверждение о доставке письма.
А кто знает как сделать так, чтобы после вывода "ОШИБКА! ... " уже введенные в поля данне там же и остались?
Здравствуйте.
как можно сделать $_POST['submit'], только вместо 'submit' вставить переменную $F??
Подскажите почему не работают ни ограничения по количеству введёных символов, ни абзацы при получении писем, html тоже не работает, а написано, что работает.
Подскажите, как сделать, чтобы работало?
Да, и ещё, ограничение по количеству введённых в форму символов не дейчтвует...
Да, сейчас попробовал сам скрипт без кода форм переместить в самый низ, перед закрытием body. Теперь при ошибках страница отображается полность, нормально, но теперь, после отправления страница обрезается после слов:
"сообщение отправлено".
Что можно сделать ещё, подскажите. Уж больно хорош скрипт. Спасибо!
Во-первых огромное Вам спаси, дорогой Вы наш. Просто отличная работа. Премного благодарен. Всё понятно даже мне. =)))
Всё отправляется, получается и читается в лучшем виде. Только вот какой-то глюк, не знаю что это, может кто подскажет. Если возникает какая-нибудь ошибка, там имя не введено или email, страница обрезается по конец скрипта. Т.е. страница не загружается(обрывается) дальше ниже этой строки:
"* Помечены поля, которые необходимо заполнить".
Заранее благодарю за помощь. И ещё раз спасибо за труд!
Народ, а если у меня в форме число вводимых полей каждый раз разное (например: выводится в форму каждый раз выбранный каталог с товарными позициями, (напротив которых вводится количество заказа товара) из списка каталогов, каталогов много и количество товарных позиций в них разное)? Как такую форму обработать одним файлом?
>ну почему у меня не работает :/
>у меян стоИт денвер, мои действия
у денвера существует заглушка, в которую sendmail запихивает все исходящие письма и с радостью сообщает, что mail вернула true (в реальности оно никуда их не отправляет). Поищи свои письма в папке */WebServer/tmp/!sendmail/*.eml
Если я хочу прикрепить к письму файл, но не тот который на моей машине, о тот что в нете висит, независимо это архив или картинка с указанием адреса.
к примеру
http://www.php-mail.ru/i/php-mail_03.jpg
http://www.php-mail.ru/class.phpmailer.zip
как это реализовать
ну почему у меня не работает :/
у меян стоИт денвер, мои действия
1 закидываю class.phpmailer.php, который скачал по ссылке
2 закидываю index.php с кодом
3 в етом коде радактирую код
// подключаем файл класса для отправки почты
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = 'test@test.ru'; // от кого
$mail->FromName = 'xocmep-ru@yandex.ru'; // от кого
$mail->AddAddress('xocmep-ru@yandex.ru', 'Толик'); // кому - адрес, Имя
$mail->IsHTML(true); // выставляем формат письма HTML
$mail->Subject = $_POST['title']; // тема письма
пишу письмо, файлы не прикрепляю, отправляю, все нармально (Спасибо! Ваше письмо отправлено.)
а письма не приходят на xocmep-ru@yandex.ru :((((
что не так я сделал/не сделал... :(((
спасибо за понятные объяснения.
есть вопрос: а как реализовать отправку по нескольким адресам в цикле. Т.е. не просто добавляя AddAddress с новым получателем, а что-то типа рассылки.
<?php
// подключаем файл класса для отправки почты
require 'class.phpmailer.php';
$email[]='1@test.ru';
$email[]='2@test.ru';
$email[]='3@test.ru';
for ($i=0; $i<count($email); $i++) {
$mail = new PHPMailer();
$mail->From = 'test@test.ru'; // от кого
$mail->FromName = 'Злостный спамер'; // от кого
$mail->AddAddress($email[$i], $email[$i]); // кому - адрес, Имя
$mail->IsHTML(true); // выставляем формат письма HTML
$mail->Subject = 'тема письма'; // тема письма
$mail->Body = 'Вас приветствует спам рассылка<br><br>ку-ку';
// отправляем наше письмо
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
echo 'Письмо отправлено на <a href="mailto:">'.$email[$i].'</a><br>';
}
?>
у меня через http://......?id=sp сделано.
в action соответственно="?id=sp"
а там:
<?php
$ID_Value=TRUE; # вставляем форму
if(isset($_GET["id"])===TRUE){
$id=$_REQUEST['id'];
if($id=='sp'){
include "sp.php";
} }else{
include "content.php";
}
?>
После отправки* не показывает ничего.
в html, судя по всему, сразу как начинается php - пусто.
нет сообщения, только top.php и обрыв.
Site prosto SUPER!!! Spasibo ogromnoe. Est' odin vopros: kak sdelat' chto bi posle zapolneniya formi vidavalo soobchenie ne v etom zhe okne, a uvodilo na druguu stranicu sita?
naprimer na www.somesite.com/index.html a ne:
echo '<table height="100%" width="100%"><tr><td align="center">Thank you for your interest, we look forward to meeting you.</td></tr></table>';
show_form();
Где Вы!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
И еще данный пример предпологает только окна где написано "Обзор", а прикрепился сам файл или нет такого нет?
Он уже сохранен
У меня это вылезло на сайте, после того как я загрузила третий пример. Почему у меня после всех окон
<br>вылезает эти карабяки?
<br>Имя*
<br>
<br>Контактный телефон
<br>
<br>Контактный email*
<br>
<br>Teма
<br>
<br>Сообщение*
<br>
<br>Файл
<br>
<br>Изображение
<br>
<br>
<br>
<br>* Помечены поля, которые необходимо заполнить Контактный телефон:\'.$_POST[\'tel\'].\'
<br>Контактный email:\'.$_POST[\'email\'].\'
<br>\'.$_POST[\'mess\']; // подключаем файл класса для отправки почты require \'class.phpmailer.php\'; $mail = new PHPMailer(); $mail->From = \'test@test.ru\'; // от кого $mail->FromName = \'www.php-mail.ru\'; // от кого $mail->AddAddress(\'to@yandex.ru\', \'Имя\'); // кому - адрес, Имя $mail->IsHTML(true); // выставляем формат письма HTML $mail->Subject = $_POST[\'title\']; // тема письма // если был файл, то прикрепляем его к письму if(isset($_FILES[\'attachfile\'])) { if($_FILES[\'attachfile\'][\'error\'] == 0){ $mail->AddAttachment($_FILES[\'attachfile\'][\'tmp_name\'], $_FILES[\'attachfile\'][\'name\']); } } // если было изображение, то прикрепляем его в виде картинки к телу письма. if(isset($_FILES[\'attachimage\'])) { if($_FILES[\'attachimage\'][\'error\'] == 0){ if (!$mail->AddEmbeddedImage($_FILES[\'attachimage\'][\'tmp_name\'], \'my-attach\', \'image.gif\', \'base64\', $_FILES[\'attachimage\'][\'type\'])) die ($mail->ErrorInfo); $mess .= \'А вот и наша картинка:
<br>
<br>я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) \'; } } $mail->Body = $mess; // отправляем наше письмо if (!$mail->Send()) die (\'Mailer Error: \'.$mail->ErrorInfo); echo \'Спасибо! Ваше письмо отправлено.\'; } function output_err($num) { $err[0] = \'ОШИБКА! Не введено имя.\'; $err[1] = \'ОШИБКА! Неверно введен e-mail.\'; $err[2] = \'ОШИБКА! Не введено сообщение.\'; echo \'
<br>\'.$err[$num].\'
<br>
<br>\'; show_form(); exit(); } if (!empty($_POST[\'submit\'])) complete_mail(); else show_form(); ?>
Может, я не первый, но попрошу:
<br>выложи плиз добавочку к чкрипту для кода поддтверждения, как вот этот скрипт отправки, которым доставлена эта мессага.
<br>а то понимаешь три варианта, но ни в одном нет того, что у тебя у самого действует на сайте.
Большое спасибо за такое подробное объяснение. У меня такая проблема: если я отправляю с прикрепленными файлами формата txt, то и приходит в формате txt. Но попробовал присоединить в формате doc, а пришло в формате doc.safe (как будто от чего то обезопасили). Изза чего может такое происходить?
<br>
<br>Заранее благодарю за помощь!
Хочу выразить огромную благодарность администратору этого сайта. Побольше бы таких людей.
Ну ты, Серёга 03.06.2007 даёшь! Мало того - халява, так подать сюда в наилучшем виде! А самому почитать посты - слабо?! Народ ставит и юзает (я тоже поставил!). Разжёвано - донельзя! Имей уважение к автору!
Ни че не работает. Открывает пустую страницу. Почему в 5 строке у тебя action пустой? Выложи рабочую пример-страницу. (запускной файл index и все прилагающаяся к нему ерунда), Что не копировать это от туда в ставить туда.
Я сам пользуюсь The Bat и там все хорошо… но вот многие пользуются Outlook’ом и если там поставить кодировку как вы писали в прошлых примерах…
$from='test@test.ru';
$headers = 'From: '.$from . "\r\n" .
'Content-type: text/plain; charset="windows-1251"' . "\r\n";
mail($to, $_POST['title'], $mess, $headers);
То кодировка Outlook’ом не воспринимается… А вот если убрать From и оставить кодировку.. то все ок! Но все же поле фром необходимо…
Если кто-то может нормально выставить кодировку что бы читалась Outlook’ом напишите пожалуйста сюда… как это сделать…
12.04.2011 Олег
Используя класс class.phpmailer.php, для смены кодировки достаточно в обработчике после строки $mail = new PHPMailer(); добавить строку с указанием кодировки, например так: $mail->CharSet = "UTF-8";
А если есть необходимость _отложенной_ отправки письма, то есть, не заставлять пользователя пялиться на экран, пока уходит письмо (или письма) - например, когда со страницы форума в фоновом режиме уходят оповещения о новых сообщениях, - есть ли какое-нибудь изящное решение?
Со второй и всеми последующими картинками разобрался, спасибо! А как поменять конструкцию AddAttachment и AddEmbeddedImage для того, что б файл(-ы) и картинку(-ки) брать не с локального компа, каждый раз закачивая их, а положить их рядышком на сайт и брать по мере необходимости, заранее прописав их имена и пути в скрипте? Заранее спасибо!
$path = './i/kartinka24.jpg'; // путь к картинке
if (!$mail->AddEmbeddedImage($path, 'my-attach', 'image.jpg', 'base64', 'image/jpeg'))
die ($mail->ErrorInfo);
$mess = '<b>Изображение:</b><br><img src="cid:image.jpg" border=0>';
?>
У меня все работает но вот нельзя ли сделать чтобы после отправки данных формы сама форма не исчезала, меняясь на надпись "Спасибо! Ваше письмо отправлено". Хорошо бы чтобы эта надпись появлялась внизу или вверху формы.
С уважением, Денис.
echo 'Спасибо! Ваше письмо отправлено.';
замените на
echo 'Спасибо! Ваше письмо отправлено.';
show_form();
Скачал-установил-заработало: Ура! Спасибо большое!
Но сразу захотелось прикреплять картинок более одной. :)
Не подскажете, как ввести изменения, что б прикреплять можно было и одно, и два, и более изображений?
<br />Изображение 2<br /> <input name="attachimage2" type="file" size="28">
И обработку:
if(isset($_FILES['attachimage2'])) {
if($_FILES['attachimage2']['error'] == 0){
if (!$mail->AddEmbeddedImage($_FILES['attachimage2']['tmp_name'], 'my-attach2', 'image2.gif', 'base64', $_FILES['attachimage2']['type']))
die ($mail->ErrorInfo);
$mess .= 'А вот и наша вторая картинка:<br /><img src="cid:image2.gif" border=0>';
}
}
Огромное спасибо. Скинул на хостинг, поменял настройки в 'class.phpmailer.php' и все прекрасно работает. Побольше бы таких хороших и понятных статей и авторов.
Все заработало. И картинка пришла и файл. Спасибо большое. Очень помогли в решении вопроса.
Скачал файл. Все нормально. Получается теперь, что картинка пришла, а файла другого нет.
Уменя выдает ошибку в 61 строке. Вот сама строка: require 'class.phpmailer.php';
А вот, что пишет Warning: require(class.phpmailer.php) [function.require]: failed to open stream: No such file or directory in /home/webdd/domains/web-dd.com/public_html/1/index.php on line 61
Fatal error: require() [function.require]: Failed opening required 'class.phpmailer.php' (include_path='.:/usr/local/lib/php') in /home/webdd/domains/web-dd.com/public_html/1/index.php on line 61
Что-то не работает эта отправка... Я копировал этот текст, отредактировал очень внимательно, вставил свой е-mail, а при запуске пишет ошибку в сто-какой-то строке... Что это? По-моему с if где-то ошибка...