|
|
|
| Привет.
Зашел в поиск, много чего нашел, но на чужих примерах не понятно.
Первый вопрос (теоритеческий):
Какие средства надо подключить, чтобы отправлять письмо с вложением (слышал про почтовый клиент, но что это такое беспонятия)?
Вопрос второй (практический):
Подскажите, как правильно обработать вот это форму, три дня уже бъюсь.
Главная загвостка в присоединении фотографии в виде аттача, или хотя бы в тело письма.
Обработчик (елси его можно так назвать) :( , чуть ниже.
<FORM onsubmit="return check_form(this);" action=online.php method=post enctype="multipart/form-data">
<TABLE width="100%" border=0>
<TR>
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>Тема<FONT color=#ff0000>*</FONT>:</FONT></TD>
<TD><SELECT name=select>
<OPTION value="" selected>Выберите тему >>></OPTION>
<OPTION value=diag>Для уточнения диагноза и предоставления
рекомендаций</OPTION>
<OPTION value=org>По вопросам организации диагностики и лечения
</OPTION>
<OPTION value=money>По вопросам оплаты диагностики и лечения</OPTION>
</SELECT> </TD>
</TR>
<TR>
<TD width="41%" height=25><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>ФИО
пациента<FONT color=#ff0000>*</FONT><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>:</FONT></FONT></TD>
<TD width="59%"><INPUT size=35 name=fiop> </TD>
</TR>
<TR>
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>Пол
пациента<FONT color=#ff0000>*</FONT><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>:</FONT></FONT></TD>
<TD> <INPUT size=35 name=pol></TD>
</TR>
<TR>
<TD><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>Возраст
пациента<FONT color=#ff0000>*</FONT>:</FONT></TD>
<TD> <INPUT size=35 name=year></TD>
</TR>
<TR>
<TD height="44"><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>ФИО
доверенного лица (в случае, если консультация организуется через
него):</FONT></TD>
<TD> <INPUT size=35 name=fiod></TD>
</TR>
<TR>
<TD height="51"><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>Полный
почтовый адрес (с индексом) пациента или доверенного лица<FONT color=#ff0000>*</FONT>:</FONT></TD>
<TD> <INPUT size=35 name=pochta></TD>
</TR>
<TR>
<TD height="47"><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>Контактный
телефон пациента или доверенного лица<FONT color=#ff0000>*</FONT>:</FONT></TD>
<TD> <INPUT size=35 name=tel></TD>
</TR>
<TR>
<TD height="46"><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>Адрес
электронной почты пациента или доверенного лица<FONT color=#ff0000>*</FONT>:</FONT></TD>
<TD> <INPUT size=35 name=email></TD>
</TR>
<TR>
<TD height="46"><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>Прикрепить результаты<FONT color=#ff0000>*</FONT>:</FONT></TD>
<TD><input type="hidden" name="MAX_FILE_SIZE" alue="1024000">
<input name="vlog" type="file"></TD>
</TR>
<TR>
<TD height="46"><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#332f2f size=-1>Дополнительная
информация<FONT color=#ff0000>*</FONT>:</font></TD>
<TD><textarea name="text" cols="45" rows="10" ></textarea></TD>
</TR>
</TABLE>
</form>
|
А вот и он, возможно там много лишнего, но я беспонятия что с этим делать, просьба разобраться.
<?php
$fiop = trim ($fiop);
$fiod = trim ($fiod);
$email = trim ($email);
$pol = trim ($pol);
$year = trim ($year);
$pochta = trim ($pochta);
$money = trim ($money);
$tel = trim ($tel);
switch($select)
{
case "diag":
echo '<p>Уточнения диагноза и предоставления рекомендаций по лечению профильных патологий</p>';
break;
case "org":
echo '<p>По вопросам организации диагностики и лечения</p>';
break;
case "money":
echo '<p>По вопросам оплаты диагностики и лечения</p>';
break;
}
$_POST['fiop'] = htmlspecialchars(stripslashes($_POST['fiop']));
$_POST['fiod'] = htmlspecialchars(stripslashes($_POST['fiod']));
$_POST['email'] = htmlspecialchars(stripslashes($_POST['email']));
$_POST['pol'] = htmlspecialchars(stripslashes($_POST['pol']));
$_POST['year'] = htmlspecialchars(stripslashes($_POST['year']));
$_POST['pochta'] = htmlspecialchars(stripslashes($_POST['pochta']));
$_POST['money'] = htmlspecialchars(stripslashes($_POST['money']));
$_POST['tel'] = htmlspecialchars(stripslashes($_POST['tel']));
$picture = "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['vlog']['tmp_name']))
{
// Закачиваем файл
$path = $_FILES['vlog']['name'];
if (copy($_FILES['vlog']['tmp_name'], $path)) $picture = $path;
}
$fiop =$HTTP_POST_VARS['fiop'];
$fiod =$HTTP_POST_VARS['fiod'];
$email=$HTTP_POST_VARS['email'];
$pol =$HTTP_POST_VARS['pol'];
$year=$HTTP_POST_VARS['year'];
$pochta=$HTTP_POST_VARS['pochta'];
$money=$HTTP_POST_VARS['money'];
$tel=$HTTP_POST_VARS['tel'];
// Отправляем почтовое сообщение
$headers = "From: niito@mail.ru";
$subject = 'Консультация online: '.$select. "\n";
$mailcontent = 'ФИО пациента: ' .$fiop. "\n"
.'Пол пациента: ' .$pol."\n"
.'Возраст пациента: ' .$year."\n"
.'ФИО доверенного лица: '.$fiod."\n"
.'Почтовый адрес: ' .$pochta."\n"
.'Контактный телефон пациента: ' .$tel."\n"
.'E-mail: ' .$email."\n";
$to= "ad_mexture@mail.ru";
if(empty($picture)) mail($to, $subject, $mailcontent);
else send_mail($to, $subject, $mailcontent, $picture);
// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($subject, $html, $path)
{
$fp = fopen($path,"r");
if (!$fp)
{
print "Файл $path не может быть прочитан";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
$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 = "--$boundary\n";
$message_part .= "Content-Type: application/octet-stream\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 .= $message_part."--$boundary--\n";
if(!mail($to, $subject, $multipart, $headers))
{
echo "К сожалению, письмо не отправлено";
exit();
}
}
print("<font face='Verdana, Arial, Helvetica, sans-serif' color=#332f2f size=-1><div align='center'><b>Спасибо!<br><br>Ваша сообшение отправленно.</b></div></font>");
?>
|
Спаисбо. | |
|
|
|
|
автор: cheops (из кафе) (18.04.2006 в 13:45) |
|
|
для: ADmexture
(18.04.2006 в 12:44)
| | Если вам не надоели ещё примеры, посмотрите пожалуйста скрипт http://www.softtime.ru/scripts/mailattach.php - он 100% рабочий... | |
|
|
|
|
|
|
|
для: cheops (из кафе)
(18.04.2006 в 13:45)
| | Я его смотрел, только что попробовал:
При отправке пишет: Введите адрес получателя.
Ну вы конечно понимаете, что адрес я ввожу :)
В чем же все таки дело? | |
|
|
|
|
|
|
|
для: ADmexture
(18.04.2006 в 14:01)
| | Хм... а вы HTML-форму не меняете? | |
|
|
|
|
|
|
|
для: cheops (из кафе)
(18.04.2006 в 13:45)
| | А еще есть примеры? можно в студию? так как тут только картинка, а я к примеру хочу разные файлы цеплять.
Нашел тут класс один, на деневере работает, а на сервере никак не может отправить. и скрипт вешается. ошибки в логах не пишутся, видать из за несовместимости версий. Та как класс написан для 5 php, а стоит четвертый. | |
|
|
|
|
|
|
|
для: ADmexture
(18.04.2006 в 12:44)
| | http://softtime.ru/forum/files/17812-20060525012636.txt - тут немного переработаный скрипт, но тоже работоспособный. Скорее всего из него вырастет довольно скоро целый скрипт-модуль. | |
|
|
|
|
|
|
|
для: Jura
(25.05.2006 в 11:03)
| | Вот рабочий скрипт, остаётся только написать мыло и какой файл аттачится-в нижнеё части
<?php
class mime_mail {
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;
// создаем класс
function mime_mail() {
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
}
// как раз сама функция добавления файлов в мыло
function add_attachment($message, $name = "", $ctype = "application/octet-stream") {
$this->parts [] = array (
"ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name
);
}
// Построение сообщения (multipart)
function build_message($part) {
$message = $part["message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part["ctype"].($part["name"]? "; name = \"".$part["name"]."\"" : "")."\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}
function build_multipart() {
$boundary = "b".md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";
for($i = sizeof($this->parts)-1; $i>=0; $i--) $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
return $multipart.= "--\n";
}
// Посылка сообщения, последняя вызываемая функция класса
function send() {
$mime = "";
if (!empty($this->from)) $mime .= "From: ".$this->from. "\n";
if (!empty($this->headers)) $mime .= $this->headers. "\n";
if (!empty($this->body)) $this->add_attachment($this->body, "", "text/plain");
$mime .= "MIME-Version: 1.0\n".$this->build_multipart();
mail($this->to, $this->subject, "", $mime);
}
}
//Вот и все, привожу пример использования класа:
$attachment = fread(fopen("Ваш файл с путём к нему", "r"), filesize("Ваш файл с путём к нему"));
$mail = new mime_mail();
$mail->from = "мыло с которого отправляется ";
$mail->to = "Кому отправляется мыло";
$mail->subject = "тема письма";
$mail->body = " тело сообщения";
$mail->add_attachment("$attachment", "имя файла без пути", "Content-Transfer-Encoding: base64");
$mail->send();
?> | |
|
|
|
|
|
|
|
для: kadet_73
(25.05.2006 в 11:20)
| | Люди, подскажите плиз! А как можно сделать так, чтобы я к примеру давал только html код в скрипт аттача, а затем он его парсил и прикреплял мультипартами.
Это парсить надо? полученный код? или как это реализовать? | |
|
|
|
|
|
|
|
для: ADmexture
(18.04.2006 в 12:44)
| | Ошибка в строке 52 первого файла!
<TD><input type="hidden" name="MAX_FILE_SIZE" alue="1024000">
|
Должно быть
<TD><input type="hidden" name="MAX_FILE_SIZE" value="1024000">
|
И тогда все заработает. ;) | |
|
|
|
|