Вставка изображения в письмо на PHP


php mail засунуть в тело письма 2 изображения

php mail засунуть в тело письма 2 изображения

Обсуждение темы php mail засунуть в тело письма 2 изображения в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Целый день сегодня провел изучая как красиво оформлять письма. Нашел код php который реализует вставку одной картинки. Мне в принципе ясен смысл, прикрепляет .

Целый день сегодня провел изучая как красиво оформлять письма. Нашел код php который реализует вставку одной картинки. Мне в принципе ясен смысл, прикрепляет фаил, дает ему имя и ссылку типа вставляет в $body
но не могу сделать так чтобы две картинки всунуть. Помогите, кому не сложно. Или напишите как Вы оформляете письма. (прописывать путь до картинки с сайта http://sait.ru/img.gif не подходит)

\n»;
$headers.=»To: [email protected] \n»;
$headers.=»Subject: $subj \n»;
$headers.=»Mime-Version: 1.0 \n»;
$headers.=»Content-Type: multipart/alternative; boundary=\»$bound\» \n»;
$body=»—$bound \n»;
$body.=»Content-type: text/html; charset=\»windows-1251\» \n»;
$body.=»Content-Transfer-Encoding: 8bit \n\n»;
$body.=»

Привет

Это проба отправки письма с прикрепленной картинкой.

А вот и сама картинка:

«;
$body.=»\n\n—$bound \n»;
$body.=»Content-Type: image/jpeg; name=\»».basename($file_name).»\» \n»;
$body.=»Content-Transfer-Encoding:base64 \n»;
$body.=»Content-ID: \n\n»;
$f=fopen($file_name,»rb»);
$body.=base64_encode(fread($f,filesize($file_name) )).» \n»;
$body.=»—$bound— \n\n»;
mail(«[email protected]», $subj, $body, $headers);
?>

Отправка писем при помощи PHP-Прикрепление файла

Письмо, содержащее прикрепленный файл, несколько отличается от простого.
В нем добавляются некоторые заголовки, и немного меняется само построение,
хотя несомненно само письмо остается текстовым файлом. Но давайте все по порядку.

Одна из особенностей — наличие заголовка mime-version.
Этот заголовок указывает стандарт, которому соответствует тело сообщения.
Сообщения, соответствующие mime обязаны содержать такое поле заголовка со следующим текстом:
mime-version: 1.0

Если мы хотим отослать письмо с прикрепленными файлами, то необходимо использовать заголовок content-type: multipart/mixed, который обозначает, что письмо состоит из нескольких частей, каждая из которых содержит свой заголовок content-type. Для обозначения границы этих частей необходимо использовать параметр boundary, который еще называется маркером границы.
Значением этого параметра может служить любая строка. Но надо учесть, что она должна быть уникальной и не встречалась в теле письма. Иначе письмо может быть неправильно разбито на части.

from: «uspenskii evgeny»
to: user@domain.ru
subject: hello
mime-version: 1.0
content-type: multipart/mixed; boundary=»spravkaweb-12345″

При разделении письма на части перед маркером должны стоять два знака дефиса.
А последний маркер, который обозначает конец письма, должен содержать в конце два знака дефиса.
Для каждой части необходимо установить свои заголовки.
После заголовков необходимо поставить два знака перевода строки.

from: «uspenskii evgeny»
to: user@domain.ru
subject: hello
mime-version: 1.0
content-type: multipart/mixed; boundary=»spravkaweb-12345″
—spravkaweb-1234
content-type: text/plain; charset=»windows-1251″
content-transfer-encoding: quoted-printable

hi!
here’s that my file!

—spravkaweb-1234
content-type: application/x-rar-compressed; name=»file.rar»
content-transfer-encoding:base64
content-disposition:attachment

Если у нас идет часть с текстом, то надо заголовок content-transfer-encoding присвоить значение quoted-printable, либо 7bit, либо 8bit. Для части с файлом этот заголовок должен быть равен base64.

Заголовок content-disposition, присутствующий во второй части, указывает, как почтовой программе следует отобразить данную часть письма. Он может принимать значение attachment (этот участок не является частью письма, а просто прикреплен к нему в виде файла) и inline (включение, которое используется непосредственно в письме, например, картинка, вставляемая в html).

В первой части заголовком
content-type: text/plain; charset=»windows-1251″

указали, что это простой текст с кодировкой windows.
Во второй же части заголовком
content-type: application/x-rar-compressed; name=»file.rar»

указали, что тип файла — rar-архив, а имя файла — file.rar.
Если отправляем gif-картинку, его content-type будет выглядеть:
content-type: image/gif; name=»file.gif»

В случае, если заранее не известно, какой тип файла отправляем, или формат файла не является стандартным, следует заголовку content-type присвоить значение application/octet-stream.
content-type: application/octet-stream; name=»file.dat»

Прикрепленные файлы должны быть размещены в письме в формате base64.
Преобразовать файл в этот формат можно при помощи функции base64_encode():
// Открываем файл для чтения в бинарном формате
$file=fopen(«file.zip», «rb»);
// Считываем его в строку $str_file
$str_file=fread($file,filesize(«file.zip»));
// Преобразуем эту строку в base64-формат
$str_file=base64_encode($str_file);

Теперь переменную $str_file, которая содержит файл, можно вставлять в письмо.

Для окончательного закрепления материала напишем функцию, которая отправляет письмо в
html-формате по указанному адресату с прикрепленным файлом:

Функция вставки изображения в PHP

В процессе вёрстки сайта на WordPress приходится вставлять изображения в PHP коде. Сложность заключается в том, что в echo нужно вставить другой php код.

Для этого я использую следующую конструкцию:

Если требуется автоматически вставлять в title и alt текущее названия раздела:

В коде выше присваиваем переменной $img_url путь к файлу изображений, которое нужно вывести. Используется функция get_bloginfo(‘template_url’), которая указывает путь до шаблона WordPress.

Вместо неё можно использовать конструкцию пути от корня сайта:

Для вывода php пути внутри изображения используется конструкции без get:

Отправить картинку по email PHP

PHPMailer очень функциональный класс для отправки электронных писем средствами PHP.

Приведенный ниже php код реализует отправку письма с прикрепленным файлом, а точнее изображением которое отображается непосредственно в теле письма.

На момент написания этой заметки актуальная версия PHPMailer 5.2.4.

Страница проекта на Google Code: PHPMailer.

UPD (10.11.14): Прошло много времени, проект переехал на гит: PHPMailer.

Вставка изображения в письмо на PHP

Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 4989-й день

Группа: Validating
Сообщений: 224
С нами с: 25-July 07

Хочу проконсультироваться с вами, ув. пхпшники.

Собственно, нашел такой код:

$body.=»Content-type: text/html; charset=\»windows-1251\»\n»;
$body.=»Content-Transfer-Encoding: 8bit\n\n»;
$body.=»

Привет

Это проба отправки письма с прикрепленной картинкой.

А вот и сама картинка:

$body.=»Content-Type: image/jpeg; name=\»».basename($file_name).»\»\n»;
$body.=»Content-Transfer-Encoding:base64\n»;
$body.=»Content-ID: \n\n»;

mail(«admin@localhost.ru», $subj, $body, $headers);

По идее должен работать.
Но решил уточнить для понимания несколько непонятных для меня моментов.

— $bound=»spravkaweb-1234″; — понятно. Создаем идентификатор картинки

— $body=»—$bound\n»; — находиться между
«$headers.=»Content-Type: multipart/alternative. » и «$body.=»Content-type: text/html;. «
т.е. мы в хедер запихиваем все идентификаторы картинок (если их несколько), правильно?
И скажите, последовательность имеет значение (так как написано) или в хедер идентификаторы картинок можно ставить в любое место?

— $body.=»\n\n—$bound\n»; — это просто выводит текст переменной $bound. Это понятно.

— этого совсем не понял. Зачем, если мы вывели картинку в «;?

$body.=»Content-Type: image/jpeg; name=\»».basename($file_name).»\»\n»;
$body.=»Content-Transfer-Encoding:base64\n»;
$body.=»Content-ID: \n\n»;

Лучший сервис для массовых рассылок

Удобный инструмент для быстрых первых и повторных продаж

Почему email-маркетинг

  • Email-маркетинг в 4 раза прибыльнее других маркетинговых каналов
  • По ссылке в письме перейдёт в 5 раз больше людей, чем в посте на Facebook
  • Читатели рассылки проведут на вашем сайте на 80% больше времени, чем те, кто её не получали

Увеличивайте продажи с помощью рассылок:

Соберите базу контактов

Актуальная и активная база позволяет вашим письмам получать в 5 раз больше откликов, чем посты в социальных сетях. Чтобы собрать контакты настраивайте интеграцию с 38 сервисами или устанавливайте удобные и красивые всплывающие формы

Отправьте первое письмо

Настройте первую рассылку, реанимируйте неактивных пользователей, а после – удерживайте их имиджевыми письмами. Дизайн письма можно создать с нуля в вашем фирменном стиле или использовать один из 100 наших бесплатных шаблонов

Улучшайте результаты

Отправляйте персонализированные письма разным сегментам аудитории, выбирайте лучшие варианты с помощью А/Б-тестирования писем и оценивайте результаты отправки из подробных аналитических отчетов

Забудьте про скучную работу

Экономьте время, настраивая автоматическую отправку писем – приветственные цепочки после регистрации, напоминания о брошенных корзинах, специальные предложения в праздники или поздравления с днем рождения

Каждый клиент UniSender получает

Готовую стратегию
email-маркетинга
для вашего бизнеса

Круглосуточную
консультацию от
наших специалистов

Доступ ко всему
функционалу сервиса

700 000 компаний уже выбрали нас

Мы пользуемся сервисом более двух лет, он прекрасно себя зарекомендовал. Раньше мы запускали автоматические цепочки и делали рассылки вручную, сейчас внедрили маркетинговую систему управления каналами коммуникаций и интегрировались с сервисом по API. Интеграция оказалась быстрой, понятной и удобной во многом благодаря профессиональной команде техподдержки, готовой всегда прийти на помощь.

В процессе работы мы, конечно, сравнивали возможности Юнисендера с альтернативными сервисами рассылок, оказалось, что здесь и аналитика глубже, и интерфейс дружелюбнее, и «фишек» для интересных писем больше.

Мы активно используем сервис «Юнисендер» для проведения массовых рассылок писем с 2020 года. При работе с сервисом не возникало проблем: интерфейс удобный, понятный даже начинающему пользователю. Нам удалось автоматизировать ряд процессов и улучшить качество писем в части дизайна и статистических показателей (открываемость, прочтение). В сервисе доступная аналитика и гибкая система тарифов. Стоит отметить блог Юнисендера и службу поддержки клиентов. Я всегда оперативно находила ответы на любые вопросы с помощью данных ресурсов, а также узнала много полезной информации по трендам email-маркетинга.

Email маркетингом занимаюсь занимаюсь 7 лет и за это время был опыт работы в 5 сервисах рассылок. После положительного опыта работы с Unisender, внедрила этот сервис в 3 компаниях.

Основными причинами моего выбора в пользу Unisender было удобство сервиса, грамотный UX сайта и редактора писем, прозрачная статистика, связь с тех поддержкой 24/7.

В сервисе Unisender работаю с 2015 года и за это время произошло много внедрений — автоматизация рассылок, проще стало работать с шаблонами рассылок и анализировать запущенные рекламные кампании, что не может не радовать.

За год пользования сервисом мы успели хорошо разобраться в его технических возможностях и на сегодняшний день их более чем хватает. Но радует другое, Unisender не только внедряет разные улучшения, но и рассказывает своим клиентам как ими пользоваться, и даже предлагает протестировать бета-версии! Например, когда мы использовали «письма по событию», нам рассказали о более продвинутой «Автоматизации» и открыли доступ к бете. А совсем недавно появилась функция «отправка в лучшее время» и мы сразу узнали об этом из чата поддержки. Это очень современный подход, так держать!

Мы сотрудничаем с сервисом Unisender более трех лет. За это время мы неоднократно убедились в профессионализме команды, ответственном подходе к решению любых задач. Отдельно хотим отметить готовность идти навстречу! Нерешаемых вопросов просто нет. Всем желаем таких партнеров!

Для одного из клиентов нашего агентства мы заработали 15000$ за 1,5 месяца объединив социальные сети и email-рассылки. А по другому получили рекордный ROMI 9700% и сделали продажи на сумму 12000000 рублей. На уровне пользователя нравится простота в использовании и хорошая тех.поддержка. На уровне партнёра мы очень ценим дружеские взаимоотношения, открытость к новым идеям и возможность участия во всевозможных мероприятиях

Пользуемся UniSender 6 лет. На мой взгляд, по соотношению цена-возможности-качество, это лучший сервис для рассылок. Из преимуществ: развитой API, высокая скорость работы, надёжность и широкие возможности автоматизации.

Сначала мы просто рассылали массовые письма, но позже стали использовать автоматизацию для возврата клиентов. Когда и этого стало мало, мы связали нашу CRM с UniSender по API. Теперь почти вся сегментация проходит на нашей стороне, а шаблоны писем хранятся в UniSender. Так мы стали эффективно возвращать клиентов и оповещать подписчиков о новых акциях и предложениях.

третий пример — подкрепляем файлы и изображения — отправка почты на php

function show_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 = ‘
Имя отправителя:‘ . $_POST [ ‘name’ ]. ‘

Контактный телефон:‘ . $_POST [ ‘tel’ ]. ‘

Контактный email:‘ . $_POST [ ’email’ ]. ‘

// подключаем файл класса для отправки почты
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 .= ‘А вот и наша картинка:

я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) ‘ ;
>
>
$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 ‘

