Чтение RSS каналов

Форум

Открыть Ответить

PHPMailer + OpenSlaed 1.x = SMTP

5

5
1
05.06.2009 17:22:2105.06.2009 17:27:00
Вечер добрый. Со времен, когда еще делал сайт в локалке очень не хватало SMTP настроек. Сейчас же, на предоставленом мне сервере снова нет мэил сервера, да и админко не желает его ставить.

Вообщем, взял PHPMailer и связал его с OpenSlaed 1.х. Тестилось на:

Denwer3 (2008-01-13)
Apache 2.2.4
PHP 5.2.4
MySQL 5.0.45
OpenSlaed 1.1
PHPMailer 5.0.2
smtp.yandex.ru

Так как на форуме встречал темы, где люди удивлялись отсутствию smtp настроек - решил поделиться своим решением.

Файлы (прикрепить к сообщению не смог) для добавления настроек в админку. PHPMailer туда не вложил, скачаете сами.

Установка хака

1. Разархивируйте все файлы из папки html/ скачанного архива на сервер, где размещатся Ваш сайт

2. Скачайте PHPMailer:

PHP 4
PHP 5

3. Разархивируйте PHPMailer в директорию function/phpmailer/ следующие файлы:

class.phpmailer.php
class.smtp.php
LICENSE - дань лицензиям
language/phpmailer.lang-ru.php

4. Открываем function/function.php ищем:

function mail_send($email, $smail, $subject, $message, $id="", $pr="") {
	$email = text_filter($email);
	$smail = text_filter($smail);
	$subject = text_filter($subject);
	$id = intval($id);
	$pr = (!$pr) ? "3" : "".intval($pr)."";
	$message = (!$id) ? &quot;&quot;.$message.&quot;&quot; : &quot;&quot;.$message.&quot;<br><br>&quot;._IP.&quot;: &quot;.getip().&quot;<br>&quot;._BROWSER.&quot;: &quot;.getagent().&quot;<br>&quot;._HASH.&quot;: &quot;.md5(getagent()).&quot;&quot;;
	$mheader = &quot;MIME-Version: 1.0\n&quot;
	.&quot;Content-Type: text/html; charset=&quot;._CHARSET.&quot;\n&quot;
	.&quot;Content-Transfer-Encoding: 8bit\n&quot;
	.&quot;Reply-To: \&quot;$smail\&quot; <$smail>\n&quot;
	.&quot;From: \&quot;$smail\&quot; <$smail>\n&quot;
	.&quot;Return-Path: <$smail>\n&quot;
	.&quot;X-Priority: $pr\n&quot;
	.&quot;X-Mailer: Open SLAED Mailer\n&quot;;
	mail($email, $subject, $message, $mheader);
}


Заменяем на:

function mail_send($email, $smail, $subject, $message, $id=&quot;&quot;, $pr=&quot;&quot;) {
	global $conf;
	include(&quot;config/config_smtp.php&quot;);
	$email = text_filter($email);
	$smail = text_filter($smail);
	$subject = text_filter($subject);
	$id = intval($id);
	$pr = (!$pr) ? &quot;3&quot; : &quot;&quot;.intval($pr).&quot;&quot;;
	$message = (!$id) ? &quot;&quot;.$message.&quot;&quot; : &quot;&quot;.$message.&quot;<br><br>&quot;._IP.&quot;: &quot;.getip().&quot;<br>&quot;._BROWSER.&quot;: &quot;.getagent().&quot;<br>&quot;._HASH.&quot;: &quot;.md5(getagent()).&quot;&quot;;
	if ($econf['active']==0){
		$mheader = &quot;MIME-Version: 1.0\n&quot;
		.&quot;Content-Type: text/html; charset=&quot;._CHARSET.&quot;\n&quot;
		.&quot;Content-Transfer-Encoding: 8bit\n&quot;
		.&quot;Reply-To: \&quot;$smail\&quot; <$smail>\n&quot;
		.&quot;From: \&quot;$smail\&quot; <$smail>\n&quot;
		.&quot;Return-Path: <$smail>\n&quot;
		.&quot;X-Priority: $pr\n&quot;
		.&quot;X-Mailer: Open SLAED Mailer\n&quot;;
		mail($email, $subject, $message, $mheader);
	}else{
		if(!class_exists('PHPMailer')) {
    		require('function/phpmailer/class.phpmailer.php');
		}
		$mail = new PHPMailer();
		$mail->IsSMTP();
		$mail->SMTPAuth = true;
		$mail->CharSet = _CHARSET;
		$mail->Host = $econf['host'];
		$mail->Port = $econf['port'];
		$mail->Username = $econf['username'];
		$mail->Password = $econf['password'];
		$mail->SetFrom($econf['sendermail'], $conf['sitename']);
		$mail->AddAddress($email, $email);
		if ($id) $mail->AddReplyTo($smail,$smail);
		$mail->Subject = $subject;
		$mail->MsgHTML($message);
		$mail->Send();
	}
}


5. Открываем admin/language/lang-russian.php в конец добавляем:

