Здравствуйте, есть простейший код отправки письма, который после регистрации отправляет пользователю ссылку на подтверждение. Но он почему то работает только если файл, в котором размещен код отправки, сохраненн в кодировке ANSI , если же сохранить файл в utf-8 то письмо просто не доходит, хотя функция mail возвращаяет true... Пробывал любой код, везде одинаковый результат, вот последний: Код (Text): function USendMail( $from, $to, $subject, $text) { $un = strtoupper(uniqid(time())); $head = "From: $from\n"; $head .= "To: $to\n"; $head .= "Subject: $subject\n"; $head .= "X-Mailer: PHPMail Tool\n"; $head .= "Reply-To: $from\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type:multipart/mixed;"; $head .= "boundary=\"----------".$un."\"\n\n"; $mes = "------------".$un."\nContent-Type:text/html;\n"; $mes .= $text; if (!@mail("$to", "$subj", $mes, $head)){ return 0;} else { return 1; } } $host=$_SERVER['HTTP_HOST']; $to = $mail ; $msg='<p>123456</p> <p><a href="http://'.$host.'?chk='.$code.'">http://'.$host.'/?chk='.$code.'</a></p> '; USendMail('admin@mail.com.ua',$to,'User validate',$msg); Это был код для отправки письма с аттачментом, я его немного видоизменил... Может че выпилил ненароком... Но вроде должен работать...
вот весь код: Код (Text): $code=md5($login.$mail); function USendMail( $from, $to, $subject, $text) { $un = strtoupper(uniqid(time())); $head = "From: $from\n"; $head .= "To: $to\n"; $head .= "Subject: $subject\n"; $head .= "X-Mailer: PHPMail Tool\n"; $head .= "Reply-To: $from\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type:multipart/mixed;"; $head .= "boundary=\"----------".$un."\"\n\n"; $mes = "------------".$un."\nContent-Type:text/html;\n"; $mes .= $text; if (!@mail("$to", "$subj", $mes, $head)){ return 0;} else { return 1; } } $msg='<p>123456</p> <p><a href="http://'.$host.'?chk='.$code.'">http://'.$host.'/?chk='.$code.'</a></p> '; USendMail('admin@mail.com.ua',somemail@mail.ru','User validate',$msg); Пробывал такой еще код, результат одинаковый..Если в теле есть либо код хтмл, либо хоть одна русская буква - не отправляет( Код (Text): $host=$_SERVER['HTTP_HOST']; $to = $mail; $subject="Подверждение регистрации"; $header="Content-type: text/plain; charset=\"utf-8\""; $headers .= "From: \"admin@555.com.ua\"\r\n"; $header.="Subject: $subject"; $header.="Content-type: text/plain; charset=\"utf-8\""; $msg=' <html> <head> <title>Письмо</title> </head> <body> <p>Для завершения регистрации перейдите по ссылке ниже</p> <p><a href="http://'.$host.'?chk='.$code.'">http://'.$host.'/?chk='.$code.'</a></p> </body> </html>'; if (mail($to, $subject, $msg, $header)) echo('good'); else echo('bed'); igordata Там вроде только хтмл передается... Подскажите какой код будит отправлять 100% в utf-8...
попробуй Код (PHP): <?php function XMail( $from, $to, $subj, $text, $filename) { $f = fopen($filename,"rb"); $un = strtoupper(uniqid(time())); $head = "From: $from\n"; $head .= "To: $to\n"; $head .= "Subject: $subj\n"; $head .= "X-Mailer: PHPMail Tool\n"; $head .= "Reply-To: $from\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type:multipart/mixed;"; $head .= "boundary=\"----------".$un."\"\n\n"; $zag = "------------".$un."\nContent-Type:text/html;\n"; $zag .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n"; $zag .= "------------".$un."\n"; $zag .= "Content-Type: application/octet-stream;"; $zag .= "name=\"".basename($filename)."\"\n"; $zag .= "Content-Transfer-Encoding:base64\n"; $zag .= "Content-Disposition:attachment;"; $zag .= "filename=\"".basename($filename)."\"\n\n"; $zag .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n"; return @mail("$to", "$subj", $zag, $head); } ?>
igordata Мне не нужно отправлять файл, только хтмл Добавлено спустя 11 минут 29 секунд: igordata Ваш код отправляет, но, если в тексте есть хоть один хтмл тег, то нерботает( Код (Text): function XMail( $from, $to, $subj, $text) { $un = strtoupper(uniqid(time())); $head = "From: $from\n"; $head .= "To: $to\n"; $head .= "Subject: $subj\n"; $head .= "X-Mailer: PHPMail Tool\n"; $head .= "Reply-To: $from\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type:multipart/mixed;"; $head .= "boundary=\"----------".$un."\"\n\n"; $zag = "------------".$un."\nContent-Type:text/html; charset=\"utf-8\"\n"; $zag .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n"; $zag .= "------------".$un."\n"; $zag .= "Content-Type: application/octet-stream;"; return @mail("$to", "$subj", $zag, $head); } XMail('admin@site.com.ua',$to,'проверка','тест<p>11</p>');
суть в том, что тебе надо бы тело закодировать, т.к. юникод подразумевает возможность наличия всяких непечатных символов, которые могут портить жизнь как раз в таких ситуациях.
igordata Но тот код, который вы мне дали, отпарвлял почту с аттачментом. что в моем случае ненужно, я его подправил... Может что то нужное порезал? Как закодировать тело письма? Добавлено спустя 56 минут 15 секунд: Решил такой функой, может кому поможет