if (!empty( $_POST [ ‘submit’ ])) complete_mail ();
else show_form ();
?>

Ниже Вы можете пофлудить — можете спросить, обругать, похвалить и т.д.

Добавление комментариев отключено

Здравствуйте! Ребята, помогите пожалуйста с подключением: можно подробнее описать что и куда вставить, написать прописать и т п ? ато я смотрю в книгу. (((

А что нужно подключить?

что-то тут такая же фигня с кодировкой, как в предыдущих примерах.
до этого проблема решалась заменой функции отправки на mb_send_mail(. ), которая присылала то же самое, но в правильно кодировке.
а тут письмо отправляется через $mail->Send(), совершенно непонятно как тут исправлять кодировку.

А, понял, там
$mess .=
т.е. картинки прикрепляются. Спасибо)

не понял механизм прикрепления файлов к сообщению! как я понял сообщение комплектуется в переменной $mess, типа Имя отправителя: . и тд, но зачем присоединять её же саму еще раз?
.
‘.$_POST[‘mess’]; — вот эта строка
почему вы назвали две переменные одинаково?
и где там посмотреть указанный формат для загрузки картинок?

как сделать ограничение на размер файла в 20мб?

третий пример не работает, такое вылетает Mailer Error: Language string failed to load: instantiate
пожалйуста помогите

Спасибо организатору этого обсуждения ! Разобрался ! Почитал коменты и решил вопрос через AddBCC.

Мне было достаточно что бы отправить письмо благодарности с вложенным им же файлом отправителю. В благодарность отвечаю на нескольк раз повторявшийся здесь вопрос, но не никто на него не ответил.

Многие хостеры отрезают возможность отправлять письма с сервера. Для этого нужно обоснованно попросить хостера что бы включили такую возможность. Некоторые включают такую услугу за отдельную плату, а некоторые вообще не реагируют на такие письма. Завел бесплатный хостинг вот здесь 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 = ‘

Вас приветствует компания ООО «qq»

‘;
$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 — что необходимо делать

Либо class.phpmailer.php не залили, либо путь к нему неправильно указали

Мне не помогает $mail->CharSet = «UTF-8»;
на mail.ru тогда всё из формы крокозябрами приходит. Может ещё где-то нужно менять кодировку? А необходимо, чтоб файлы с русскими именами приходили, поскольку контингент женщины отправляют файлы в Ворде по русски.

Ваш скрипт, у меня, выдал ошибку \»

Parse error: syntax error, unexpected $end in /home/uganskbu/public_html/mailf/index.php on line 1\»

Приветствую коллеги, помогите решить проблему: Нужно чтобы можно было прикрепить не только один фаил, а много если указан а то прикрепляется только последний фаил. чтобы одним инпутом можно было отослать несколько фаилов если их суммарный вес не привышает 20 мб .

Можно как то пройтись циклом forich по массиву $_FILE[\’attachfile\’][] и прикрепить все фалы к письму, находящиеся в массиве \»attachfile\»

как на счет авторизации?

Здравствуйте!после отправления письма появляется:

Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\\home\\localhost\\www\\888\\class.phpmailer.php on line 1091

Warning: fread() [function.fread]: Length parameter must be greater than 0 in Z:\\home\\localhost\\www\\888\\class.phpmailer.php on line 1092

Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\\home\\localhost\\www\\888\\class.phpmailer.php on line 1095

Спасибо! Ваше письмо отправлено.


Если у кого то возникала такая ситуация помогите решить проблему.

Проблема в устаревшей функции 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). Это нужно для сайта объявлений. Я могу и заплатить, просто узнать сколько это будет стоить. Заранее спасибо!

Добрый день. Могу взяться за написание кода. Пишите на электронку pavelbog@mail.ru

а как и куда ставить адресс что бы файлы присылались на свой адресс

Здравствуйте!
Подскажите, пожалуйста, как сделать форму, чтобы можно было выбрать из нескольких выпадающих списков параметры (которые должны отправиться в письме), потом написать комментарий, а потом добавить файл. И если необходимо добавить несколько файлов, а потом всё это отправить. И на сколько реально, чтобы генерировался порядковый номер и отправителю с сайта приходило «ответное» письмо с заданным текстом и с порядковым номером (в письмо мне так же должен быть добавлен этот номер).
Спасибо!

Здравствуйте!
Форма работала долгое время на одном хостинге, после переноса письма приходят, но без прикреплённого файла, как можно проверить в чём ошибка?

Видимо у меня была старая версия скрипта, проверил приведёный выше код — файл прикрепляется. Будем искать проблему в коде

Опишу проблему точнее:
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]’);
— выдает ошибку.
Спасибо

