|
|
|
|
<?
class multi_mail
{
var $from;
var $parts;
var $to;
var $headers;
var $body;
function multi_mail()
{
$this -> from = "";
$this -> to = "";
$this -> body = "";
$this -> headers = Array();
$this -> subject = "";
}
function attach_file($file_name = "" ,$file_content,$encoding_type = "application/octet-stream")
{
$this -> headers[] = array(
"name" => $file_name,
"content" => $file_content,
"encode" => $encoding_type
);
}
function build_letter($header)
{
$letter = $header["content"];
if ($header["encode"] != "text/plain"):
$letter = chunk_split(base64_encode($letter));
$encoding = "base64";
else:
$encoding = $header["encode"];
endif;
return "Content-Type: ".$header["encode"].
($header["name"]? ".; name = \"".$header["name"]."\"" : "")."\nContent-Transfer-Encoding: $encoding\n\n$letter\n";
}
function set_multipart_mail()
{
$boundary = 'b'.md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; boundary =$boundary\n\nThis is a MIME encoded letter\n\n--$boundary";
for($step = sizeof($this->headers)-1; $step >=0; $step--)
{
$multipart .= "\n".$this->build_letter($this->headers[$step])."--$boundary";
}
return $multipart .= "--\n";
}
function get_full_message()
{
$mime = "";
if (!empty($this->from)):
$mime .= "From: ".$this->from." \n";
endif;
if (!empty($this->body)):
$this -> attach_file("",$this->body,"text/plain");
$mime .= "MIME-Version: 1.0\n".$this->set_multipart_mail();
endif;
return $mime;
}
function send_mail()
{
$mime = $this -> get_full_message(false);
mail($this->to,$this->subject,"",$mime,$from);
}
}
?>
|
Ответ прокси сервера на єтот скрипт : SMTP server response: 550 Invalid local part of From: webmaster@192.168.0.4 (:) | |
|
|
|
|
|
|
|
для: Deathless
(19.01.2007 в 09:41)
| | настройки сервера Mail не правильные | |
|
|
|
|
|
|
|
для: dert
(19.01.2007 в 10:14)
| | Все под исправил скрипт отправка идет но воть проблема =(((((
вот так выглядит письмо
IME-Version: 1.0
Content-Type: multipart/mixed; boundary =b5b28de73c202c5d09d5267e57d4f0c02
This is a MIME encoded letter
--b5b28de73c202c5d09d5267e57d4f0c02
Content-Type: text/plain
Content-Transfer-Encoding: text/plain
This is a text body. See file in Attachemnt Release C 15
--b5b28de73c202c5d09d5267e57d4f0c02
Content-Type: application/x-zip-compressed.; name = "197900.zip"
Content-Transfer-Encoding: base64
UEsDBBQAAgAIAO6mES/U5RXksgEAAJQCAAAKAAAAcmVhZG1lLnR4dE 1R22rbQBB9F+gfpn6KwVbp
LQ/5G0PcumBj06Y/WFrap0JpP2C83alWWmm8O0pQgkyckZwQv2k 0e86cy18OFYL1B2DZBTSlg/lq
9nEJNUJTYt4ZpKorAG2gCBEs79jXTsjv664 CHaga4DmW2Cr6GgvPpodHCoYCnAkL/KfHcdJvShYO
XMG2sSQQMCoN/kPZxwM4iKiKrntd4yxNvil33Q96kAt9vGXp hnUH0ZNtlMF0R1H745/7O0dgqYhi
3OEiTV5l8EvK0Om+Vwerzx+yzWIDu+DUQMV3Draey5oF0+R1Bj/ziga2keu/DhoAjeBiPAZD3rWu
7qA32KKngVBRbzL4zblVC2BdoFL9ufvnEAj ORl82y/Xs8uVoAs47KLFU2SBYAZE+zNmQ0FgTDpgH
ulUBGqwS5LhzcT9EbCLdpMnbDH6gd09mnoM+9ZYm7zL4HvXQDYu2pVgJPIA0uUb1R6NpWpd jUcNU | |
|
|
|
|
|
|
|
для: Deathless
(19.01.2007 в 11:12)
| | А вы используете SMTP сервер как прямой или альтернативной отправки? и если он используется в локальной сети то в настройках в поле "локальный домен " уберите значение | |
|
|
|
|
|
|
|
для: Deathless
(19.01.2007 в 11:12)
| | Вероятно, в строку "MIME-Version: 1.0" Вы воткнули двойной перевод строки.
Вообще же передавать тело письма в параметре списка заголовков - весьма самонадеянное решение. | |
|
|
|
|
|
|
|
для: Trianon
(19.01.2007 в 13:03)
| | Да и вообще зачем такой огород городить? Вот скрипт проще:
<?
$to="name@mydomen.ru";
$from="from@mydomen.ru";
$subject="helo";
$text="hello people";
$file="newfolder/test.jpg";
sendmsg($to, $subject, $text, $from, $file, $type);
function sendmsg($to, $subject, $text, $from, $file, $type) {
$content = fread(fopen($file,"r"),filesize($file));
$content = chunk_split(base64_encode($content));
$uid = strtoupper(md5(uniqid(time())));
$name = basename($file);
$header = "From: $from\nReply-To: $from\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/mixed; boundary=$uid\n";
$header .= "--$uid\n";
$header .= "Content-Type: text/plain\n";
$header .= "Content-Transfer-Encoding: 8bit\n\n";
$header .= "$text\n";
$header .= "--$uid\n";
$header .= "Content-Type: $type; name=\"$name\"\n";
$header .= "Content-Transfer-Encoding: base64\n";
$header .= "Content-Disposition: attachment; filename=\"$name\"\n\n";
$header .= "$content\n";
$header .= "--$uid--";
mail($to, $subject, "", $header);
return true;
}
?>
|
| |
|
|
|
|
|
|
|
для: dert
(19.01.2007 в 13:11)
| | Ну... он, конечно, стал проще - в том плане, что теперь содержит явную ошибку.
$header .= "Content-Type: multipart/mixed; boundary=$uid\n";
$header .= "--$uid\n";
|
В остальном он отличается слабо. Он точно также передает тео письма пустым. | |
|
|
|
|
|
|
|
для: Trianon
(19.01.2007 в 13:21)
| | Ошибок здесь нет! сам проверял и он работает на хостинге. На локальном сервере ты прав передает тело письма пустым | |
|
|
|
|
|
|
|
для: dert
(19.01.2007 в 13:34)
| | >Ошибок здесь нет! сам проверял и он работает на хостинге. На локальном сервере ты прав передает тело письма пустым
Если это и означает отсутствие ошибок... пожалуй, мне сказать нечего. Ну да ладно, оставим...
Вот Ваш вызов:
mail($to, $subject, "", $header);
|
третий параметр функции mail - тело сообщения - задан у Вас пустой строкой.
Почему в таком разе Вы ожидаете, что письмо придет непустым?! | |
|
|
|
|
|
|
|
для: dert
(19.01.2007 в 13:11)
| | Попробовал скрипт. Да действительно работает только письмо приходт с файлом размером в 0 байт и без сообщения =( | |
|
|
|