Чтение 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) ? "".$message."" : "".$message."<br><br>"._IP.": ".getip()."<br>"._BROWSER.": ".getagent()."<br>"._HASH.": ".md5(getagent())."";
	$mheader = "MIME-Version: 1.0\n"
	."Content-Type: text/html; charset="._CHARSET."\n"
	."Content-Transfer-Encoding: 8bit\n"
	."Reply-To: \"$smail\" <$smail>\n"
	."From: \"$smail\" <$smail>\n"
	."Return-Path: <$smail>\n"
	."X-Priority: $pr\n"
	."X-Mailer: Open SLAED Mailer\n";
	mail($email, $subject, $message, $mheader);
}


Заменяем на:

function mail_send($email, $smail, $subject, $message, $id="", $pr="") {
	global $conf;
	include("config/config_smtp.php");
	$email = text_filter($email);
	$smail = text_filter($smail);
	$subject = text_filter($subject);
	$id = intval($id);
	$pr = (!$pr) ? "3" : "".intval($pr)."";
	$message = (!$id) ? "".$message."" : "".$message."<br><br>"._IP.": ".getip()."<br>"._BROWSER.": ".getagent()."<br>"._HASH.": ".md5(getagent())."";
	if ($econf['active']==0){
		$mheader = "MIME-Version: 1.0\n"
		."Content-Type: text/html; charset="._CHARSET."\n"
		."Content-Transfer-Encoding: 8bit\n"
		."Reply-To: \"$smail\" <$smail>\n"
		."From: \"$smail\" <$smail>\n"
		."Return-Path: <$smail>\n"
		."X-Priority: $pr\n"
		."X-Mailer: Open SLAED Mailer\n";
		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("_SMTP","SMTP");
define("_SMTP_MAIN","SMTP - настройки");
define("_SMTP_METHOD","Тип отправки");
define("_SMTP_METHOD_MAIL","Через PHP функцию mail()");
define("_SMTP_METHOD_SMTP","Через сервер SMTP");
define("_SMTP_FROM","Почта отправителя");
define("_SMTP_USER","Логин");
define("_SMTP_PASS","Пароль");
define("_SMTP_HOST","Хост");
define("_SMTP_PORT","Порт");
#####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.92

3.92
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="", $pr="") {
	global $conf;
	include("config/config_smtp.php");
	$email = text_filter($email);
	$smail = text_filter($smail);
	$subject = text_filter($subject);
	$id = intval($id);
	$pr = (!$pr) ? "3" : "".intval($pr)."";
	$message = (!$id) ? "".$message."" : "".$message."<br /><br />IP: ".getenv("REMOTE_ADDR")."<br />User agent: ".htmlspecialchars(getenv("HTTP_USER_AGENT"))."";
	if ($econf['active']==0){
		$mheader = "MIME-Version: 1.0\n"
		."Content-Type: text/html; charset="._CHARSET."\n"
		."Reply-To: \"$smail\" <$smail>\n"
		."From: \"$smail\" <$smail>\n"
		."Return-Path: <$smail>\n"
		."X-Priority: $pr\n"
		."X-Mailer: Open SLAED Mailer\n";
		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("ADMIN_FILE") || !is_admin_god()) die("Illegal File Access");


заменим на:

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


Проверить на локалке, отписаться тут Смайл - 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.78

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

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

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

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

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