Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы.


Рассылка "Программирование на php. Вопросы и ответы"

"PHP Новичок!"

Задавай свои наболевшие вопросы. И радуйся php возможностям!

Ваши

Вопросы php


PHP скрипты каталог

Здравствуйте, php любители и профессионалы!

Сегодня в выпуске.

0.    Приветствие

1.    Статистика php форума «уже 534 сообщений…»

2.    Подробный ответ на php вопрос. Избранное

3.    Список php вопросов для наших экспертов.

4.    Вопрос номера

Приветствие

Вас приветствует очередной выпуск рассылки «Программирование на php в вопросах и ответах».

Сегодня у нас очень интересные php тонкости.

Если у вас возникают вопросы по поводу вашей php деятельности, смело задавайте их на нашем php форуме и получайте нужные ответы

Статистика php форума

 

 Кто сейчас на форуме

 

Наши пользователи оставили сообщений: 534
Всего зарегистрированных пользователей: 143
Последний зарегистрированный пользователь: masha_b

Сейчас посетителей на форуме: 5, из них зарегистрированных: 3, скрытых: 0 и гостей: 2   [ Администратор ]   [ Модератор ]
Больше всего посетителей (14) здесь было 23 Сен 2007 03:21 am
Зарегистрированные пользователи: MMS, phper, Seadog

 

 

Подробный ответ на php вопрос. Избранное

Скажите, а как послать мейл?

 

Скажите, а как послать мейл? Я смотрел в доке, там единственно что есть, этофункция mail("Кому", "Сабж", "ТелоПисьма");Когда запускаю эту функцию, ПеХеПе выдаёт Unknown Error. Мой ПеХеПе под Вин32. Может, там модуль нужно подключить?

ОТВЕТ

Я пользуюсь функцией из phpBB:

smtp.php (лицензия GPLv2):

Код:


<?php
/***************************************************************************
 *                              smtp.php                           
 *                       -------------------                        
 *   begin                : Wed May 09 2001                           
 *   copyright            : (C) 2001 The phpBB Group                  
 *   email                :
support@phpbb.com                        
 *                                                         
 *   $Id: smtp.php,v 1.16.2.2 2002/12/22 15:09:17 psotfx Exp $            
 *                                                         
 ***************************************************************************/

/***************************************************************************
 *                                                         
 *   This program is free software; you can redistribute it and/or modify   
 *   it under the terms of the GNU General Public License as published by   
 *   the Free Software Foundation; either version 2 of the License, or      
 *   (at your option) any later version.                           
 *                                                         
 ***************************************************************************/
function server_parse($socket, $response)
{
   while ( substr($server_response,3,1) != ' ' )
   {
      if( !( $server_response = fgets($socket, 256) ) )
      {
         echo "
Системная ошибка CGMSRC.";
      }
   }

   if( !( substr($server_response, 0, 3) == $response ) )
   {
      echo "
Системная ошибка RIPSM: $server_response.";
   }
}

/****************************************************************************
*   Function:       smtpmail                                    
*   Description:    This is a functional replacement for php's builtin mail   
*                  function, that uses smtp.                     
*   Usage:         The usage for this function is identical to that of php's
*                  built in mail function.                        
****************************************************************************/

function smtpmail($mail_to, $subject, $message, $headers = "")
{
   $smtp_host='
Адрес сервера';
   $smtp_username='
Логин';
   $smtp_password='
Пароль';
   $board_email='E-Mail';

   //
   // Fix any bare linefeeds in the message to make it RFC821 Compliant.
   //
   $message = preg_replace("/(?<!\r)\n/si", "\r\n", $message);
   if ($headers != "")
   {
      if(is_array($headers))
      {
         if(sizeof($headers) > 1)
         {
            $headers = join("\r\n", $headers);
         }
         else
         {
            $headers = $headers[0];
         }
      }
      $headers = chop($headers);

      //
      // Make sure there are no bare linefeeds in the headers
      //
      $headers = preg_replace("/(?<!\r)\n/si", "\r\n", $headers);
      //
      // Ok this is rather confusing all things considered,
      // but we have to grab bcc and cc headers and treat them differently
      // Something we really didn't take into consideration originally
      //
      $header_array = explode("\r\n", $headers);
      @reset($header_array);
      $headers = "";
      while( list(, $header) = each($header_array) )
      {
         if( preg_match("/^cc:/si", $header) )
         {
            $cc = preg_replace("/^cc:(.*)/si", "\\1", $header);
         }
         else if( preg_match("/^bcc:/si", $header ))
         {
            $bcc = preg_replace("/^bcc:(.*)/si", "\\1", $header);
            $header = "";
         }
         $headers .= $header . "\r\n";
      }
      $headers = chop($headers);
      $cc = explode(",", $cc);
      $bcc = explode(",", $bcc);
   }
   if($mail_to == "")
   {
   echo "no mail";
      return;
   }
   if(trim($subject) == "")
   {
   echo "no subj";
      return;
   }
   if(trim($message) == "")
   {
   echo "no msg";
      return;
   }
   $mail_to_array = explode(",", $mail_to);

   //
   // Ok we have error checked as much as we can to this point let's get on
   // it already.
   //
   if( !$socket = fsockopen($smtp_host, 25, $errno, $errstr, 20) )
   {
      echo "
Системная ошибка CCSS.";
   }
   server_parse($socket, "220");

   if( !empty($smtp_username) && !empty($smtp_password) )
   {
      // Send the RFC2554 specified EHLO.
      // This improved as provided by SirSir to accomodate
      // both SMTP AND ESMTP capable servers
      fputs($socket, "EHLO " . $smtp_host . "\r\n");
      server_parse($socket, "250");

      fputs($socket, "AUTH LOGIN\r\n");
      server_parse($socket, "334");
      fputs($socket, base64_encode($smtp_username) . "\r\n");
      server_parse($socket, "334");
      fputs($socket, base64_encode($smtp_password) . "\r\n");
      server_parse($socket, "235");
   }
   else
   {
      // Send the RFC821 specified HELO.
      fputs($socket, "HELO " . $smtp_host . "\r\n");
      server_parse($socket, "250");
   }

   // From this point onward most server response codes should be 250
   // Specify who the mail is from....
   fputs($socket, "MAIL FROM: <" . $board_email . ">\r\n");
   server_parse($socket, "250");

   // Specify each user to send to and build to header.
   $to_header = "To: ";
   @reset( $mail_to_array );
   while( list( , $mail_to_address ) = each( $mail_to_array ))
   {
      //
      // Add an additional bit of error checking to the To field.
      //
      $mail_to_address = trim($mail_to_address);
      if ( preg_match('/[^ ]+\@[^ ]+/', $mail_to_address) )
      {
         fputs( $socket, "RCPT TO: <$mail_to_address>\r\n" );
         server_parse( $socket, "250" );
      }
      $to_header .= ( ( $mail_to_address != '' ) ? ', ' : '' ) . "<$mail_to_address>";
   }
   // Ok now do the CC and BCC fields...
   @reset( $bcc );
   while( list( , $bcc_address ) = each( $bcc ))
   {
      //
      // Add an additional bit of error checking to bcc header...
      //
      $bcc_address = trim( $bcc_address );
      if ( preg_match('/[^ ]+\@[^ ]+/', $bcc_address) )
      {
         fputs( $socket, "RCPT TO: <$bcc_address>\r\n" );
         server_parse( $socket, "250" );
      }
   }
   @reset( $cc );
   while( list( , $cc_address ) = each( $cc ))
   {
      //
      // Add an additional bit of error checking to cc header
      //
      $cc_address = trim( $cc_address );
      if ( preg_match('/[^ ]+\@[^ ]+/', $cc_address) )
      {
         fputs($socket, "RCPT TO: <$cc_address>\r\n");
         server_parse($socket, "250");
      }
   }
   // Ok now we tell the server we are ready to start sending data
   fputs($socket, "DATA\r\n");

   // This is the last response code we look for until the end of the message.
   server_parse($socket, "354");

   // Send the Subject Line...
   fputs($socket, "Subject: $subject\r\n");

   // Now the To Header.
   fputs($socket, "$to_header\r\n");

   // Now any custom headers....
   fputs($socket, "$headers\r\n\r\n");

   // Ok now we are ready for the message...
   fputs($socket, "$message\r\n");

   // Ok the all the ingredients are mixed in let's cook this puppy...
   fputs($socket, ".\r\n");
   server_parse($socket, "250");

   // Now tell the server we are done and close the socket...
   
fputs($socket, "QUIT\r\n");
   fclose($socket);

   return TRUE;
}

?>



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

Код:


include("smtp.php");
smtpmail("e-mail получателя", "тема сообщения", "сообщение");

ИСТОЧНИК: http://phper.ru/viewtopic.php?t=123

Список php вопросов для наших экспертов

он должен выводить все ссылки на html страницы

Большой аттач к письму

Mini Opera и корректное определение браузера телефона средст

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

объектно-оринентированное програмиррование

Пролинковать все ссылки в тексте

Подключить под Windows php 4.0.6.

Почему не все вложения отсылаются?

У меня выскакивает ошибка 500

Апач и ошибка 500

не отправляется мыло с сайта

Функция ob_start()

надо провернуть такую фишку

 

Вопрос номера

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

http://phper.ru/viewtopic.php?t=194

 

==========

Phper.ru  ======= >>> Php форум

"PHP Новичок!"

Задавай свои наболевшие вопросы. И радуйся php возможностям!

Ваши

Вопросы php
Бесплатный сайт создать || движок сайта php || Бесплатные php скрипты || самостоятельное создание сайтов || Бесплатно сделать сайт || сайт информационная безопасность || дизайн сайта Бесплатно

В избранное