|
 17.4 Кб |
|
| Хм...В форуме появились темы про отправку почты!
А я вот с этим не разу не сталкивался и сразу у меня возникло куча вопросов :
1. Что надо чтобы можно было отправлять почту с сервера(нужно ли устанавливать sendmail или что-то подобное)?
2. Зачем нужны mail классы?(выкладываю пример)
3. И достаточно ли одной функции mail() чтобы отправить почту ?
Заранее спасибо! | |
|
|
|
|
|
|
|
для: gwest
(28.04.2005 в 12:07)
| | 1) На сервере должен быть установлен транспортный почтовый агент (например, sendmail, если это UNIX-сервер, обычно он устанавливается сразу).
2) Часто требуется отправлять достаточно сложные почтовые заголовки, а так же вложения, для этого удобно использовать mail-классы, хотя лично я считаю, что без них код получается гораздо нагляденее.
3) Вполне достаточно, с помощью этой функции вы можете отправлять письма любой сложности (с одним или более вложений, в текстовом и HTML-формате). | |
|
|
|
|
|
|
|
для: cheops
(28.04.2005 в 13:09)
| | Тоесть такого кода хватит чтобы отправить письмо с прикрепленным к нему файлом?
<?
include"mail.php";
$path="price.csv";
$mail_msg="Прайс бла-бла-бла"
if(mail($to, $thm, $mail_msg, $path))
{
echo("Прайс выслан!");
}
?>
|
| |
|
|
|
|
|
|
|
для: gwest
(28.04.2005 в 14:17)
| | Нет, для отправки вложения необходимо соответствующим образом оформить тело письма и отослать необходимые почтовые заголовки. В теме по ссылке приводится готовая функция send_mail(), написанная на PHP, выполняющая всю рутинную работу, я думаю она вам подойдёт.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=990 | |
|
|
|
|
|
|
|
для: cheops
(28.04.2005 в 22:12)
| | Я уже смотрел эту тему, но не чего не понял именно поэтому и создал новую тему:
Код подставил а он почемуто не работает, возможно работает толька я этого не вижу!
Работаю с денвером и в текстовом файле где должен записываться пример письма, ни чего не пишется, причем когда писал просто mail() то все писалось. | |
|
|
|
|
|
|
|
для: gwest
(29.04.2005 в 09:59)
| | В денвере стоит не полноценный транспортный агент, а эмулятор - когда вы перенесёте код на хостинг - письма будут отправляться. | |
|
|
|
|
|
|
|
для: cheops
(29.04.2005 в 12:06)
| | Не как не могу разобраться с отправкой:
вот код обработчика:
<?
session_id();
session_start();
include"config.php";
$sid=session_id();
$open = mysql_query("select * from table1, table2 where value>0 and sid='$sid';");
if($open)
{
while($data = mysql_fetch_array($open))
{
$str="$data[id];$data[name_subject];$data[value]\n";
$test=file_exists("$sid.csv");
if($test)
{
$file=fopen("$sid.csv","a");
if($file)
{
fputs($file, $str);
}
fclose($file);
}
else
{
$file=fopen("$sid.csv","w");
if($file)
{
$n="id;товар;кол-во\n";
$str_t="$n$str";
fputs($file, $str_t);
}
fclose($file);
}
}
}
$read=mysql_query("select*from table3 where sid_client='$sid';");
if($read)
{
$row=mysql_fetch_array($read);
$html="Имя заказчика: $row[name]\nТелефон: $row[tel]\nEmail: $row[email]\nICQ: $row[icq]\n";
}
$path=/$sid.csv;
include"mail.php"; //здесь записан адрес отправки и тема письма
function send_mail($to, $thm, $html, $path)
{
$fp = fopen($path,"r");
if (!$fp)
{
print "Файл $path не найден";
exit();
}
$file = fread($fp, filesize($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))
{
$del=unlink("$sid.csv");
echo "Сообщение отправлено";
}
else
{
$del=unlink("$sid.csv");
echo "Сообщение не было отправлено";
}
}
?>
|
Я так понимаю что бы сообщение отправилось нужно вызвать функцию send_mail()
Как это сделать? | |
|
|
|
|
|
|
|
для: Gwest
(02.05.2005 в 11:27)
| | Да необходим вызов, перед строкой
<?php
function send_mail($to, $thm, $html, $path)
?>
|
Напишите следующую строку
<?php
send_mail($to, $thm, $html, $path);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.05.2005 в 12:49)
| | пишет ошибки:
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in ... on line 73
Warning: Missing argument 1 for send_mail() in ... on line 44
Warning: Missing argument 2 for send_mail() in ... on line 44
Warning: Missing argument 3 for send_mail() in ... on line 44
Warning: Missing argument 4 for send_mail() in ... on line 44
line 44<? function send_mail($to, $thm, $html, $path) ?>
line 73<? if(mail($to, $thm, $multipart, $headers)) ?>
|
Возможно, что это из-за не правильных настроек sendmail'a ? | |
|
|
|
|
|
|
|
для: Gwest
(02.05.2005 в 13:30)
| | А в какой строке находится вызов
<?php
send_mail($to, $thm, $html, $path);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.05.2005 в 13:35)
| | В 43 прямо перед:
<?
function send_mail($to, $thm, $html, $path)
?>
|
| |
|
|
|
|
|
|
|
для: Gwest
(02.05.2005 в 13:48)
| | Попробуйте перед вызовом функции проверить переменные $to, $thm, $html, $path - они точно существуют?
<?php
if(!isset($to)) exit("Ошибка");
if(!isset($thm)) exit("Ошибка");
if(!isset($html)) exit("Ошибка");
if(!isset($path)) exit("Ошибка");
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(28.04.2005 в 13:09)
| | Спасибо с этим я разобрался!
Остался один вопрос: если стоит Unix то можно отправлять через sendmail, а если стоит windows?
Помнится как то я настраивал рассылку при помощи sendmail'а в Windows'e, но слишком это хлопотно! | |
|
|
|
|
|
|
|
для: Gwest
(03.05.2005 в 16:18)
| | Хм...Сделал отправку письма через провайдера (все работает)!
Вот только прикрепленный фаил (csv) приходит не полный, всего 2 строки, хотя исходный фаил номальный!
Это может быть из-за этой строки?!
<?
$path=substr($path,12);
?>
|
| |
|
|
|
|