// в Win32, то письмо не посылается, а создается отладочный файл,
// в котором будет содержаться текст письма.
// Письмо должно состоять из заголовков и тела, разделенных
// маркером ~StartOfMail.
function SendMail($to,$msg,$encTo=DefaultCode,$encFrom=DefaultCode)
{ global $CoderCharset;
// Перекодируем
$msg=EncodeString($msg,$encTo,$encFrom); // тело письма
$head=""; // заголовки
// Если есть заголовки, выделяем их.
if(strpos($msg,MailDivider)!==false) {
$regs=split(MailDivider."\r?\n?",$msg,2); // тело и заголовки
$head=trim($regs[0]);
$msg=$regs[1];
}
// Работаем с заголовками. Разбиваем их на строки.
if($head) $Lines=split("[\r\n]+",$head); else $Lines=array();
$HasContType=0; // число найденных заголовков Content-type
$chs="charset=$CoderCharset[$encTo]";
$subject="";
for($i=0; $i<count($Lines); $i++) {
$l=&$Lines[$i];
// Проставляем текущую кодировку у письма. Для этого
// проверяем, задан ли в нем заголовок Content-type и,
// если задан, то модифицируем его, а если нет —
// добавляем этот заголовок в начало и конец письма.
if(eregi("^Content-type:",$l)) {
if(eregi("charset *=",$l))
$l=eregi_Replace("charset *= *[^;,\n]+",$chs,$l);
else
$l.="; $chs";
$HasContType++;
}
// Проверяем значение поля "to" в письме — там может быть имя
// получателя. В этом случае добавляем к нему еще и адрес.
if(eregi("^to:([^\r\n]*)",$l,$regs)) {
$to=trim($regs[1])." <$to>";
$l="";
}
// Проверяем заголовок Subject. В некоторых верcиях PHP
// передача пустого второго параметра в функцию mail()
// приводит к нежелательным последствиям. Указывая в заголовке
// значение Subject из письма, мы решаем проблему.
if(eregi("^subject:([^\r\n]*)",$l,$regs)) {