PHP — отправка электронной почты через PHP

PHP — отправка электронной почты через PHP

От автора: отправка почты через PHP настраивается с помощью файла php.ini. Откройте файл php.ini, который находится в каталоге / etc/, и найдите раздел с заголовком [mail function].

Пользователям Windows нужно предоставить в этом разделе две директивы. Первая называется SMTP, она задает адрес SMTP-сервера. Вторая называется sendmail_from, она определяет ваш адрес электронной почты. Настройки для Windows должны выглядеть примерно так:

[mail function]
; For Win32 only.
SMTP = smtp.secureserver.net
 
; For win32 only
sendmail_from = webmaster@tutorialspoint.com

Пользователи Linux должны указать PHP местоположение своего приложения sendmail. Путь и любые требуемые ключи должны указываться в директиве sendmail_path. Настройки для Linux должны выглядеть примерно так:

[mail function]
; For Win32 only.
SMTP = 
 
; For win32 only
sendmail_from = 
 
; For Unix only
sendmail_path = /usr/sbin/sendmail -t -i

Теперь все готово.

Отправка обычного текстового сообщения

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

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
mail( to, subject, message, headers, parameters );

Ниже приводится описание каждого аргумента.

PHP — отправка электронной почты через PHP

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

Отправка HTML-письма

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

Пример

В следующем примере мы отправляем HTML-письмо на ящик электронной почты xyz@somedomain.com, а копию письма отправляем на ящик afgh@somedomain.com. Вы можете составить данную программу таким образом, чтобы она получала содержимое от пользователя, и отправляла его по электронной почте.

<html>
 
  <head>
 <title>Sending HTML email using PHP</title>
  </head>
 
  <body>
 
 <?php
 $to = "xyz@somedomain.com";
 $subject = "This is subject";
 
 $message = "<b>This is HTML message.</b>";
 $message .= "<h1>This is headline.</h1>";
 
 $header = "From:abc@somedomain.com \r\n";
 $header .= "Cc:afgh@somedomain.com \r\n";
 $header .= "MIME-Version: 1.0\r\n";
 $header .= "Content-type: text/html\r\n";
 
 $retval = mail ($to,$subject,$message,$header);
 
 if( $retval == true ) {
 echo "Message sent successfully...";
 }else {
 echo "Message could not be sent...";
 }
 ?>
 
  </body>
</html>

Отправка вложений по электронной почте

Чтобы отправить электронное письмо со смешанным контентом, необходимо установить для заголовка Content-type — multipart/mixed. Затем разделы текста и вложения могут быть указаны в пределах ограничителей.

Начальный ограничитель указывается двумя дефисами, за которыми следует уникальный номер, он не будет отображаться в электронном письме. Для создания уникального номера используется функция PHP md5(), которая генерирует 32-значное шестнадцатеричное число. Конечный ограничитель задает конец раздела электронного письма, он также указывается двумя дефисами.

<?php
  // обязательные переменные // важно
  $from = $_REQUEST["from"];
  $emaila = $_REQUEST["emaila"];
  $filea = $_REQUEST["filea"];
 
  if ($filea) {
 function mail_attachment ($from , $to, $subject, $message, $attachment){
 $fileatt = $attachment; // путь к файлу
 $fileatt_type = "application/octet-stream"; // тип файла 
 
 $start = strrpos($attachment, '/') == -1 ? 
 strrpos($attachment, '//') : strrpos($attachment, '/')+1;
 
 $fileatt_name = substr($attachment, $start, 
 strlen($attachment)); // имя файла который используется для файла вложения 
 
 $email_from = $from; // отправитель электронного письма
 $subject = "New Attachment Message";
 
 $email_subject =  $subject; // тема электронного письма 
 $email_txt = $message; // содержимое электронного письма 
 $email_to = $to; // получатель электронного письма
 
 $headers = "From: ".$email_from;
 $file = fopen($fileatt,'rb'); 
 $data = fread($file,filesize($fileatt)); 
 fclose($file); 
 
 $msg_txt="\n\n You have recieved a new attachment message from $from";
 $semi_rand = md5(time()); 
 $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
 $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . "
 boundary=\"{$mime_boundary}\"";
 
 $email_txt .= $msg_txt;
 
 $email_message .= "This is a multi-part message in MIME format.\n\n" . 
 "--{$mime_boundary}\n" . "Content-Type:text/html; 
 charset = \"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . 
 $email_txt . "\n\n";
 
 $data = chunk_split(base64_encode($data));
 
 $email_message .= "--{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" .
 " name = \"{$fileatt_name}\"\n" . //"Content-Disposition: attachment;\n" . 
 //" filename = \"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: 
 base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n";
 
 $ok = mail($email_to, $email_subject, $email_message, $headers);
 
 if($ok) {
 echo "File Sent Successfully.";
 unlink($attachment); // файл вложения.
 }else {
 die("Sorry but the email could not be sent. Please go back and try again!");
 }
 }
 move_uploaded_file($_FILES["filea"]["tmp_name"],
 'temp/'.basename($_FILES['filea']['name']));
 
 mail_attachment("$from", "youremailaddress@gmail.com", 
 "subject", "message", ("temp/".$_FILES["filea"]["name"]));
  }
?>
 
<html>
  <head>
 
 <script language = "javascript" type = "text/javascript">
 function CheckData45() {
 with(document.filepost) {
 if(filea.value ! = "") {
 document.getElementById('one').innerText = 
 "Attaching File ... Please Wait";
 }
 }
 }
 </script>
 
  </head>
  <body>
 
 <table width = "100%" height = "100%" border = "0" 
 cellpadding = "0" cellspacing = "0">
 <tr>
 <td align = "center">
 <form name = "filepost" method = "post" 
 action = "file.php" enctype = "multipart/form-data" id = "file">
 
 <table width = "300" border = "0" cellspacing = "0" 
 cellpadding = "0">
 
 <tr valign = "bottom">
 <td height = "20">Your Name:</td>
 </tr>
 
 <tr>
 <td><input name = "from" type = "text" 
 id = "from" size = "30"></td>
 </tr>
 
 <tr valign = "bottom">
 <td height = "20">Your Email Address:</td>
 </tr>
 
 <tr>
 <td class = "frmtxt2"><input name = "emaila"
 type = "text" id = "emaila" size = "30"></td>
 </tr>
 
 <tr>
 <td height = "20" valign = "bottom">Attach File:</td>
 </tr>
 
 <tr valign = "bottom">
 <td valign = "bottom"><input name = "filea" 
 type = "file" id = "filea" size = "16"></td>
 </tr>
 
 <tr>
 <td height = "40" valign = "middle"><input 
 name = "Reset2" type = "reset" id = "Reset2" value = "Reset">
 <input name = "Submit2" type = "submit" 
 value = "Submit" onClick = "return CheckData45()"></td>
 </tr>
 </table>
 
 </form>
 
 <center>
 <table width = "400">
 
 <tr>
 <td id = "one">
 </td>
 </tr>
 
 </table>
 </center>
 
 </td>
 </tr>
 </table>
 
  </body>
</html>

Источник: https://www.tutorialspoint.com/

Редакция: Команда webformyself.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Хотите изучить ООП PHP?

Прямо сейчас посмотрите курс по объектно-ориентированному программированию на PHP (ООП PHP)!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree