Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 Re: Запросы на доработку ядра » SMTP авторизованная отправка » 2011-01-15 02:24:17

Пример в котором реализована отправка писем с использованием smtp-сервера, для которого требуется авторизация. Поэтому не забудь добавить в скрипт соответствующие реквизиты доступа, например:

<?php

 $mhSmtpMail_Server     = "smtp.domain.tld";       // Укажите адрес SMTP-сервера
 $mhSmtpMail_Port       = "25";                    // Порт SMTP-сервера, как правило 25
 $mhSmtpMail_Username   = "postmaster@domain.tld"; // Имя почтового ящика (пользователя)
 $mhSmtpMail_Password   = "password";              // и пароль к нему.
 $mhSmtpMail_From       = "Имя отправителя";       // Имя отправителя в поле From

// Обратите внимание, что в условиях нашей почтовой системы, имя пользователя требуется указывать полностью, например postmaster@domain.tld

function MailSmtp($to, $subject, $message, $headers)

{

  global $mhSmtpMail_Server, $mhSmtpMail_Port, $mhSmtpMail_Username, $mhSmtpMail_Password;

  $mhSmtpMail_localhost  = "localhost";
  $mhSmtpMail_newline    = "\r\n";
  $mhSmtpMail_timeout    = "30";

  $smtpConnect = fsockopen($mhSmtpMail_Server, $mhSmtpMail_Port, $errno, $errstr, $mhSmtpMail_timeout);
  $smtpResponse = fgets($smtpConnect, 515);

  if(empty($smtpConnect))
    {
      $output = "Failed to connect: $smtpResponse";
      return $output;
    }
  else
    {
      $logArray['connection'] = "Connected: $smtpResponse";
    }

  fputs($smtpConnect,"AUTH LOGIN" . $mhSmtpMail_newline);
  $smtpResponse = fgets($smtpConnect, 515);
  $logArray['authrequest'] = "$smtpResponse";

  fputs($smtpConnect, base64_encode($mhSmtpMail_Username) . $mhSmtpMail_newline);
  $smtpResponse = fgets($smtpConnect, 515);
  $logArray['authmhSmtpMail_username'] = "$smtpResponse";

  fputs($smtpConnect, base64_encode($mhSmtpMail_Password) . $mhSmtpMail_newline);
  $smtpResponse = fgets($smtpConnect, 515);
  $logArray['authmhSmtpMail_password'] = "$smtpResponse";

  fputs($smtpConnect, "HELO $mhSmtpMail_localhost" . $mhSmtpMail_newline);
  $smtpResponse = fgets($smtpConnect, 515);
  $logArray['heloresponse'] = "$smtpResponse";

  fputs($smtpConnect, "MAIL FROM: $mhSmtpMail_Username" . $mhSmtpMail_newline);
  $smtpResponse = fgets($smtpConnect, 515);
  $logArray['mailmhSmtpMail_fromresponse'] = "$smtpResponse";

  fputs($smtpConnect, "RCPT TO: $to" . $mhSmtpMail_newline);
  $smtpResponse = fgets($smtpConnect, 515);
  $logArray['mailtoresponse'] = "$smtpResponse";

  fputs($smtpConnect, "DATA" . $mhSmtpMail_newline);
  $smtpResponse = fgets($smtpConnect, 515);
  $logArray['data1response'] = "$smtpResponse";

  fputs($smtpConnect, "Subject: $subject\r\n$headers\r\n\r\n$message\r\n.\r\n");

  $smtpResponse = fgets($smtpConnect, 515);
  $logArray['data2response'] = "$smtpResponse";

  fputs($smtpConnect,"QUIT" . $mhSmtpMail_newline);
  $smtpResponse = fgets($smtpConnect, 515);
  $logArray['quitresponse'] = "$smtpResponse";

}

?>

Этот код можно добавить в function sendEmailMessage после " $message    .=    chunk_split(base64_encode(fread($file, filesize($filename))))."\n";} "
Также неплохо заменить хедеры, например на эти:

 $headers = "MIME-Version: 1.0\r\n";
  $headers .= "Content-type: text/html; charset=windows-1251\r\n";
  $headers .= "To: $to\r\n";
  $headers .= "From: Tournir Registration <admin@excessive.ru>";

Вот эту часть

$mhSmtpMail_Server     = "smtp.excessive.ru";       // Укажите адрес SMTP-сервера
$mhSmtpMail_Port       = "25";                    // Порт SMTP-сервера, как правило 25
$mhSmtpMail_Username   = "admin@excessive.ru"; // Имя почтового ящика (пользователя)
$mhSmtpMail_Password   = "cLAN1124";              // и пароль к нему.
$mhSmtpMail_From       = "Администрация excessive.ru";       // Имя отправителя в поле From

вставляй до функции.

Удачи!:D

Подвал раздела

Работает на FluxBB