// первый адрес
$mail->AddAddress(‘my@gmail.com’,’my@gmail.com’);

// второй если заполнено поле в форме
if(!empty($_POST[‘input_name’][3]))
$mail->AddAddress($_POST[‘input_name’][3], $_POST[‘input_name’][3]);

Спасибо огромное — работает прекрасно

спасибо, единственный рабочий пример у вас

Спасибо вам огромное за ооочень отличную и просто написанную статью.

Здоровья вам и успехов!

приветствую. у меня вопрос а как можно в таких скриптах сделать форму от кого ($mail->From = $mail->From = ‘test@test.ru’;) не одно а множество то есть чтоб письмо приходило не от одного почтового ящика а от множество почтовых ящиков кто знает как это можно сделать. и второй вопрос возможно ли сейчас отсылать на почту звуковые видео или флеш файлы но не в прикреплён нам виде. кто знает отпишитесь можно на маю почту ynii@list.ru

Во-первых, огромное спасибо автору за титаническую работу.
Во-вторых, у меня вопрос: Что можно сделать, чтобы после отправки формы, при обновлении страницы, письмо повторно НЕ отправлялась? При этом хотелось бы, чтобы сообщение о доставке письма также появлялось.
Спасибо.

Вот как выглядит, у меня на сайте, доработанный код автора:

Есть форма ввода данных с аттачем в ПХП-файле:
. .

и в этом же файле( вверху ) скрипт отправки письма:

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 «»;
>
if (!empty($_POST[‘submit’])) send_mail();
>>

Спасибо за формы. Подскажите, пожалуйста, как мне прописать кодировку $headers = «Content-type: text/plain; charset = utf-8»;
чтобы приходили письма по-русски, а не кубики

Используя класс >CharSet = «UTF-8»;

Для отправки письма, надо минимально заполнить поля Имя, маил, Тема. Только тогда письмо отправляется. Если заполнить меньше, и нажать \»Отправить\», то записи в форме стираются, а надо выводить ошибку.

Ошибку выводит только при неправильном вводе е-маила.

otli4ni kod ! molodec Alexandr

нахеа клысс для отправки имейла?? О_о
Делать нечего!?

А какие настройки должны быть на сервере? Почему два одинаковых сайта, расположенных на разнах хостах работают по разному, вернее на одном работает отправка, на втором пишет что ошибок нету, письмо успешно отправлено, но письмо на е-майл не приходит!

может в спам уходит?
я так тоже долго не понимал в чем дело, пока в спам не глянул и нашел 10 штук своих отправленных. почта на гмэйл была.

Возможно ли как-нибудь удалить строчку exit(); и при этом чтобы форма корректно работала?

Здравствуйте!
Помогите, плиз!
Суть в том что если не все обязательные поля заполнить, то скрипт как и положено выдает ошибку, НО при этом не отображается ничего что ниже скрипта и из-за этого весь сайт перекашивается.
Если вот в этой части удалить exit(); то при НЕ заполненных обязательных полях сайт не перекашивается, как и положено выдает ошибку, НО при этом ниже ошибки пишет что «ваше письмо отослано» и отсылает письмо (хотя по идее не должен) :

function output_err($num)
<
$err[0] = ‘ОШИБКА! Не введено имя.’;
$err[1] = ‘ОШИБКА! Неверно введен e-mail.’;
$err[2] = ‘ОШИБКА! Не введено сообщение.’;
echo ‘

if (!empty($_POST[‘submit’])) complete_mail();
else show_form();
?>

Анна, выход был найден следующим образом — помещать пхп код в самом низу страницы (вот прямо перед закрывающимся телом)

Кнопки пусть будут там где им положено быть, а обработать-то их можно и вконце страницы =)

класс
хороший класс :)
сенкс!
Работает на ура с первого раза) Довольно интересный у вас стиль кодинга))

Капча не выдает никакой код. Под формой выходит \»подформа\» (такое слово, только что в голову пришло!) в виде комментариев, которые вообще то видимо не должны показываться. В комментах нужно бы более подробно расписать, что как и куда. Для того, кто это не делал, это ж темный лес!

Подключила этот пример себе на страницу,вот что выскочило:
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
и оно очень длинное!Абракодабра.
На сайте не нашла ответ на данное сообщение,хотя оно уже повторялось.
Помогите,пожалуйста,кто знает,как исправить ошибку эту?
И еще вопрос-как убрать прикрепление картинки к письму?
Спасибе всем,кто ответит.

И почему я , смотря на это , чувствую себя бараном ? :(

Пытаюсь выучить этот язык , но ничего не выходит , сплошные огорчения .

Все потому что верно будет вот так
;-)

вроде все сделал правильно. но после нажатия на кнопку отправит выходит вот это на чистой странице. что я делаю не так
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 .= ‘А вот и наша картинка:

я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) ‘;
>
>
$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 ‘

if (!empty($_POST[‘submit’])) complete_mail();
else show_form();
?>

в коде короткий тег

Поэкспериментировал с кодировками. Нет такого результата. Дело не в кодировке. Вопрос тот же — Как из окна сообщения, которое имеет вид одной строки, изменить код что бы окно стало растягивающимся как на этом сайте?

про кодировки не Вам написано. Почитайте ответ под своим большим сообщением от 18.09.2011
www.php-mail.ru/?gst >

отправляю вложения — все отлично работает, но файлы с русскими наименованиями приходят с перекодированными названиями — внутренность вложений и тело самого письма нормальные.
Например, имя файла Анкета — Физкультурно-оздоровительный комплекс.xls перекодировало в тХГЙСКЭРСПМН-НГДНПНБХРЕКЭМШИ ЙНЛОКЕЙЯ ╚юРКЮМР╩ (2).xls

Подскажите, где и что надо подстроить?

Попробуйте с кодировками поиграться:
Используя класс >CharSet = «UTF-8»;

Доброго времени суток. Возникли такие проблемы:
1. Письмо приходит, но без прикрепленных файлов и изображений.
2. IP адрес не показывает. Пробовал все, что советовали в комментариях.

ЗЫ: скрипт на страницу подключаю через iframe, может-ли быть из-за этого ? ^_^

Как в место окна для ввода сообщения:
» style=»border: #4D9DC6 1px solid; background-color: #fff;»>
вставить такое:
или такое же (растягивающееся) как на этом сайте в которое вписывается сообщение?

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();
?>

Если это не шутка, замените

» style=»border: #4D9DC6 1px solid; background-color: #fff;»>

Почему-то вылетает ошибка «Mailer Error: Language string failed to load: instantiate»
В свяви с чем это может быть?

Похоже что это проблема на хостинге с 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 Мб скрипт возвращает пустую форму и ничего никуда не отправляет. Что делать?

Дмитрий, та-же проблема.
Пробовал разные ящики, даже те которые принимают гигантские файлы (сначала думал что проблема с почтовиком).

Такая проблема: письмо отправляется в utf-8, само письмо доходит нормально, а вот файлы с русс. именем приходят крокозябликами. Помогите кто чем. Заранее спасибо!

замени в файле class.phpmailer.php
var $CharSet = «windows-1251»;
на
var $CharSet = «utf8»;

А возможно в этой форме сделать много — с одинаковым именем attachimage — и прогнать в цикле — прикрепить каждый инпут?

с совсем-совсем одинаковым именем?

Такой вариант не прокатит?

спасибо, я так и сделал!

Подскажите!
Сделал инклюд формы в другой пхп документ.
Если все введено и письмо отправлено — ок, но если возникает ошибка, то хтмл страница обрезается после формы.
Проблема —

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 ‘

Как можно решить?

Вариантов миллион.
Сгенерите любую форму в генераторе, посмотрите, как это обходится там, и сделайте также.

Доброго время суток!
Подскажите люди добрые, как сделать так, что бы при отправке письма (после нажатия submit) на экране не происходило ничего?
Ну тоесть что бы письмо отправлялось, но не выводилось никаких сообщений, мол письмо успешно отправлено, что бы страница с формой отправки не обновлялась и т.д.

У меня проблема с кодировкой. Крокозяблы на кириллицу показывает. Никак не могу решить проблему. Пробовал уже и UTB-8 и Windows-1254. Через мета вписывал и через httaccess не получается никак решить проблему. Вставляю в вордпресс, если это важно.

Используя класс >CharSet = \»UTF-8\»;

Почему-то не срабатывает HTML в теле письма, а так же не прикрепляются файлики. В чём может быть дело?

Хочу получить результат, но не получается

Жду мамонта на Красной площади. Никак не встретимся.

Попробуйте делать это без презерватива.

Возможно ли в этом классе уведомление о прочтении письма?

отличный скрипт, спасибо большое ;)

Привет!
Классный код. А можно прикрутить 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.

Mailer Error: Language string failed to load: instantiate

а какую языковую строку он грузит и как избавиться от ошибки.

Mailer Error: Could not instantiate mail function.
не могу понять почему не работает почтовая функция.
Заранее спасибо кто подскажет.

Mailer Error: Language string failed to load: instantiate

я не могу разобратся с этой ошибкой!

после попытки отправить письмо с вложением появляется ошибка:Language string failed to load: provide_address

Насколько понял, это ошибка отсутствия адресата. хотя адрес для доставки добавляю. Подскажите, как бороться с этой ошибкой?

возможно ли такое? с mootools заливать файлы в папку,а phpmailer отправляет данные формы с этими файлами?как это осуществить?подскажите плз

скрипт работает и работает отлично! Но у каждого есть свои прихоти. Каким образом нужно дополнить скрипт, чтобы при ошибке оставались поля заполненными?
Не очень уж хочется переписывать такой скрипт, уж больно он нравится. Может можно попроще?
Спасибо.

Люди добрые помогите! есть у меня скрипт

как сделать чтобы почтовые адреса брались из текстового файла.
Помогите я ничё не понял.

У меня после отправки сообщение вылезла ошибка

Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\\home\\dazaev.ru\\www\\forms\\class.phpmailer.php on line 1091

Deprecated: Function set_magic_quotes_runtime() is deprecated in Z:\\home\\dazaev.ru\\www\\forms\\class.phpmailer.php on line 1095

Спасибо! Ваше письмо отправлено. С чем это связано?

Скажите пожалуйста как прикрепить html страницу с одной картинкой которая лежит на этом же хостинге? И чтоб картинка была в этой странице. Заранее большое спасибо!

Спасибо за скрипт. Есть вопрос. Необходимо отправлять несколько файлов, причем их количество за ранее не известно. Возможно ли сделать так, чтоб скрипт после выбора загружаемого файла открывал дополнительное окно для ввода еще одного файла? Я уже убился искать варианты. Есть конечно решение загрузки файлов на сервер через Ajax, а потом отсылки их и в связи с этим тогда еще вопрос- оеально ли сделать так, чтоб скрипт при формировании письма просто забирал все файлы из определенной директории? Т.е. присоединять не конкретно один файл , а все?

Один раз в обработчике. Только не забудьте для каждого файла имя свое задать, например attachfile1, attachfile2 и т.д.

я на секундочку извиняюсь, вопрос, конечно, глупый, а с какого места начинается вышеозначенный обработчик?

вставляйте там, где идет
if(isset($_FILES[‘attachfile’])) <

«для каждого файла имя свое задать, например attachfile1»

.
.
if(isset($_FILES[‘attachfile1’])) <
if($_FILES[‘attachfile1’][‘error’][0] == 0)<
$mail->AddAttachment($_FILES[‘attachfile1’][‘tmp_name’][0], $_FILES[‘attachfile1’][‘name’][0]); >
>
.
я правильно всё понял и сделал?

Либо
.
.
if(isset($_FILES[‘attachfile1’])) <
if($_FILES[‘attachfile1’][‘error’][0] == 0)<
$mail->AddAttachment($_FILES[‘attachfile1’][‘tmp_name’][0], $_FILES[‘attachfile1’][‘name’][0]); >
>
.

Либо
.
.
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 после отправки формы. Можете подсказать в чем может быть проблема?

Поняла. Прочла предыдущие ответы. та же незадача с Mailer Error: Could not instantiate mail function. Может, с Apache что-нибудь?

prinoshu izvineniya, na tyajelo razborchiviy text s nizu, u menya net russkoy klaviaturi.