#####BEGIN: SMTP-settings
define(&quot;_SMTP&quot;,&quot;SMTP&quot;);
define(&quot;_SMTP_MAIN&quot;,&quot;SMTP - настройки&quot;);
define(&quot;_SMTP_METHOD&quot;,&quot;Тип отправки&quot;);
define(&quot;_SMTP_METHOD_MAIL&quot;,&quot;Через PHP функцию mail()&quot;);
define(&quot;_SMTP_METHOD_SMTP&quot;,&quot;Через сервер SMTP&quot;);
define(&quot;_SMTP_FROM&quot;,&quot;Почта отправителя&quot;);
define(&quot;_SMTP_USER&quot;,&quot;Логин&quot;);
define(&quot;_SMTP_PASS&quot;,&quot;Пароль&quot;);
define(&quot;_SMTP_HOST&quot;,&quot;Хост&quot;);
define(&quot;_SMTP_PORT&quot;,&quot;Порт&quot;);
#####END: SMTP-settings


6. Далее идем в админку и настраиваем SMTP.


Установка прав доступа

1. Установите права CHMOD 666 на все файл config/config_smtp.php


Русификация PHPMailer

1. Откройте function/phpmailer/class.phpmailer.php, найдите:

$this->SetLanguage('en'); // set the default language


Замените на:

$this->SetLanguage('ru'); // set the default language



Буду рад услышать различные замечания и дополнения.

--------------------------

Приятной работы!


Версия системы: Open SLAED 1.*
Версия PHP: PHP 5
Сервер: Локальный сервер
2
05.06.2009 19:23:55
Вот это новость. Очень полезно! Скажите, а слишком отличается инструкция по связке со Slaed 2.5?
3.96

3.96
3
06.06.2009 08:13:14
2,5 у меня нету, поэтому сравнивал с 2,6. Различается не значительно, буквально 2-3 строки.

На скорую руку и чисто теоретически:

1. В принципе делаем все по инструкции, кроме:

1.1. Функция mail_send будет выглядить так, она кстати в файле function/sources.php:

function mail_send($email, $smail, $subject, $message, $id=&quot;&quot;, $pr=&quot;&quot;) {
	global $conf;
	include(&quot;config/config_smtp.php&quot;);
	$email = text_filter($email);
	$smail = text_filter($smail);
	$subject = text_filter($subject);
	$id = intval($id);
	$pr = (!$pr) ? &quot;3&quot; : &quot;&quot;.intval($pr).&quot;&quot;;
	$message = (!$id) ? &quot;&quot;.$message.&quot;&quot; : &quot;&quot;.$message.&quot;<br /><br />IP: &quot;.getenv(&quot;REMOTE_ADDR&quot;).&quot;<br />User agent: &quot;.htmlspecialchars(getenv(&quot;HTTP_USER_AGENT&quot;)).&quot;&quot;;
	if ($econf['active']==0){
		$mheader = &quot;MIME-Version: 1.0\n&quot;
		.&quot;Content-Type: text/html; charset=&quot;._CHARSET.&quot;\n&quot;
		.&quot;Reply-To: \&quot;$smail\&quot; <$smail>\n&quot;
		.&quot;From: \&quot;$smail\&quot; <$smail>\n&quot;
		.&quot;Return-Path: <$smail>\n&quot;
		.&quot;X-Priority: $pr\n&quot;
		.&quot;X-Mailer: Open SLAED Mailer\n&quot;;
		mail($email, $subject, $message, $mheader);
	}else{
		if(!class_exists('PHPMailer')) {
    		require('function/phpmailer/class.phpmailer.php');
		}
		$mail = new PHPMailer();
		$mail->IsSMTP();
		$mail->SMTPAuth = true;
		$mail->CharSet = _CHARSET;
		$mail->Host = $econf['host'];
		$mail->Port = $econf['port'];
		$mail->Username = $econf['username'];
		$mail->Password = $econf['password'];
		$mail->SetFrom($econf['sendermail'], $conf['sitename']);
		$mail->AddAddress($email, $email);
		if ($id) $mail->AddReplyTo($smail,$smail);
		$mail->Subject = $subject;
		$mail->MsgHTML($message);
		$mail->Send();
	}
}


1.2 В admin/modules/smtp.php найдем:

open();


заменим на:

OpenTable();


Найдем:

close();


заменим на:

CloseTable();


Найдем:

panel();


заменим на:

GraphicAdmin();


Найдем

if (!defined(&quot;ADMIN_FILE&quot;) || !is_admin_god()) die(&quot;Illegal File Access&quot;);


заменим на:

if (!defined(&quot;ADMIN_FILE&quot;) || !is_admin_god($aid)) die(&quot;Illegal File Access&quot;);


Проверить на локалке, отписаться тут Смайл - 06


Версия системы: Open SLAED 1.*
Версия PHP: PHP 5
4
30.06.2009 21:57:32
Смайл - 07 отличная штука
3.31

3.31
5
01.07.2009 08:21:05
А зачем это надо и как это работает?
3.82

3.82
6
21.10.2009 18:19:45
Golf, примите благодарность. Ваше решение очень выручило.
3.92

3.92
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь