Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [PHP] Cкрипт для формирования / отправки письма


Автор: programming4 9.6.2006, 10:26
Помогите найти скрипт...

Есть бесплатный хостинг с поддержкой PHP5, также есть html-страничка, на которой любому пользователю предлагается заполнить некую форму (логин, e-mail и пароль с подтверждением), также на странице есть кнопка "Отправить". Мне нужен такой php-скрипт, способный при нажатии этой кнопки сформировать письмо и отправить все, что набрано в полях, на мой e-mail
HELP!!!    

Автор: Alex1984 16.8.2007, 15:08
помогите, таже проблемма, нужно чтобы форма отправлялась на имейл, но уже заполненая. В php полный ноль. 
Форма на html во вложенном файле

Автор: Annihilator 16.8.2007, 19:10
Код

if (isset($_REQUEST['send']))  // Если нажата кнопка "Сделать рассылку"
    {
        $sel=mysql_select_db($base);
        if ($sel) 
        {
            $author=$_REQUEST['author']; // Получаем поле "От кого"
            $theme=$_REQUEST['theme']; // Получаем поле "Тема"
            $message=$_REQUEST['message']; // Получаем поле "Текст письма"
            echo "выбрана база  {$base} <BR>";
            $sql=mysql_query("SELECT mail FROM $table ");
            $cnt=mysql_num_rows($sql); // Определяем число строк и записываем в $cnt    
            for ($data=array();$row=mysql_fetch_row($sql);$data[]=$row);
            echo "<TABLE border='2'>";
            for ($i=0,$j=0;$i<=$cnt-1;$i++) 
            {
                mail(
                    $data[$i][$j],
                    $theme,
                    $message,
                    "From: {$_REQUEST['author']}");
                echo "Пользователю ".$data[$i][$j]." письмо отправлено<BR>";
            }
        }
        else echo "не удается выбрать базу";
    }

простенькая такая, переделывать времени пока нет. Кому что не понятно пишите icq 238136457
отвечу с радостьюsmile

Автор: Mal Hack 19.8.2007, 14:42
Annihilator, выкиньте весь свой код, а точнее бублик по вопросу безопасности, на помойку.

Alex1984, самый простой вариант:
Создаем файл mail.php, в action формы вписываем mail.php, у кнопки ставим name="btnSubmit".
mail.php:
Код
<?php

if(isset($_POST['btnSubmit']))
{
$text = <<<EOF
Юридическое имя компании: {$_POST['name']};<br />
Торговая марка: {$_POST['favorite']};<br />
Сайт: {$_POST['homepage']};<br />
////////////////////////////////// ************** ////////////////////////////

EOF;
mail("mymail.com", "Бриф", $text); // второй параметр - тема письма, первый - адрес получателя

}

?>

Вместо ////////////////////////////////// ************** //////////////////////////// вставляешь html с тем, как у тебя должно выглядеть письма. $_POST['name'] - переменная из формы, где индекс массима - имя поля. {} - показывают, что ее надо вставить в текст сообщения, который мы формируем. Остальное - голый html, думаю с ним проблем не возникнет.

Письма отправленные таким образом, могут не всегда доходить, в таком случае, могу подкинуть свой класс (скрипт), который пропишет все, что надо. В этом случае, от тебя понадобится не больше, чем в данном случае.

PS: хостинг, там где твой сайт лежит, должен поддердивать PHP скрипты. Народ.Ру не прокатит.

Автор: jonie 19.8.2007, 21:53
вот вам класс для отправки по SMTP включая с авторизацией..
Цитата

Библиотека предназначена для удобного составления и организации надежной отправки писем с аттачами или без.
В отличие от PHPMailer-а, умеет:
1) правильно кодировать заголовки (поддерживаются плейсхолдеры при их составлении)
2) отправлять письма по SMTP с использованием AUTH CRAM-MD5

Класс Letter
Составляет письмо с заголовками, сообщением и аттачами.
Лепит из всех этих составляющих тело письма.

Envelope (наследует Letter)
API к наиболее часто используемым заголовкам: from, to, subject, reply-to, cc, bcc
Самостоятельно определяет всех получателей, интеллектуально составляет тело письма на основании родительских методов.
Есть инструмент для создания закодированных заголовков. Поддерживает плейсхолдеры.

SMTP_Socket
Инструмент для коннекта к SMTP-серверу и выполнения на нем команд.
Анализирует коды ответа сервера в каждой команде и сопоставляет с указанным набором.
Может сохранять лог протокола

Mailman
"Фабрика"
Утилита для составления писем, построения их в очередь и отправки указанным способом.
Постоянно держит наготове объект-письмо-конверт, куда можно пихать сообщения, заголовки, аттачи.
Можно текущее письмо поместить в очередь и при этом создать новое.
Можно всю очередь писем отправить в 1 соединение с SMTP-сервером. Это происходит так:
1) создает соединение, пытается пройти аутентификацию, если указаны логин+пароль
1.1) аутентификация происходит в порядке "AUTH CRAM-MD5", "AUTH LOGIN"
2) пытается отправить каждое письмо из очереди. При этом отправленные удаляются из очереди
3) возвращает количество отправленных писем (очередь неотправленных при этом остается)

Пример отправки 1 простейшего письма
Код

<?php
$m=new Mailman();
$m->letter->add_to('[email protected]');
$m->letter->set_from('[email protected]');
$m->letter->set_subject('Превед');
$m->letter->set_message('Идет Медвед по лесу...');
if ($m->send_via_smtp('smtp.mail.ru', 'preved', 'medved'))
    echo 'ok';
else
    echo 'Not ok';
?>


Пример отправки письма с кучей заголовков и 2 аттачами
Код

<?php
// создается очередь и 1 письмо в кодировке UTF-8
$queue = new Mailman();

$queue->letter->add_to('[email protected]');
$queue->letter->add_to('[email protected]', 'Имя получателя');
// так же работают методы add_cc, add_bcc
$queue->letter->set_from('[email protected]', 'Ваше имя');
$queue->letter->set_reply_to('[email protected]', 'Еще какое-нить имя');
// простое текстовое сообщение
$queue->letter->set_message('бу-бу-бу');
/* // а можно и HTML-код
$html_code='...';
$queue->letter->set_message($html_code, text/html, 'windows-1251');
*/
// можно приаттачить файл, можно содержимое
$queue->letter->attach($path_to_file);
$queue->letter->attach($file_contents, 'application/rtf', '1.rtf');
// или добавить какой-нибудь заголовок
$queue->letter->add_header($queue->letter->base64_placeholders(
    'X-Mailer: #?#', 'Типа почтовый клиент.'));
// можно просто сформировать и получить тело письма
$ltr=$queue->letter->fetch();

// а так письма можно попытаться отправить в любой момент
// последнее письмо не нужно отправлять в очередь
$queue->send_via_smtp('an.smtp.host');
?>


Автор: Alex1984 19.8.2007, 22:30
Спасибо, завтра буду пробовать

Автор: Alex1984 20.8.2007, 10:58
jonie Сорри, что то я совсем не вьезжаю, тяжко мне понять, не видя резултата.  smile  smile  smile 

Кто-то может сделать за меня или по аське разобрать со мной? 312032985

Автор: Annihilator 20.8.2007, 18:45
Mal Hack, я про безопасность ничего и не говорил, это просто склелет,который не надо выкидывать, а нужно доделать

Автор: Alex1984 21.8.2007, 23:12
решилось


M
Guedda
Не забываем помечать вопрос "решенным"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)