mne nujna pomosh\’ s moim skriptom.

nachyalos\’ vse s imya otpravitelya, otpravlennie pis\’ma prihodili s imenem profider\’a.

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.

Mne obsalyutno nekkomu kompetentnomu obratit\’sya, mojet zdes\’ u kogo poyavyatsya idei?

Спасибо чувак, phpmailer это было последнее что решил испробовать иначе бы уже не знал что делать. у меня вложение отправлялось с моего сервака, а с другого не отправлялось( пипец промучался уже столько говнокода перепробовал))

когда все запоняеш и отпровляеш переходит на белый экран и письмо не приходит!
а когда не заполниш где * пишет как положено ошибка!

>
убрал
function: complete_mail
заменил на: send_mail,
и ура. Большое спасибо

Все очень хорошо работает с первого раза!

А если у кого-то не работает, тогда проблемы точно не с кодом ;)

Используйте filter_var с FILTER_VALIDATE_EMAIL

Побольше бы рабочих, хороших вариантов.

Спасибо друг, бум разбираться. :)


КРУТО. Так долго искал и наконец нашел и все клева работает. Спасибо, огромное.

кто может помощь советом с третьим примером.буду благодарен стукните в мою асю 448-155-189. очень нужна помощь.

Спасибо за форму все работает отлично, но есть пару вопросов:
Почему я не могу отослать файл, либо картинку более 3 мб? Приходит письмо без вложении, и как устранить эту проблему. Файлы 500 кб доходят без проблем.
Спасибо.

Сделал все как написано,но дело в том что письма которые я отправляю до меня не приходят. Может где то нужно прописать свои данные

Вы создали страницу с расширением .html , чтобы работал скрипт страница должна быть .php
+ пробуйте на бесплатном хостинге поддерживающим php

после добавления скрипта на страницу сайта ниже кнопки \»Отправить\» появляется вот это:

* Помечены поля, которые необходимо заполнить 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 .= \’А вот и наша картинка:

я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) \’; > > $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 \'

\’; show_form(); exit(); > if (!empty($_POST[\’submit\’])) complete_mail(); else show_form(); ?>

посмотреть в реале можно здесь: kinris.narod.ru/vopros.html#begin

Здравствуйте. Подскажите пожалуйста, как заставить эту форму работать? Я сгенерировал её, заполнил все нужные мне поля, выставил все условия и тд и тп., но я не знаю что мне теперь делать с этими тремя файлами ( mail.php + 2 файла class.phpmailer’a), закинул их на фтп сайта, но нигде не появилась данная форма :(.
Попробовал скопировать текст из mail.php и вставить в html код странички, появилась форма, но ниже появилась какая то писанина лишняя, и ни чего не работает.
Буду очень признателен если вы мне подскажете как интегрировать эту саму форму в сайт.

нельзя ли сделать чтобы после отправки данных формы сама форма не исчезала, меняясь на надпись «Спасибо! Ваше письмо отправлено» а всё осталось как было введено, без перехода на другие страницы.
замена строки
echo ‘Спасибо! Ваше письмо отправлено.’;
на
echo ‘Спасибо! Ваше письмо отправлено.’;
show_form();
не дает результата

if (!$mail->Send()) die (‘Mailer Error: ‘.$mail->ErrorInfo);
else <
echo ‘Спасибо! Ваше письмо отправлено.’;
show_form();
>

Просто ты забыл поставить скобки, поэтому у тебя на условии обрабатывался только вывод «echo»

Что делать если у одного провайдера работает а у другого нет?

Ух ты, работает с первого раза, класс, спасибо

Подскажите как отделить форму от php кода,
сайт на хостинге без php c формой, с неё данные отправляются на файл php находящийся на хостинге с php — это у меня реализовано , но понадобилась передача файлов

А зачем отделять?
Просто копируете форму в код вашей страницы, а потом вставляете весь код в скрипт:

* Помечены поля, которые необходимо заполнить
//И до сюда(ниже не трогать!)
21.02.2010 Алексей

Вместо стандартной формы

А как сделать рассылку? ну типа чтобы адреса. по которым будет отправляться письмо брались из. хотябы из текстового файла

В spamlist.txt каждый email с новой строки
// подключаем файл класса для отправки почты
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 = ‘Вас приветствует спам рассылка

// отправляем наше письмо
if (! $mail -> Send ()) die ( ‘Mailer Error: ‘ . $mail -> ErrorInfo );
echo ‘Письмо отправлено на ‘ . $value . ‘
‘ ;
>
?>

Изумительный код, спасибо! Но еще бы добавить четвертый пример — форма с отправкой приложенного файла и капчей.

блин .. у меня паника..
все пишут что можно отправить писмо с прикрепленым файлом. Вопрост.. как мне сделать все тоже что пишут но только с условием того что файл уже находится на сервере и мне при отправки писма нужно просто прикрипить то что находится на СЕРВЕРЕ. помогите плиз .. пытался просто указать полный путь к файлу но, не чего не приходит(. Текст есть а файла типа .doc нету(

Ну допустим, что у тебя в папке mail лежат два файла.
Один mail.php, в который подгружаешь класс PHPMailer, а другой файл — картинка img.jpg

img.jpg — это ссылка на файл.
kartinka.jpg — имя, которое будет отображаться в письме.

У меня делается рассылка нескольким адресатам.
Вот как я это делаю:
for($j=0;$j AddAddress($_POST[’em_adress’][$j], ‘Имя’);
>
Ноя мне надо сделать так, чтобы при получении письма, скрывались все остальные адресаты помимо данного. Как это сделать?
Я так понял как-то с помощью AddBCC, но ничего не выходит!
А еще у меня не распознаются html теги в сообщении, хотя $mail->IsHTML(true);
Т.е. письмо даже не в формате HTML приходит. Т.е. Текст не выделяется никак.
Как это решить?
Заранее спасибо!

Люди, помогите пожалуйста! Вопрос жизни сайта! Где надо ввести адрес майла на который будет отправляться сообщение?

Забавно..
Косяк был где-то сдесь. Этот оператор упорно проверял 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 ‘
Необходимо заполнить поле ‘.$empty_input[$i].’!‘;

Порадовал «Генератор форм обратной связи» +1 в карму

И еще возник вопрос. Автор прописал, как проверять правильность ввода имени, е-мейла и сообщения, а как на счет прикрепленного файла ни строчки. Мне надо обязательно проверять, прикрепил посетитель файл или нет, а то шлют чертеняки пустые письма. Хоть кто ни будь, помогите. Что в код дописать надо. Плиз, очень надо!

// если был файл, то прикрепляем его к письму
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 ] = ‘ОШИБКА! Прикрепите файл.’ ;

if(!empty($_FILES[‘attachfile’][‘tmp_name’])) <
if($_FILES[‘attachfile’][‘error’] == 0) <
$mail->AddAttachment($_FILES[‘attachfile’][‘tmp_name’], $_FILES[‘attachfile’][‘name’]);
>
> else
output_err(3);

Странно работает форма отправки сообщений с сайта. Проблема вот в чем. В форме указаны обязательные поля для заполнения, так вот, если какое льбо поле формы заполнить не верно или не заполнить совсем, то при нажатии на кнопку \\\\&quot;Отправить\\\\&quot; происходит нечто не понятное. Пропадает всё, что находится ниже формы, и текст и изображения, короче пол страницы пропадает и как я понимаю вместе с тегами отрезается, так как оставшаяся верхняя часть страницы разезжается на весь экран.

<br>Подскажите, как избавится от этой проблемы.

Ой, не то написала!
Вместо строки $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) включая картинку записывались в файл и этот файл отправлялся в письме(т.е чтобы было обычное письмо + во вложении файл в котором тоже самое что в пиьме). Возможно ли это сделать несоздавая файла на сервере?
Заранее спасибо!

Подскажите, пожалуйста,
а как сделать так, чтобы перед отправкой проверялось наличие вложенного файла и при отсутствии выдавалось сообщение?
какой будет код?

Подскажите пожалуйста, а как отправить файл не с локального диска пользователя, а с ссылки, т.е.

www.qwe.qwe/downloads/qwe.pdf — на пример.

Пробывал подставлять сылку в

Письмо приходит со статусом прикрепленного файла, а самого файла неть.

Благодарю за внимание ))

Та же проблема что и у Александра!

<br>в поле от почему-то устанавливается адрес постмастера. (у нас используется битрикс- может он как-то это делает. )

<br>Если например сделать что-то вроде

<br>то адрес прописывается, но в виде &lt;&lt;lalal@lala.com&gt;&gt;

<br>то получаем вышеописанную проблему- вместо адреса отправителя имеем в сформировавшемся письме адрес постмастера.

я решил эту проблему, в настройках хостинга нужно указать доверенные адреса, в данном случае, тот адрес, на который должно уходить сообщение

Добрый день! Все супер, все работает, но вот мне это не помогло, все равно в письме в поле от кого пишет майл хоста (postmaster@akva.nichost.ru), а не отправителя?

Файл сохранить в форме так просто не получится.
Забудьте об этом :)

Христос воскрес!
Подскажите, как сделать так, чтобы при ошибке сохранялось значение поля выбранного файла. Логически пробовал так:
>
но файл при ошибке в поле не сохраняется.
Помогите «чайнику» если можете.
Заранее спасибо!

Я почему задал этот вапрос)))

увидел сайт и форму, вот ссылка (прямая)

как видете, как-то же продукт работает)) .html разрешение является примером))

Практики маловато, работаю на ошюпь)

ПЛИЗ. Дайте комент по ссылке, это меня беспокоит))

Вижу коменты все помогают друг-другу! Вот мой вопрос, как разместить этот скрипт (форму обратной связи), на страницу сайта, написаного на аштимл, или этот продукт идёт только под ПИшПИ.

очень жду помоши, важно!

спасибо за форму! подскажите пожалуйста какой код надо добавить в форму что бы после ошибки юзера поля формы не очищалясь, забыл например имя набрать выскакивает сообщение и. надо всё заново набирать.

<br>спачибо ещё раз.

Я в шоке! Скрипт просто СУПЕР! Я 4 дня искал нормальный скрипт, а тут случайно подвернулся и БИНГО! Спасибо.

Спасибо за сайт. Впервые столкнулся с РНР и сразу все получилось. Скрипт роботает как золотые швейцарские часы: без сбоев, точно и с блеском. Но есть одна загвоздка. Когда пользователь не заполнил одно из обязательных полей и нажал кнопку ОТПРАВИТЬ, скрипт выдает надпись ОШИБКА, все происходит так как и должно быть. Проблема в следующем: форма относительно большая, содержит много полей.Когда пользователь доходит до кнопки ОТПРАВИТЬ, верхние поля формы и сообщение об ошибке находятся в не видимой зоне монитора. Не заметив сообщение об ошибке пользователь может уйти со страницы не отправив письмо. Как сделать так, что бы сообщение ОШИБКА появлялось где-нибудь возле кнопки ОТПРАВИТЬ. Помогите.

Используйте Javascript: onBlur() например для проверки формы по ходу ее заполнения.

Разобрался. В коде ошибка есть..
Вместо надо писать, то есть не имя файла, а имя аттача.

infolex красавчик, спасибо, а то я бился чтобы embedded image корректно отображался И в почтовом клиенте (thebat, outlook) И в браузере. Твой коммент помог.

infolex, респект!
. читать его пост всем .

И мне помогло. Спасибо.

В классе есть возможность вбивать сразу несколько СКРЫТЫХ получателей путем
$mail->AddBCC(мыло);
$mail->AddBCC(мыло);
$mail->AddBCC(мыло);
$mail->AddBCC(мыло);
$mail->AddBCC(мыло);
$mail->AddBCC(мыло);
.

Потом формирууется хеадер и письмо отправляется.
Вопрос. Этот список ограничен?? Можно например более 1000 вбить?

Скрипт заработал. А вот через smtp такое чувство не отправляет!, т.к. при любом пароле письма проходят. Письма опять не доходят до mail.ru, хотя он мне сказал , что вынес меня из черного списка.

Помогите. В чем дело? Что еще можно попробовать? Или хотя бы скеажите почему письмо не идет через смтп.

Спасибо ip заработало со строкой
IP адрес отправителя письма:’.getenv(«REMOTE_ADDR»).’

Извините еще вопрос, как сделать чтобы после отправки форму запускался какой либо файл в другом окне это надо для статистики гугла. Не могу сообразить как к
это прикрутить.
отправить письмо.

Спасибо но ip все равное показывает, а дату показывает .
у меня до этого работало через
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 ‘

if (!empty($_POST[‘submit’])) complete_mail();
else show_form();
?>

Не отправляются письма, если мэйл получателя вида info@domain-ab.ru и выдаёт ошибку е-мэйла на вполне нормальные обратные адреса типа alex.f@domain-123.ru

Что сказать, не смотря на пятницу, делаете всё Вы более,чем уверенно))) Всё работает! Осталось немного настроить, и в путь! Ещё раз, огромное спасибо!=)

Спасибо огромное за скрипт! Настроил в html под сайт, с оригинала формы генератора. Всё отлично работает. Единственное, что не получается, это, чтобы логи отправленных сообщений записывались в отдельный файл, например, mail.txt. Есть подозрения, что не все письма доходят. Сможете помочь с этим?

Спасибо авторам сайта огромное!

Подскажите пожалуйста, чтобы в это ($mail->From = ‘mail@mail.ru’; // от кого ) поле пользователь вписывал свой имеэйл, как это сделать? Это мне нужно для того чтобы на почте вкючить автоответчик и пользователю тогда сможет приходит ответ о благодарности!

Я не могу понять, где определен цвет ячейки для ввода имени и ящика (желтый, то бишь). Подскажите, пожалуйста, а то желтый меня не устраивает.

Этот адрес Вы дали мне?

Прошу о помощи!
Скрипт установил как положено. Хостинг от Jino.ru
Проблема: Письменное сообщение приходит исправно, а файлов и картинок нет. Пробывал с .htaccess и без, все равно не выходит. Пожалуйста, подскажите, на что следует обратить внимание!?
Кстати, очень благодарен Вам за эти скрипты, до-олго я их искал.

вот я поставил этот скрип но как мне сделать чтоб при нажатие кнопки отравить сообщение ухадила мне на почту.

Пока не разбиралась

Спасибо огромное.
Скрипт как раз тот, что нужен!

Спасибо. Скрипт то что нужно для дела )

Скрипт работает, но если после отправки обновить страницу ( с незаполненными полями) то сообщение отправится ещё раз и так до бесконечности

Все 3 скрипта написаны с кучей ошибок. Привожу далее сайт, где можно разобраться во всем по порядку: и с кодировкой, и с возможностью спама, взлома..

Еще раз повторюсь — привиденные скрипты не считаю пригодными для использования! Будьте аккуратнее!!

по указанному адресу ошибка 404

Хороший скрипт, написан со вкусом.
Вот только я не спец в ПХП и мне вобще как-то он непонятен :))

HELP PLZ. Разобрался со всем, но как реализовать выбор из списка, select например, у меня форма отдельным файлом, а сам php обработчик в другом. И что бы было все в файле php обработчика, а не формы, Заранее спасибо!

