Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2008, 19:12   #1
andrey4623
Форумчанин
 
Аватар для andrey4623
 
Регистрация: 31.05.2007
Сообщений: 266
По умолчанию отправка e-mail с помощью сокетов

Здравствуйте! Я перерыл гору литературы, но никак не смог реализовать отправку e-mail с помощью сокетов. А функция mail() заблокирована. Пример скрипта (который не работает):

PHP код:
<?

function sock_mail($host$to$from$subj$message$type)
{
if(
$type==""$type="text/plain"// Определям тип по умолчанию
// Соединение
$fp fsockopen($host25); // Подключаемся на 25 порт сервера $host
// Приветствие
$log .= fgets($fp); // Читаем приветствие сервера
fputs($fp"HELO: $host"); // Привет, сервер smile.gif
$log .= fgets($fp); // Читаем ответ
fputs($fp"MAIL FROM:<$from>"); // Определяем пользователя
$log .= fgets($fp); // Читаем ответ
fputs($fp,"RCPT TO:<$to>"); // Определяем получателя
$log .= fgets($fp); // Читаем ответ
fputs($fp"DATA"); // Приветствие окончено, теперь приступим к делу
$log .= fgets($fp); // Читаем ответ
// Заголовки
fputs($fp"X-Mailer: Sock_Mail v.1.0"); // Название клиента (необязательно)
fputs($fp"Reply-To: $from"); // Адрес, на который идут ответы (необязательно)
fputs($fp"From: $from"); // Отправитель
fputs($fp"Subject: $subj"); // Тема
fputs($fp"MIME-Version: 1.0"); // Версия MIME (необязательно)
fputs($fp"Content-Type: $type"); // Тип содержимого
fputs($fp,""); // Пустая строка
// Содержимое
fputs($fp$message);
// Конец диалога
fputs($fp".");
$log .= fgets($fp); // Читаем ответ
fputs($fp"QUIT"); // Сообщаем о выходе
$log .= fgets($fp); // Читаем ответ
// Завершение соединения
fclose($fp); // Закрываем сокет
return $log// Возвращаем ответы сервера.
}

echo(
sock_mail("mail.ayola.net","andrey4623@mail.ru","support@mail.ru","1","1"));
?>

Последний раз редактировалось SkyM@n; 25.06.2008 в 01:44. Причина: ребят, ну неужели сложно оформить код самому???
andrey4623 вне форума Ответить с цитированием
Старый 25.06.2008, 01:46   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

А что дает на выходе sock_mail ?
Закопипастьте лог.
SkyM@n вне форума Ответить с цитированием
Старый 25.06.2008, 19:00   #3
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Ну если фунции, которая требует 6 переменных, передавать только 5, то вообще ничего работать не будет.

А заодно, вы не задумывались, что сервер вас заблокирует за попытку отправки письма с адреса, в котором нет его домена? Всё, конечно, зависит от сервера, но что-то мне подсказывает, что там где заблокирован mail(), там будет заблокировано и это.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?

Последний раз редактировалось Johnatan; 25.06.2008 в 19:03.
Johnatan вне форума Ответить с цитированием
Старый 27.06.2008, 13:20   #4
andrey4623
Форумчанин
 
Аватар для andrey4623
 
Регистрация: 31.05.2007
Сообщений: 266
По умолчанию

Все, разобрался! Добрые люди помогли:
Код:
<?php
require("phpmailer/class.phpmailer.php"); // укажите путь к файлу class.phpmailer.php
$mail = new PHPMailer();
$mail->IsSMTP();// отсылать используя SMTP
$mail->Host     = "mail.life-host.net"; // SMTP сервер
$mail->SMTPAuth = true;     // включить SMTP аутентификацию
$mail->Username = "user@domain.com";  // SMTP username
$mail->Password = "pass"; // SMTP password
$mail->From     = "user@domain.com"; // укажите от кого письмо
$mail->FromName = "Mailer"; // имя отправителя
$mail->AddAddress("user@domain.com","Name"); // е-мэил кому отправлять
$mail->AddReplyTo("user@domain.com","Info"); // е-мэил того кому прейдет ответ на ваше письмо
$mail->WordWrap = 50;// set word wrap
$mail->IsHTML(true);// отправить в html формате

$mail->Subject  =  "Here is the subject"; // тема письма
$mail->Body     =  "This is the HTML body"; // тело письма в html формате

$mail->AltBody  =  "This is the text-only body"; // тело письма текстовое

if(!$mail->Send())
{
   echo "Письмо не отправлено ";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}
echo "Письмо отправлено";
?>
andrey4623 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отправка данных с edit'a на e-mail фЁдОр Помощь студентам 9 08.12.2011 21:09
Отправка письма с помощью TidSmtp... Teen4jump Работа с сетью в Delphi 8 31.08.2007 01:12
Отправка e-mail через JavaScript Gambler Общие вопросы по Java, Java SE, Kotlin 1 30.05.2007 14:03
Delphi 2005 и отправка E-mail Nez Общие вопросы Delphi 5 13.02.2007 13:53