Birthday Reminders for August

Отправка писем на php. Сборник рецептов

Отправка писем в html формате почти ничем не отличается от отправки писем в текстовом формате. В заголовке вы указываете формат письма text/html а в самом письме вместо обычного текста помещаете html-код.


Если вы это читаете значит все ок

Почтовый робот "; // текст сообщения, здесь вы можете вставлять таблицы, рисунки, заголовки, оформление цветом и т.п. $mailheaders = "Content-type:text/html;charset=windows-1251rn"; // формат письма html $mailheaders .= "From: SiteRobot rn"; $mailheaders .= "Reply-To: noreply@siterobot.rurn"; // емайл отправителя и емайл для ответа mail($to, $subject, $message, $mailheaders); // отправляем письмо ?>

Отправка письма с вложением

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

rn"; $mailheaders .= "Reply-To: noreply@siterobot.rurn"; $multipart = "--$boundaryn"; $multipart .= "Content-Type: text/plain; charset=windows-1251nn"; $multipart .= "$messagenn"; // первая часть само сообщение $fp = fopen($filepath,"r"); if (!$fp) < print "Файл не может быть прочитан"; exit(); >$file = fread($fp, filesize($filepath)); fclose($fp); // чтение файла $message_part = "--$boundaryn"; $message_part .= "Content-Type: application/octet-stream; name = "".$filename.""n"; $message_part .= "Content-Transfer-Encoding: base64n"; $message_part .= "Content-Disposition: attachment; filename = "".$filename.""nn"; $message_part .= chunk_split(base64_encode($file))."n"; // второй частью прикрепляем файл, можно прикрепить два и более файла $multipart .= $message_part; mail($to,$subject,$multipart,$mailheaders); // отправляем письмо ?>

Отправка писем сразу нескольким адресатам

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

rn"; $mailheaders .= "Reply-To: noreply@siterobot.rurn"; // почтовые заголовки $mailheaders .= "Bcc: email1@mail.rurn"; $mailheaders .= "Bcc: email2@mail.rurn"; $mailheaders .= "Bcc: email3@mail.rurn"; // заголовков Bcc может быть неограниченное количество mail($to, $subject, $message, $mailheaders); // отправляем письмо ?>

Подборка курсов по PHP

4.4 GeekBrains еще 1 курс

4.4 Skillbox еще 3 курса

4.2 Оtus

4.4 HTML Academy

4.5 Hexlet

4.4 Нетология

Комментарии

Всем привет. Помогите разобраться. Я новичок в HTML — сильно не пинайте. Скачал LadingPage шаблон на html и переделал под себя, а вот проблема в том что не отправляются письма как положено через формы. На сайте есть несколько форма. 1) Заказать звонок и 2) Заказать воду. Во 2 форме есть подпункты город,время и т.д. Но при оправке на почту приходить только текст «Заказ на доставку воды», а нужно что бы и телефон и все остальное приходило. Создал файл mail.php и прописал вот такой код
$to = ‘МОЯ ПОЧТА’;
$from = ’email@yandex.ru’;
$subject = ‘Заказ воды на сайте Water24Hours’;
$subject = ‘=?utf-8?b?’. base64_encode($subject ) .’?=’;
$headers = ‘Content-type: text/plain; charset=»utf-8″‘;
$headers .= «From: «. $from .» rn»;
$message = ‘Заказ на доставку воды’;
$headers .= «Date: «. date(‘D, d M Y h:i:s O’) .»rn»;
mail($to, $subject, $message, $headers, ‘-f’. $from );
?>
И в файле script.js вот такой код
$(function() $(‘#square’).keyup(function() var square = $(this).val();
$(‘#price’).val(square*1100)
>);
$(‘#price’).keyup(function() var price = $(this).val();
$(‘#square’).val((price/1100).toFixed(2))
>);

Читайте также:  Тег топ в html

$(‘.ask-blocks .item h4’).click(function() var thisH4 = $(this),
thisSpan = $(‘div’, $(this).parent()),
outherH4 = $(‘.ask-blocks .item h4’).not(thisH4),
outherSpan = $(‘.ask-blocks .item div’).not(thisSpan);
outherH4.removeClass(‘active’);
outherSpan.hide().removeClass(‘active’);
thisH4.toggleClass(‘active’);
thisSpan.fadeToggle().toggleClass(‘active’);
>);
ymaps.ready(init);
var myMap,
myPlacemark;

function init() if( ($(window).width() <= 767) ) myMap = new ymaps.Map("map", center: [55.75399400, 37.62209300],
zoom: 8
>);
> else myMap = new ymaps.Map(«map», center: [55.75399400, 37.62209300],
zoom: 8
>);
>

myPlacemark = new ymaps.Placemark([55.75399400, 37.62209300], hintContent: ‘Алматы’,
balloonContent: ‘г. Алматы, пр. Достык, д. 291/3’
>);
myMap.geoObjects.add(myPlacemark);
>
$(‘.up’).click(function(e) e.preventDefault();
$(‘html,body’).animate( scrollTop: 0
>, 1000);
>);
$(«input.tel»).click(function() $(this).val(‘+7’);
>);
$(window).scroll(function() var pos = 86;
if( ($(window).width() = 768) ) pos = 150;
>
if( ($(window).width() = 576) ) pos = 150;
>
if($(window).width() <= 575) pos = 290;
>

if($(this).scrollTop() >= pos) $(‘nav’).addClass(‘stickytop’);
>
else $(‘nav’).removeClass(‘stickytop’);
>
>);
$(‘.smoothScroll’).click(function(event) event.preventDefault();
var href=$(this).attr(‘href’);
var target=$(href);
var top=target.offset().top;
$(‘html,body’).animate( scrollTop: top
>, 1000);
>);

$(‘.modal’).on(‘hidden.bs.modal’, function (e) $(‘input:not(.type)’, $(this)).val(»);
>);
$(‘form’).submit(function(e) e.preventDefault();
var form_data = ‘name’:$(«.name», $(this)).val(),
‘tel’:$(«.tel», $(this)).val(),
‘price’:$(«#price», $(this)).val(),
‘square’:$(«#square», $(this)).val(),
‘type’:$(«.type», $(this)).val()
>;
$.ajax( type: «POST»,
url: «mail.php»,
data: form_data,
success: function() $(‘.modal’).modal(‘hide’);
setTimeout(function() $(‘.success’).fadeToggle();
>, 1000);
setTimeout(function() $(‘.success’).fadeToggle();
>, 2500);
>,
error: function() alert(«Произошла какая то ошибка!»);
>
>);
>);
new WOW().init();
>);
Подскажите что сделал не правильно. Всем спасибо!

Источник

mail

Каждая строка должна быть отделена символом CRLF (\r\n). Строки не должны быть длиннее 70 символов.

(Только для Windows) Если PHP передаёт данные напрямую SMTP-серверу и в начале строки стоит точка, то она будет удалена. Чтобы избежать этого замените все такие точки на две.

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

Обычно используется для добавления дополнительных заголовков (From, Cc, and Bcc). Несколько дополнительных заголовков должны быть разделены CRLF (\r\n). Если для составления этого заголовка используются внешние данные, то они должны быть проверены для избежания инъекций нежелательных заголовков.

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

Замечание:

До PHP 5.4.42 и 5.5.27, параметр additional_headers не имел защиты от инъекции. Так что пользователи должны удостовериться, что передаваемые заголовки безопасны и содержат только заголовки. т.е. не содержат несколько переводов строк подряд, что стартует тело сообщения.

Замечание:

При отправке письмо должно содержать заголовок From . Он может быть установлен с помощью параметра additional_headers , или значение по умолчанию может быть установлено в php.ini .

Если заголовок отсутствует, будет сгенерировано сообщение об ошибке вида Warning: mail(): «sendmail_from» not set in php.ini or custom «From:» header missing . Заголовок From также определяет заголовок Return-Path при отправке напрямую через SMTP (только Windows).

Замечание:

Если сообщения не отправляются, попробуйте использовать только LF (\n). Некоторые агенты пересылки сообщений Unix (особенно » qmail) автоматически заменяют LF на CRLF (что приводит к двойному CR, если использовалось CRLF). Используйте эту меру в крайнем случае, так как это нарушает » RFC 2822.

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

Читайте также:  Javascript document write asp

Параметр автоматически экранируется функцией escapeshellcmd() , чтобы не допустить выполнение команд. Но escapeshellcmd() позволяет добавлять дополнительные параметры. В целях безопасности рекомендуется проверять и очищать этот параметр.

Так как escapeshellcmd() применяется автоматически, то нельзя использовать некоторые символы, допустимые к использованию в email-адресах некоторыми RFC. mail() не допускает такие символы, поэтому в программах, в которых они требуются, рекомендуется использовать альтернативы для их отправки (например фреймворки или библиотеки).

Пользователь, под которым работает веб-сервер должен быть добавлен в список доверенных в конфигурации sendmail для того чтобы избежать добавления заголовка ‘X-Warning’ при указании отправителя с помощью опции (-f). Для пользователей sendmail — это файл /etc/mail/trusted-users .

Возвращаемые значения

Возвращает true , если письмо было принято для передачи, иначе false .

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

Список изменений

Версия Описание
7.2.0 Параметр additional_headers может принимать значения типа массив.

Примеры

Пример #1 Отправка письма.

Использование функции mail() для отправки простого письма:

// Сообщение
$message = «Line 1\r\nLine 2\r\nLine 3» ;

// На случай если какая-то строка письма длиннее 70 символов мы используем wordwrap()
$message = wordwrap ( $message , 70 , «\r\n» );

// Отправляем
mail ( ‘caffeinated@example.com’ , ‘My Subject’ , $message );
?>

Пример #2 Отправка письма с дополнительными заголовками.

Добавление простых заголовков, сообщающих почтовому агенту адреса From и Reply-To:

$to = ‘nobody@example.com’ ;
$subject = ‘the subject’ ;
$message = ‘hello’ ;
$headers = ‘From: webmaster@example.com’ . «\r\n» .
‘Reply-To: webmaster@example.com’ . «\r\n» .
‘X-Mailer: PHP/’ . phpversion ();

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

Пример #3 Отправка письма с дополнительными заголовками, переданными массивом

В этом примере посылается то же письмо, что и в примере выше, но дополнительные заголовки задаются массивом (доступно с PHP 7.2.0).

Читайте также:  Selenium отправить enter python

$to = ‘nobody@example.com’ ;
$subject = ‘the subject’ ;
$message = ‘hello’ ;
$headers = array(
‘From’ => ‘webmaster@example.com’ ,
‘Reply-To’ => ‘webmaster@example.com’ ,
‘X-Mailer’ => ‘PHP/’ . phpversion ()
);

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

Пример #4 Отправка письма с дополнительными аргументами командной строки.

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

Пример #5 Отправка HTML-сообщения

С помощью функции mail() также можно отправить и HTML-письмо.

// несколько получателей
$to = ‘johny@example.com, sally@example.com’ ; // обратите внимание на запятую

// тема письма
$subject = ‘Birthday Reminders for August’ ;

// текст письма
$message = ‘


Here are the birthdays upcoming in August!

Person Day Month Year
Johny 10th August 1970
Sally 17th August 1973



‘ ;

// Для отправки HTML-письма должен быть установлен заголовок Content-type
$headers = ‘MIME-Version: 1.0’ . «\r\n» ;
$headers .= ‘Content-type: text/html; charset=iso-8859-1’ . «\r\n» ;

// Дополнительные заголовки
$headers [] = ‘To: Mary , Kelly ‘ ;
$headers [] = ‘From: Birthday Reminder ‘ ;
$headers [] = ‘Cc: birthdayarchive@example.com’ ;
$headers [] = ‘Bcc: birthdaycheck@example.com’ ;

// Отправляем
mail ( $to , $subject , $message , implode ( «\r\n» , $headers ));
?>

Замечание:

Для отправки HTML или других комплексных сообщений рекомендуется использовать PEAR-пакет » PEAR::Mail_Mime.

Примечания

Замечание:

Реализация SMTP (только Windows) функции mail() в Windows во многом отличается от реализации в sendmail. Во-первых, она не использует локальную программу для составления писем, а работает непосредственно с сокетами, что означает что необходим почтовый агент ( MTA ), ожидающий соединений на сокете (может быть как на локальном так и на удалённом сервере).

Во-вторых, дополнительные заголовки вроде: From: , Cc: , Bcc: и Date: интерпретируются в первую очередь не, MTA , а PHP.

Поэтому параметр to не должен быть адресом вида «Something «. Команда mail может неправильно интерпретировать этот адрес во время передачи данных MTA.

Замечание:

Не следует использовать функцию mail() для отправки большого количества писем в цикле. Функция открывает и закрывает соединение с SMTP-сервером для каждого письма, что не очень эффективно.

Для отправки большого количества сообщений обратите внимание на пакеты » PEAR::Mail и » PEAR::Mail_Queue.

Смотрите также

Источник

Оцените статью