PhP отсылаем уведомление по электронной почте

Для начала давайте расмотрим, самый распространенный способ отправки почты, при помощи функции mail():

<?php   
$To = 'recepient@yourdomain.com';   
$Subject = 'Тема письма';   
$Message = 'Текс сообщения';   
$Headers = 'From: sender@yourdomain.com \r\n' .   
 'Reply-To: sender@yourdomain.com \r\n' .   
 'Content-type: text/html; charset=UTF-8 \r\n'; 
     
mail($To, $Subject, $Message, $Headers);   
?>

А теперь давайте попробуем отослать сообщение с прикреплением. В принцепе идея та же, единственное что, необходимо поменять хидер письма:

<?php 
$b = 0; 
$mail_attached = ""; 
$boundary = md5(time()); 
$fp = fopen($file_name,"rb"); 
$content[$b] = fread($fp,filesize($file_name)); 
$mail_attached .= "--" . $boundary . "\n" 
. "Content-Type: binary/octet-stream; name=\"basename($file_name)\" \n" 
. "Content-Transfer-Encoding: base64 \n" 
. "Content-Disposition: inline; filename=\"basename($file_name)\" \n\n" 
. chunk_split(base64_encode($content[$b]))." \n"; 
$b++; 
fclose($fp); 
$mail_attached .= "--".$boundary." \n"; 
 
$add_header = "MIME-Version: 1.0\n". 
"Content-Type: multipart/mixed; boundary=\"$boundary\"; Message-ID: <".md5($email_from).">"; 
$mail_content = "--".$boundary."\n". 
"Content-Type: text/plain; charset=\"UTF-8\"\n". 
"Content-Transfer-Encoding: 8bit \n\n". 
$msg." \n\n". 
$mail_attached; 
mail($email_address, $subject, $mail_content, "From: ".$email_from."\nCC: ".$email_cc."\n
BCC: ".$email_bcc ."\n Errors-To: ".$email_from."\n".$add_header); 
?>

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

Если же для отправки писем ваш SMTP сервер требует аутентификацию, то прийдеться воспользоваться PEAR Mail Package:

<?php 
  include_once("Mail.php"); 

  $From = "Имя отправителя <sender@yourdomain.com>"; 
  $To = "Имя получателя <recipient@yourdomain.com>"; 
  $Subject = "Тема письма"; 
  $Message = "Текст сообщение"; 
  
  $Host = "mail.yourdomain.com"; 
  $Username = "smtp_username"; 
  $Password = "smtp_password"; 
  
  // Do not change bellow 
  
  $Headers = array ('From' => $From, 'To' => $To, 'Subject' => $Subject); 
  $SMTP = Mail::factory('smtp', array ('host' => $Host, 'auth' => true, 
  'username' => $Username, 'password' => $Password)); 
  
  $mail = $SMTP->send($To, $Headers, $Message); 
  
  if (PEAR::isError($mail)){ 
  echo($mail->getMessage()); 
  } else { 
  echo("Email Message sent!"); 
  } 
?>

 

Случайные Статьи

Loading…


Количество просмотров :57710

Оставьте коментарий