Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: лучший скрипт для отправки сообщений с аттачами
 
 автор: LINKIN   (09.06.2005 в 19:57)   письмо автору
 
 

Здравствуйте .
Веб деволпери, подскажите простую работоспособную форму для отправки сообщений на электронную почту с сайта, написаною на РНР .
Более того, важно чтобы форма была как можно проще, содержала 2 файла (один - форма с ссылкой на скрипт, второй – это этот скрипт, который отправляет письма) .
Плюс, без проверки на правильность ввода адреса электронной почты, так как я считаю это не обязательным . Ведь можно в самом письме указать аську, jabber, odigo и дофига чего еще …
И! Главное!.. Чтобы можно было отправить аттач ! Т.е. чтобы вместе с письмом любой человек смог отправить какой-то файл (пусть то мп3, avi, mpeg, jpg... и пусть он занимает хоть 5Кб, или 130Гб) .

Если никто не знает такого скрипта, то давайте напишем вместе !
----
Ну что ? :) Такой скрипт по праву будет считаться лучшим для отправки писем формой с сайта во всем РуНете наверно :) По крайней мере я такого не встречал. Да еще чтобы был написан средствами РНР ...
Ясный перец, что можно написать обычной хтмл-формой, но вы знаете, и мы знаем, и все знают ;), что такие спамеры (именно «что такие», а не кто такие, ибо <плохие люди>:) ...

ЗЫ: Я знаю что можно сделать (и как сделать) хтмл-форму и при этом запрятать (именно запрятать, и именно на РНР) адрес электронной почты . Однако некоторые службы могут определять письма отправленные такой формой как «спам» и не пускать их, что просто недопустимо !

Для всего этого надо использовать htmlMimeMail .
Привожу пример кода . Может кто-то доделает, или вместе закончим его .
 
<?
// отображаем все ошибки только для отладки  
error_reporting(E_ALL);
//подключаем класс htmlMimeMail
include('htmlMimeMail.php');

//блин, дальше обьяснять не буду
$mail = new htmlMimeMail();

$attachment $mail->getFile('файл.zip');

$text $mail->getFile('текст_письма.txt');

$mail--->setText($text);

$mail->addAttachment($attachment'файл.zip''application/zip');

//ну а тут отправка уже

$mail->setForm('Буш <на-деревню@дедушке.сша>');
$result $mail->send(array('"Виктор" <Виктор@Ющенко.лучший>'));

echo 
$result 'Отправлено' 'Ошибка';
//всё
>? 

[поправлено модератором]

   
 
 автор: cheops   (09.06.2005 в 22:11)   письмо автору
 
   для: LINKIN   (09.06.2005 в 19:57)
 

Пусть имеется HTML форма index.php
<HTML>
<HEAD>
 <TITLE>Отправка сообщения</TITLE>
</HEAD>
<BODY>
<H3> <center><font color=#1E90FF> Отправка сообщения </font></H3>
<center>
 <table width=1 border=0>
 <form action=simple_mail.php method=post>
 <tr><td width=50%>To:</td><td align=right><input type=text name=mail_to maxlength=32></td></tr>
 <tr><td width=50%>Subject:</td><td align=right><input type=text name=mail_subject maxlength=64></td></tr>
 <tr><td width=50%>File:</td><td align=right><input type=file name=mail_file maxlength=64></td></tr>
 <tr><td colspan=2>Сообщение:<br><textarea cols=50 rows=8 name=mail_msg></textarea></td>
 </tr><tr><td colspan=2><input type=submit value='Отправить'></td></tr>
 </form>
 </table>
</center>
</BODY>
</HTML>

Тогда её обработчик simple_mail.php может выглядеть следующим образом
<?php
  
if(empty($_POST['mail_to'])) exit("Введите адрес получателя");
  
// проверяем правильности заполнения с помощью регулярного выражения
  
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i"$_POST['mail_to'])) exit("Введите адрес в виде somebody@server.com");
  
$_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));
  
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));
  
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));
  
$picture "";
  
// Если поле выбора вложения не пустое - закачиваем его на сервер
  
if (!empty($_FILES['mail_file']['tmp_name']))
  {
    
// Закачиваем файл
    
$path $_FILES['mail_file']['name']; 
    if (
copy($_FILES['mail_file']['tmp_name'], $path)) $picture $path;
  }
  
// Отправляем почтовое сообщение
  
if(empty($picture)) mail($users['email'], $thm$msg);
  else 
send_mail($users['email'], $thm$msg$picture);
  
// Вспомогательная функция для отправки почтового сообщения с вложением 
  
function send_mail($to$thm$html$path
  { 
    
$fp fopen($path,"r"); 
    if (!
$fp
    { 
      print 
"Файл $path не может быть прочитан"
      exit(); 
    } 
    
$file fread($fpfilesize($path)); 
    
fclose($fp); 
    
$path substr($path,12); 
   
    
$boundary "--".md5(uniqid(time())); // генерируем разделитель 
    
$headers .= "MIME-Version: 1.0\n"
    
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n"
    
$multipart .= "--$boundary\n"
    
$kod 'koi8-r'// или $kod = 'windows-1251'; 
    
$multipart .= "Content-Type: text/html; charset=$kod\n"
    
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n"
    
$multipart .= "$html\n\n"

    
$message_part ""
    
$message_part .= "Content-Type: application/octet-stream"
    
$message_part .= "; file_name = \"$path\"\n"
    
$message_part .= "Content-Transfer-Encoding: base64\n"
    
$message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n"
    
$message_part .= chunk_split(base64_encode($file))."\n"
    
$multipart .= "--$boundary\n".$message_part."--$boundary--\n"

    if(!
mail($to$thm$multipart$headers)) 
    { 
      echo 
"К сожалению, письмо не отправлено"
      exit(); 
    } 
  } 
?>

   
 
 автор: 123php   (01.07.2005 в 10:55)   письмо автору
 
   для: cheops   (09.06.2005 в 22:11)
 

Здесь адрес должен вводится, а как сделать так, чтобы адреса брались из базы или csv файла?

   
 
 автор: method   (01.07.2005 в 13:19)   письмо автору
 
   для: 123php   (01.07.2005 в 10:55)
 

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

   
 
 автор: P@Sol   (01.07.2005 в 13:36)   письмо автору
 
   для: method   (01.07.2005 в 13:19)
 

1. в денвере есть только затычка. "программа-заглушка для sendmail,
предназначенная для отладки почтовых скриптов. В отличие от sendmail, она
не посылает письма, а складывает их в директорию /tmp/!sendmail." (с) WebServers\usr\local\sendmail\readme.txt

2. да, аттач - это присоединение к письму

   
 
 автор: XPraptor   (01.07.2005 в 13:36)   письмо автору
 
   для: method   (01.07.2005 в 13:19)
 

Вот прикладываю готовый клас для отправки писем хоть с атачами хоть без.
В коде внутри файла в конце закоментированный код как пользоваться из вашего кода данным классом.
Соответственно в том файле в котором вы будете отправлять письма нужно сделать include("mail1.php")

   
 
 автор: method   (01.07.2005 в 14:29)   письмо автору
 
   для: XPraptor   (01.07.2005 в 13:36)
 

во я тупарей ловлю=)
советую пройти на сайт к Владиславу Путяку!
У него хорошие статьи по этой теме, да и другие
прикольные,если у него появился раздел downloads там найдёте
оффлайн версию статей по php

2XPraptor скрипт слил, посмотрю =), сенкс.

   
 
 автор: method   (01.07.2005 в 14:58)   письмо автору
 
   для: method   (01.07.2005 в 14:29)
 

хыХы....
скрипт что ты выложил из статьи Путяка.....=)

   
 
 автор: XPraptor   (01.07.2005 в 15:32)   письмо автору
 
   для: method   (01.07.2005 в 14:58)
 

А фиг его знает откуда, я его давно слил, подправил конверт кодировки в КОИ-8Р при отправке и юзаю без проблемм.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования