Здравствуйте! Уважаемые создатели форума - у вас отличный форум, но сделайте пожалуйста больше букв в Теме сообщения писать - неудобно очень если честно, понятно не опишешь тему, слишком теснить приходится, понятно конечно что краткость - сестра таланта, но не до такой же степени.. Большая просьба помочь, наверняка многие сталкивались с такой проблеммой как у меня: 1) Прикреплённый файл у меня называется mail.zip (архив, содержит файл mail.php, в котором русский и английский текст). Он прикрепляетсяи отправляется нормально и доходит, но уже с ругим именем, имя каждый раз разное, "скайнэт" сам его придумывает на свой машинный вкус - например такое: attg1m4w.dat - бессмысленное и всегда .dat, что бы не отправлял. При этом содержимое архива полностью нормально доходит (mail.php и текст - всё хорошо (хотя я только на одном почтовике проверял)). 2) русские символы в теме письма не читаются, заменяются на крокозябликов или ещё каких животных. вот код, он вполне рабочий, необходимо только заменить $file_name и $mail_to вверху на ваше, чтобы он выполнился. PHP: <?php $file_name = "mail.zip"; $theme = "ThemeMy (Тема)"; $msg = "Сообщение (Subject)"; $mail_to = "somemail@somname.ru"; // Отправляем почтовое сообщение send_mail($mail_to, $theme, $msg, $file_name); // Вспомогательная функция для отправки почтового сообщения с вложением function send_mail($to, $theme, $messtxt, $fname) { $fp = fopen($fname,"r"); if (!$fp) { print "Файл $fname не может быть прочитан"; exit(); } $file = fread($fp, filesize($fname)); fclose($fp); $boundary = "--".md5(uniqid(time())); // генерируем разделитель $headers .= "MIME-Version: 1.0\n"; $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n"; $multipart .= "--$boundary\n"; $kod = 'windows-1251'; // или $kod = 'koi8-r'; $thm = $theme; $multipart .= "Content-Type: text/plain; charset=$kod\n"; $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n"; $multipart .= "$messtxt\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 = \"".$fname."\"\n\n"; $message_part .= chunk_split(base64_encode($file))."\n"; $multipart .= $message_part."--$boundary--\n"; if(!mail($to, $thm, $multipart, $headers)) { echo "Письмо не отправилось"; exit(); } } ?>
3)Честно говоря ещё одна проблеммка обнаружилась - почему-то не приходит на Mail.ru, yandex.ru, hotmail.com, gmail.com только на мою почту (установленную в организации, где работаю) подскажите пожалуйста, что я делаю нетак!
а почему так? Что в серверах бывает не так? может какие-то настройки? странно то что в папку "Спам" на этих серверах оно тоже не попадает.
Скачай phpmailer и не парься. Там есть возможность подключиться к smtp серверу. Прочесть кодировку, принимаемую сервером, затем установить такой же тип соединения и данных. Затем только отправлять.
крокожаблики вместо русских букв Здравствуйте! до бесплатных серверов не доходит, но это дело действительно в сервере, с которого посылаю. удалось запустить phpmailer под php4 (который у нас стоит) - хорошо отправляет, только неизвестных животных (крокожаб, крокозябликов и т.п.) вместо русских букв пишет, пока не знаю как с этим справиться. Хотя phpmailer хвалят за то что он умеет определять кодировку на сервере получателе, а потом отправляет письмо... но у меня он почему-то не сумел. Вы не знаете, как phpmailer относится к русскому тексту?
Так же как и к любому другому. для него это набор байт. Вы письмо шлете в формате HTML или plain text ?
имел в виду может ли phpmailer отправлять письма на русском читаемые, чтобы там нигде не было проблем с кодировкой. и если может, то сам он это делает или надо настроить? или использовать какие-то функции в нём, которые отвечают за передачу русского текста, может какой то модуль к программе надо подключать? просто очень хвалят пакет, а у меня с русским текстом какие-то сложности. .. и в html-формате и с простым текстом.
По поводу читаемости русского. мин. проблемный код: (только не знаю... если у вас есть phpmailer, то вы сможете его запустить, если положите в папку examples phpmailera) вообще-то он там уже есть, этот код я из этой папки и взял - тестовый phpmailer-овский. PHP: <?php include_once('../class.phpmailer.php'); $mail = new PHPMailer(); // defaults to using php "mail()" $body = $mail->getFile('contents.html'); $body = eregi_replace("[\]",'',$body); $body .= "<br><br>"."Привет! Как дела?"; $mail->From = "name@yourdomain.com"; $mail->FromName = "First Last"; $mail->Subject = "от Сергея - Привет!"; $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test $mail->MsgHTML($body); $mail->AddAddress("whoto@otherdomain.com", "John Doe"); $mail->AddAttachment("images/phpmailer.gif"); // attachment if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } ?> [/php]
contents.html - доходит и отображается нормально, там всё по английски. русский текст плохо: $body .= "<br><br>"."Привет! Как дела?"; а в contents.html такой код: HTML: <body background="images/bkgrnd.gif" style="margin: 0px;"> <div style="width: 640px; font-family: Arial, Helvetica, sans-serif; font-size: 11px;"> <div align="center"><img src="images/phpmailer.gif" style="height: 90px; width: 340px"></div><br> <br> This is a test of PHPMailer v2.0.0 rc1.<br> <br> This particular example uses <strong>HTML</strong>, with a <div> tag and inline<br> styles.<br> <br> Also note the use of the PHPMailer at the top with no specific code to handle including it in the body of the email.</div> </body> по поводу кодировки прочитал что там есть файлы в phpmailer в каталоге language в частности файл phpmailer.lang-ru.php его нужно как-то подключить... Попробую сейчас с этим разобраться.
спасибо всё верно, теперь в теле письма русский текст читается, а в теме письма стал читаться когда настроил параметр в phpmailer-е: там п.у. стоял $CharSet = 'iso-8859-1'; переопределил его $mail = new PHPMailer(); ... $mail->CharSet = "windows-1251"; теперь в теме нормально (правда ещё не проверял на бесплатных серверах, может там с кодировками ещё что-то будет).