Павлу: нужно скрипт обработки формы, начиная с: вставлять в самый конец страницы, перед .

И ещё вопрос администратору сайта: не подскажите, где вы эту форму добавления комментариев приобрели?(в которой я сейчас пишу). Мне очень понравилась, я бы тоже приобрела себе такую!

Здравствуйте. Есть проблема. Значит при заполнении всех полей правильно, все прекрасно отправляется и письмо приходит. Всё отлично. И форма заказа выглядит как надо. А вот если не заполнить какое-либо поле со звездочкой, то появляется ошибка, например Ошибка! не заполнено имя. но при этом пропадает подвал на сайте. То есть остается левая колонка и форма отрпавки. А нижняя часть сайта отрезается до момента:

Помечены поля, которые необходимо заполнить

Такая ерунда на двух сайтах есть где я установил такую форму. ПОчему так?

Доброго времени суток! Все работает отлично, акромя одной детали:
Письмо приходит в кодировки 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 .= ‘А вот и наша картинка:
‘;
>
>
А мне нужно много. Не смейтесь над чайником, помогите! С меня поляна!

Народ, подскажите, как с помощью этого сделать рассылку сразу нескольким адресатом.

Автору — огромное спасибо, просто молодец, а то самому писать времени нет. Респект ;-) Легко настраивается, отлично работает — 5 баллов.

А как сделать чтоб строчка Спасибо! Ваше сообщение отправлено. была бы зеленого цвета?

сам с .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 ‘ ) 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 .= ‘
А вот и наша картинка:

я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) ‘;

заменил в тэге img путь к картинке src=»cid:my-attach» т.е. указатель на id картинки

Посыпаю голову пеплом!
В самом начале было указано — сделайте файл .htaccess определенного содержания. Неплохо бы было указать еще и зачем. :)
Оказывается, русский apache перекодирует некоторые символы, в частности символы с кодом 00 он переводит в символ с кодом 20 (пробел), и что бы этого не было и нужен вышеописанный файлик.

Так, почитав комменты, понял, что по первой части вопроса нужно пользовать конструкцию «$_FILES[‘attachfile’][‘name’]», но вторая часть (про присоединенный word-овский файл, требует ответа.


Судя по комментам, автор тут явно появляется. Поэтому надеюсь таки не ответ! Проблема вот в чем. Сделал форму: имя телефон, e-mail, присоединенный файл. Первое — как проверить — действительно ли файл присоединен? Конструкция с полями типа input не прокатиывает. :( Второе и самое главное — присоединенный word-овский файл при скачивании не открывается, хотя размер совпадает байт в байт. При детальном рассмотрении выяснилось, что все байты с кодом ’00’ стали байтами с кодом ’20’! Это можно как-то поправить?

Mailer Error: Could not instantiate mail function. Что с этим теперь делать! Пытаюсь организовать рассылку, но вот после того как добавил папку 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! Надо учить матчасть судя по всему :)

Очень прошу помочь.
С наступающим новым годом !
Всем успеха и здоровья !

Замечательный скрипт, спасибо большое :)
У меня только одна проблема, не отправляются файлы большого размера. проблему искать на хостинге или есть какие-то ограничения на размер отправляемого письма?

Автору огромное спасибо, без этого скрипта не знал бы куда деваться.

Одна проблема осталась:
на сервере upload_max_filesize: и локал и мастер по 30M, а отправляются файлы только до 7 мб почему-то.
Пробовал и на gmail, и на yandex-почту — письма-то с большими вложениями они принимают, а с сайта больших файлов не отправить :(

Автору респект, уважуха и +100 к карме! ;)

Есть тут кто или это сайт уже тока сам посебе существует?

ответьте пожалуста на моё мыло 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 чтобы работало на хостинге?

Я меня на кодировку 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,что делать? (:

Спасибо за скрипт,на фоне других — этот супер!
Для работы брал третий вариант,но вот вопрос,если в первом и втором варианте мне понятно,что и где заменить для избежания антифлуда,то к сожалению (в виду не знания пока хорошо пшп) в третьем варианте я не знаю,что и где заменить. Плиз дайте внятный хелп.
Заранее благодарен.

Ув. Добрый день.
попробовал разные варианты, никак не выходит.
После отправления письма, нашел как возвращать форму, а как убрать эхо и самое главное (при обновлении страницы), высылается очередное письмо. т.е отправив первое, можно кликать Ф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

Как запросить подтверждение о доставке письма?

Вот в отправке письма ничего сложного, если аттач есть — тоже не проблема. а как сделать, чтобы когда человек получал от меня письмо, то от него бы приходило подтверждение о доставке письма.

А кто знает как сделать так, чтобы после вывода «ОШИБКА! . » уже введенные в поля данне там же и остались?

Здравствуйте.
как можно сделать $_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 с новым получателем, а что-то типа рассылки.

Варинатов полно, можно попробовать так:
// подключаем файл класса для отправки почты
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 = ‘Вас приветствует спам рассылка

// отправляем наше письмо
if (! $mail -> Send ()) die ( ‘Mailer Error: ‘ . $mail -> ErrorInfo );
echo ‘Письмо отправлено на ‘ . $email [ $i ]. ‘
‘ ;
>
?>

у меня через http://. >в action соответственно=»? >а там:
if(isset($_GET[» >$ ];
if($ ) <
include «sp.php»;
> >else <
include «content.php»;
>
?>

После отправки* не показывает ничего.
в html, судя по всему, сразу как начинается php — пусто.
нет сообщения, только top.php и обрыв.

izvine, ne sovsem ponyam, kak budet viglyadet’ kod?

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 ‘

13.08.2011, 23:15 #1
Thank you for your interest, we look forward to meeting you.

‘;
show_form();

И еще данный пример предпологает только окна где написано «Обзор», а прикрепился сам файл или нет такого нет?

Он уже сохранен

У меня это вылезло на сайте, после того как я загрузила третий пример. Почему у меня после всех окон

вылезает эти карабяки?

* Помечены поля, которые необходимо заполнить Контактный телефон:\’.$_POST[\’tel\’].\’

\’.$_POST[\’mess\’]; // подключаем файл класса для отправки почты require \’ >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 .= \’А вот и наша картинка:

я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) \’; > > $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 \'

\’; show_form(); exit(); > if (!empty($_POST[\’submit\’])) complete_mail(); else show_form(); ?>

Спасибо! Очень хорошая статья.

Может, я не первый, но попрошу:

выложи плиз добавочку к чкрипту для кода поддтверждения, как вот этот скрипт отправки, которым доставлена эта мессага.

а то понимаешь три варианта, но ни в одном нет того, что у тебя у самого действует на сайте.

А можно целую систему по отправке е-майла сделать

Большое спасибо за такое подробное объяснение. У меня такая проблема: если я отправляю с прикрепленными файлами формата txt, то и приходит в формате txt. Но попробовал присоединить в формате doc, а пришло в формате doc.safe (как будто от чего то обезопасили). Изза чего может такое происходить?

Заранее благодарю за помощь!

Хочу выразить огромную благодарность администратору этого сайта. Побольше бы таких людей.

Language string failed to load — это что за штука?

Ну ты, Серёга 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’ом напишите пожалуйста сюда… как это сделать…

Используя класс >CharSet = «UTF-8»;

А если есть необходимость _отложенной_ отправки письма, то есть, не заставлять пользователя пялиться на экран, пока уходит письмо (или письма) — например, когда со страницы форума в фоновом режиме уходят оповещения о новых сообщениях, — есть ли какое-нибудь изящное решение?

Со второй и всеми последующими картинками разобрался, спасибо! А как поменять конструкцию AddAttachment и AddEmbeddedImage для того, что б файл(-ы) и картинку(-ки) брать не с локального компа, каждый раз закачивая их, а положить их рядышком на сайт и брать по мере необходимости, заранее прописав их имена и пути в скрипте? Заранее спасибо!

У меня все работает но вот нельзя ли сделать чтобы после отправки данных формы сама форма не исчезала, меняясь на надпись «Спасибо! Ваше письмо отправлено». Хорошо бы чтобы эта надпись появлялась внизу или вверху формы.
С уважением, Денис.

Скачал-установил-заработало: Ура! Спасибо большое!
Но сразу захотелось прикреплять картинок более одной. :)
Не подскажете, как ввести изменения, что б прикреплять можно было и одно, и два, и более изображений?

Добавляйте формы для изображений:

Изображение 2

И обработку:
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 .= ‘А вот и наша вторая картинка:
‘ ;
>
>

Огромное спасибо. Скинул на хостинг, поменял настройки в ‘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 ‘ ) in /home/webdd/domains/web-dd.com/public_html/1/index.php on line 61

Что-то не работает эта отправка. Я копировал этот текст, отредактировал очень внимательно, вставил свой е-mail, а при запуске пишет ошибку в сто-какой-то строке. Что это? По-моему с if где-то ошибка.

Вставить изображение в тело письма

Как вставить изображение в тело письма, когда пользователь нажимает кнопку «Отправить». Я использую php почту

4 ответа

Для создания электронного письма в формате HTML вы можете сделать что-то вроде этого:

Это должно создать HTML-письмо для вас, и вы сможете вставить обычный HTML.

Редактировать Вы можете узнать больше о том, как создавать электронные письма в формате HTML с помощью PHP, здесь: http://css-tricks.com/sending-nice-html-email-with-php/

Если вы на самом деле спрашиваете: Как прикрепить и вставить встроенные изображения в HTML-письмо? Вы можете использовать это для руководства:) https://www.quora.com/What-is-meant-by-inline-images-in-HTML

В этом примере обратите особое внимание на то, как заполнен атрибут src тега img (на самом деле «cid» — это идентификатор, заданный как «Content-ID:» для заголовка вложения изображения).

Надеюсь, это поможет, всего наилучшего.

Чтобы вставить изображение в тело письма, вы можете использовать phpmailerclass, ссылки на который

Правильный почти как отмеченный выше ответ. Одна самая важная часть, которая пропущена, это абсолютная часть изображения, как указано ниже:

$ message. = «http://example.com/images/link-image.jpg ‘alt =’ ‘/>«;

$ headers = «From: $ from_email»; $ headers. = «Content-type: text / html»;

mail ($ to, $ subject, $ message, $ headers);

ВЕРСТКА HTML ПИСЬМА! Вставка картинок

Данный пост содержит информацию, которая не тестировалась при массовой рассылке, но имеет весомое значение для неё.

Основные вопросы данного поста:
1. Как грамотно, без нагрузки для Вашего SMTP сервера, вставить картинку в email письмо;
2. Как рандомить картинку.

1. Вставка картинки не такой уж и сложный процесс, чего там, просто нашел картинку на компе и запилил ее в шаблон email письма. Но проблема заключается в другом, при рассылке такого письма, его размер существенно увеличивается, соответственно увеличивается нагрузка на Ваш СМТП, далее падает скорость рассылки, письма вовсе уходят в очередь exim или того хуже сразу в папку СПАМ.

Но эта задача, решается очень просто! Размещаем наши картинки на хостинге и затем вставляем в письмо url ссылку, далее настраиваем размер картинки. Но перед нами стоит очень не маловажная проблема как избежать бана домена на котором расположена картинка? Брать трастовый домен или размещать картинки на ШЕЛЛах, и затем рандомить их? Осталось выкроить время для теста, и можно рассылать.

2. Как рандомить картинку?
Есть два варианта:
А. Мы рандомим размеры картинки в письме, оставляя url картинки тем же, изменяя только тело письма. Эффект не известен!
( В AMS рандом происходит вставкой макроса с размерами в HTML код письма, либо вставкой в HTML код модуля такого вида <240|241|242|243|244>).
B. Мы рандомим картинки как по размеру, так и по названию, закидываем их на большое количество ШЕЛЛов, хостингов, затем вставляем url в шаблон письма.

PS. Для создания хорошего письма используйте лучше HTML редакторы и хранилища для картинок от сервиса рассылок mailchimp или smart responder. Там и домен будет трастовый и качество отображения письма лучше!

И запомни существуют почтовые клиенты, которые по умолчанию не показывают картинки и только после клика на определенную кнопку картинки начинают отображаться. Это вызывает некие проблемы в верстке писем. Если картинки не показываются и не задана ее ширина и высота вместе, то почтовый клиент не знает, какого размера эта картинка и как рендерить свободное место. Таким образом, картинка занимает все свободное пространство. Выглядит это ужасно. Всегда пишите ширину и высоту картинки, чтобы избавится от таких проблем. Если нет такой возможности, указывайте ширину картинки и тогда письмо не будет рваться в стороны.

Изображение в теле писем

Как прикрепленные к письмам в рассылках изображения помещать в теле письма?
Обычно, прикрепляя письмо методами php я давал ему имя аттача и использовал это имя в

Я догадываюсь что битрикс генерирует это attach_name как-то автоматически, а как мне его узнать на момент формирования пиьсма чтобы вставить в src?

Формат рассылки html, проверил.

Поставил этот параметр, прикрепил картинку.

В списке аттачей написано:

Список вложений:
Файл Размер,байт
header-dlv-wo.jpg 40104

В результате картинка прикрепляется аттачем и приходит,
но в том месте где тег img не показывается.

Цитата
shuster.alexey пишет:
В результате картинка прикрепляется аттачем и приходит,
но в том месте где тег img не показывается.

Ну а имя в присланном письме у аттача какое? Если меняется на случайный набор символов, то в настройках главного модуля поставьте галочку «сохранять имена загружаемых файлов».

Ситуация такая: рассылка генерируется на основе инфоблока новостей. Выставила параметр «отправлять файлы как вложение в письмо», но приаттаченных файлов не приходит в письме. Разве эти изображения (анонса или детального просмотра) нужно отдельно где-то прикреплять? если нет, то в чем может быть проблема?

Цитата
shuster.alexey пишет:
Как прикрепленные к письмам в рассылках изображения помещать в теле письма?
Обычно, прикрепляя письмо методами php я давал ему имя аттача и использовал это имя в

Я догадываюсь что битрикс генерирует это attach_name как-то автоматически, а как мне его узнать на момент формирования пиьсма чтобы вставить в src?

Работать не будет пока в файле /bitrix/modules/subscribe/classes/general/posting.php в этой строке:

$sBody .=
$eol.»—«.$sBoundary.$eol.
«Content-Type: «.$arFile[«CONTENT_TYPE»].»; name=\»».$file_name.»\»».$eol.
«Content-Transfer-Encoding: base64».$eol.
«Content-Disposition: attachment; filename=\»».CMailTools::EncodeHeaderFrom($file_name, $post_arr[«CHARSET»]).»\»».$eol.$eol;

не появиться Content-ID, например так:

$sBody .=
$eol.»—«.$sBoundary.$eol.
«Content-Type: «.$arFile[«CONTENT_TYPE»].»; name=\»».$file_name.»\»».$eol.
«Content-Transfer-Encoding: base64».$eol.
«Content-Disposition: attachment; filename=\»».CMailTools::EncodeHeaderFrom($file_name, $post_arr[«CHARSET»]).»\»».$eol.
«Content-ID: «.$eol.$eol;

но это не выход, для тех кто регулярно обновляется.

Илон Маск рекомендует:  Классификация алгоритмов шифрования
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL