больше ничего не трогал, честно!!! вот файл с формой: Код (Text): <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form action="sendmail.php" method="POST" data-enhance="false" /> <div class="groupBox"> <ul> <li> <input type="text" placeholder="Name" required name="contactName" id="contactName" /> </li> <li> <input type="email" placeholder="Email" required name="contactEmail" id="contactEmail" /> </li> <li> <input type="tel" placeholder="Phone" name="contactPhone" id="contactPhone" /> </li> <li> <textarea placeholder="Message" required name="contactMessage" id="contactMessage"></textarea> </li> </ul> <input type="submit" class="button buttonStrong right" value="Отправить" name="buttonSubmit" value="submit" /> <div class="clearfix"></div> </div> <!-- end group box --> </form> <script src="js/script.js"></script> </body> </html> вот файл script.js: Код (Text): $(document).ready(function(){ //hide address bar if content is long (safari) //MBP.hideUrlBarOnLoad(); var myScroll; var runFlexsliders = function(){ //run sliders if they're not run already var winWidth = $('#container').outerWidth(); var paddingPercent = (winWidth *2)/100; var marginPercent = (winWidth*22)/100; var availableWidth = winWidth - marginPercent; var perItemWidth = (availableWidth / 3);// - paddingPercent; $('.flexslider').each(function(){ if ($(this).hasClass('pagesMenu')){ $(this, ':not(.flexslidered)').addClass("flexslidered").flexslider({ animation: "slide", controlNav: false, directionNav: true, slideshow: false, animationLoop: false, itemWidth: perItemWidth }); } else{ $(this, ':not(.flexslidered)').addClass("flexslidered").flexslider({ animation: "slide", controlNav: false, directionNav: true }); } }); } var App = { init: function() { this.ENTER_KEY = 13; this.$duration = 700; //hide splash setTimeout(function(){ $('#splash').fadeOut('1000'); }, 2000); runFlexsliders(); if ($('#pivotTabs').length> 0) { myScroll = new iScroll('pivotTabs', { snap: 'li', momentum: true, hScrollbar: false, vScrollbar: false }); } this.Forms.bind(); this.createAndCacheElements(); this.bindEvents(); $('li:last-child').addClass('last'); $('li:first-child').addClass('first'); var tabs = this.$tabs; $(tabs).find('li:first-child a').trigger('click'); //portfolio - instruction - tap to change if ($('#pagePortfolio').length > 0){ $('.instruction').fadeIn(App.duration); var options = {}; $('.portfolioProjects a.thumb:not(.photoswiped)').addClass('photoswiped').photoSwipe(options); $('#pagePortfolio .tab').hide(); $('#pagePortfolio .tabsPortfolio li:nth-child(2) a').trigger('click'); $(window).load(function(){ setTimeout(function(){ $(".list a.thumb iframe").height($(".list a.thumb img").height()); }, 1000); }); } //run the map App.refreshMaps(); }, createAndCacheElements:function(){ this.$tabs = $('#pivotTabs'); }, bindEvents: function(){ var me = this; $('.page').each(function(){ if($(this).hasClass('bound')){ return; } $('.page').addClass('bound'); var tabs = me.$tabs; tabs.on('click', 'li a', me.enablePivotTab); $('.tabsPortfolio').on('click', 'li a', me.portfolioTabChange) //if has website link, don't show the gallery $('.portfolioProjects').on('click', 'li', function(){ if ($(this).find('a.website').length == 0){ $(this).find('a.thumb').trigger('click'); } }); $('.menuButton').click(function(e){ e.preventDefault(); if ($(this).hasClass('open')){ $(this).removeClass('open'); $('.upperMenu .pagesMenu').animate({ opacity: 0 }, function(){ $('.upperMenu').removeClass('opened'); }); } else{ $(this).addClass('open'); //we give a delay of 300 because our CSS3 transitions are timed at 0.3s for the menu button (the up arrow) to rotate. setTimeout(function(){ $('.upperMenu').addClass('opened'); $('.upperMenu .pagesMenu').animate({ opacity: 1 }); }, 300); } }); }); }, portfolioTabChange: function(e){ e.preventDefault(); if ($(this).hasClass('active')){ return; } $('.tabsPortfolio li a').removeClass('active'); $(this).addClass('active'); var classToAdd = $(this).attr('data-value'); $('.portfolioProjects').show().animate({ 'opacity': 0 }, 200, function(){ var me = $(this); if (classToAdd == "grid"){ $('.instruction').addClass('lefter'); } else{ $('.instruction').removeClass('lefter'); } $(me).removeClass('list grid').addClass(classToAdd).animate({ 'opacity': 1 }, 200); }); }, enablePivotTab: function(e){ e.preventDefault(); if ($(this).hasClass('active')){ return; } var me = $(this); if ($(this).hasClass('goToFirst')){ $(this).parents('ul').find('li:first-child a').trigger('click'); return false; } var myLi = $(this).parent(); var myLiIndex = $(myLi).index() + 1; var activeIndex = $('#pivotTabs a.active').parent().index() + 1; var direction1 = "left"; var direction2 = "right"; if (myLiIndex > activeIndex){ direction1 = "left"; direction2 = "right"; } else{ direction1 = "right"; direction2 = "left"; } $(this).parents('ul').find('a').removeClass('active'); $(this).addClass('active'); //scroll all tabs and contents myScroll.scrollToElement('li:nth-child(' + myLiIndex + ')', 200); $('.pivotTab').slideUp(App.duration); var targetDiv = $(me).attr('data-value'); $(targetDiv).slideDown(App.duration, function(){ if ($(targetDiv).find('.map').length > 0){ App.refreshMaps(); } }); }, refreshMaps: function(){ $('.map').each(function(){ var me = $(this); var locationTitle = $(this).attr('data-location'); var myId = $(me).attr('id'); var geocoder = new google.maps.Geocoder(); geocoder.geocode({ address: locationTitle }, function(locResult) { var latVal = locResult[0].geometry.location.lat(); var longVal = locResult[0].geometry.location.lng(); App.initializeMap(myId, locationTitle, latVal, longVal); }); }); }, initializeMap: function(locationVal, titleVal, latVal, longVal) { var latlng = new google.maps.LatLng(latVal, longVal); var settings = { zoom: 13, center: latlng, mapTypeControl: false, mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, navigationControl: false, navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL}, streetViewControl: false, zoomControl: true, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById(locationVal), settings); var nibrasPos= new google.maps.LatLng(latVal, longVal); var nibrasMarker = new google.maps.Marker({ position: nibrasPos, map: map, title:titleVal }); }, Forms: { bind: function() { // Add required class to inputs $(':input[required]').addClass('required'); // Block submit if there are invalid classes found $('form:not(.html5enhanced)').addClass("html5enhanced").submit(function() { var formEl = this; $('input,textarea').each(function() { App.Forms.validate(this); }); if(($(this).find(".invalid").length) == 0){ // Delete all placeholder text $('input,textarea').each(function() { if($(this).val() == $(this).attr('placeholder')) $(this).val(''); }); //now submit form via ajax $.ajax({ url: $(formEl).attr("action"), type: $(formEl).attr("method"), data: $(formEl).serialize(), success: function(r) { $(".successMessage").slideDown('fast'); $('html,body').stop().animate({ scrollTop: $(".successMessage").offset().top - 30 }, 300); $(formEl).find('input[type="text"], input[type="email"], input[type="tel"], select').val(''); $(formEl).find('textarea').val(''); setTimeout(function(){ $(".successMessage").slideUp('fast'); }, 4000); } }) return false; }else{ return false; } }); }, is_email: function(value){ return (/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])(([a-z0-9-])*([a-z0-9]))+(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/).test(value); }, is_url: function(value){ return (/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i).test(value); }, is_number: function(value){ return (typeof(value) === 'number' || typeof(value) === 'string') && value !== '' && !isNaN(value); }, validate: function(element) { var $$ = $(element); var validator = element.getAttribute('type'); // Using pure javascript because jQuery always returns text in none HTML5 browsers var valid = true; var apply_class_to = $$; var required = element.getAttribute('required') == null ? false : true; switch(validator){ case 'email': valid = App.Forms.is_email($$.val()); break; case 'url': valid = App.Forms.is_url($$.val()); break; case 'number': valid = App.Forms.is_number($$.val()); break; } // Extra required validation if(valid && required && $$.val().replace($$.attr('placeholder'), '') == ''){ valid = false; } // Set input to valid of invalid if(valid || (!required && $$.val() == '')){ apply_class_to.removeClass('invalid'); apply_class_to.addClass('valid'); return true; }else{ apply_class_to.removeClass('valid'); apply_class_to.addClass('invalid'); return false; } } } }; App.init(); var pageChange = function(){ App.init(); } //this is needed because we are enabling navigation via jQuery Mobile. //for each time a new page is loaded, the javascript is not run on itself. //Hence, we call the application initialize method assuming that all javascript has to be run, since the entire page content is changed. //to disable the jquery ajax navigation system, please refer to the footer area where the $.mobile.xyz default parameters are set. $(document).bind('pagechange', pageChange); }); и вот файл sendmail.php: Код (Text): <?php $to = 'мой@адрес.ru'; $subject = 'Письмо с мобильного сайта'; $name = substr( $_POST['contactName'], 0, 64 ); $email = substr( $_POST['contactEmail'], 0, 64 ); $phone = substr( $_POST['contactPhone'], 0, 11 ); $message = substr( $_POST['contactMessage'], 0, 250 ); $body = "Имя: ".$name."\r\n\r\n"; $body .= "Телефон: ".$phone."\r\n\r\n"; $body .= "E-Mail: ".$email."\r\n\r\n"; $body .= "Текст: ".$message; $headers = $headers."MIME-Version: 1.0"; $headers = $headers."Content-Transfer-Encoding: 8bit"; $headers = $headers."Content-Type: text/html; charset=utf-8"; $headers = "From: Мобильный сайт <mobile.мойсайт.ru>\r\n"; $headers = $headers."Return-path: <".$email.">\r\n"; mail($to, $subject, $body, $headers); ?> попробуйте у себя проверить. если есть ошибки, прошу исправьте сразу их, а то мне их искать дооооооооооооооолго придется... голова вообще не соображает уже. к тому же сами время свое сэкономите
вот это $body = Код (Text): "Имя: ".$name."\r\n\r\n"; $body .= "Телефон: ".$phone."\r\n\r\n"; $body .= "E-Mail: ".$email."\r\n\r\n"; $body .= "Текст: ".$message; не будет работать при этом Код (Text): "Content-Type: text/html; charset=utf-8"; - слепит все в одну строку. про двойное окончание строки - читайте RFC по электронной почте и поймете почему так делать нельзя. в коде формирования письма много логических ошибок, которые формируют некорректное письмо. у меня (с исправлением логики) письмо нормально отправляется и читается. по поводу вин под юникодом - вы все же должны сами проконтролировать процесс общения сервера с браузером и на каждом этапе проверить используемую кодировку. я давно на юникоде сижу и знаю что где поправить в случае неожиданностей. в вашем случае был просвет при котором достаточно было сменить кодировку скрипта формирования письма. но пока вы ковыряли вы что-то убили и теперь скорее вам везде cp1251 проще выставить Добавлено спустя 1 минуту 23 секунды: и да, enhanced
возможно что-то и убил, но при установки кодировки (везде) на windows-1251, письмо все равно не корректно отображается( напишите ваш вариант, а лучше полностью пхп-файл (рабочий). дело в том, что мне не в лом, но я в этом пхп вообще ноль полнейший и беру готовые варианты в инете и переделываю их. но в этот раз я попал в ступор и не знаю что делать.
прочитайте внимательно свой листинг, построчно. прикиньте что в какой переменной находится на каждом этапе исполнения каждой строки. почему я за вас должен дебаг делать? вы что-то написали. работает не так. вместо того чтоб провести нормальную отладку вы сразу бежите на форум. и тут с вас спросят что не так. а в ответ - "не работает ничего". мы-то откуда знаем что вы ждете и что имеете?
напишите как у вас? Добавлено спустя 1 минуту 4 секунды: если бы я знал так хорошо php, то не стал бы обращаться за помощью на форумы.
а что мешает сделать вот так? Код (Text): var_dump( $to, $subject, $body, $headers, $_POST, mail($to, $subject, $body, $headers));
аналогично все! опять знаки вопроса, ничего не поменялось. я поменял эту строку в коде: Код (Text): <?php $to = 'мой@адрес.ru'; $subject = 'Письмо с мобильного сайта'; $name = substr( $_POST['contactName'], 0, 64 ); $email = substr( $_POST['contactEmail'], 0, 64 ); $phone = substr( $_POST['contactPhone'], 0, 11 ); $message = substr( $_POST['contactMessage'], 0, 250 ); $body = "Имя: ".$name."\r\n\r\n"; $body .= "Телефон: ".$phone."\r\n\r\n"; $body .= "E-Mail: ".$email."\r\n\r\n"; $body .= "Текст: ".$message; $headers = $headers."MIME-Version: 1.0"; $headers = $headers."Content-Transfer-Encoding: 8bit"; $headers = $headers."Content-Type: text/html; charset=utf-8"; $headers = "From: Мобильный сайт <mobile.мойсайт.ru>\r\n"; $headers = $headers."Return-path: <".$email.">\r\n"; var_dump( $to, $subject, $body, $headers, $_POST, mail($to, $subject, $body, $headers)); ?>
Код (PHP): <form action="send-email.php" method="POST" data-enhance="false" /> <div class="groupBox"> .......................... </div> </form> У формы нет такого "/>" Тег <form>-это же контейнер имеющий закрывающий тег. Код (PHP): <input type="text" placeholder="Name" required name="contactName" id="contactName" /> Вы не используете "xhtml", эта фишка "/>" закрывания, у обычных тегов не контейнеров, у вас DOCTYPE-доктип html5, а не xhtml. =) Попробуйте так: Код (PHP): <?php session_start(); header('Content-type:text/html;charset=utf-8'); $error=''; $title='Отправте сообщение!'; if(isset($_POST['buttonSubmit'])) { if(isset($_POST['contactName'],$_POST['contactEmail'],$_POST['contactMessage'])) { $name = substr( $_POST['contactName'],0,64); $email = substr( $_POST['contactEmail'],0,64); $subject = substr( $_POST['contactPhone'],0,11); $message = substr( $_POST['contactMessage'],0,250); $header="Content-type:text/plain;charset=utf-8\r\n"; $header.="From: ".$email."\r\n"; if(mail($admin,$theme,$body,$header)) { $error='Сообщение успешно отправлено!'; $title=$error; $_SESSION['success']=true; } else { $_SESSION['success']=false; header('Location: '.$_SERVER['PHP_SELF']); exit; } } else { $error='Заполните все поля!'; } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> <?=$title?> </title> </head> <body> <div> Файл скрипта проверки формы на Jquery: http://www29.zippyshare.com/v/43446505/file.html и есть PHP файл отправки письма на почту (send-email.php): </div> <div> <?=$error?> </div> <form method="post" data-enhance="false"> <input type="text" placeholder="Name" required name="contactName" id="contactName"> <input type="email" placeholder="Email" required name="contactEmail" id="contactEmail"> <input type="tel" placeholder="Phone" name="contactPhone" id="contactPhone"> <textarea placeholder="Message" required name="contactMessage" id="contactMessage"></textarea> <input type="submit" class="button buttonStrong right" value="Отправить" name="buttonSubmit" value="submit"> </form> </body> </html> Файл скрипта должен быть сохранен в UTF-8 (без BOM).
вообще ничего не понял!((( форма никуда не отправляется, скрипт не работает поэтому (он не задействован!)
вот же-ж интересно почему? она работает, совершенно не корректно, но работает. полагаю Your специально для вас оставил там ошибки. форма отправляется, письма ходют, но не такие как ожидается.
короче еще раз повторюсь что у меня есть сейчас. вот файл с формой: Код (Text): <!doctype html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Мобильная версия сайта</title> </head> <body> .................. <form action="sendmail.php" method="POST" data-enhance="false"> <div class="groupBox"> <ul> <li> <input type="text" placeholder="Name" required name="contactName" id="contactName"> </li> <li> <input type="email" placeholder="Email" required name="contactEmail" id="contactEmail"> </li> <li> <input type="tel" placeholder="Phone" name="contactPhone" id="contactPhone"> </li> <li> <textarea placeholder="Message" required name="contactMessage" id="contactMessage"></textarea> </li> </ul> <input type="submit" class="button buttonStrong right" value="Отправить" name="buttonSubmit" value="submit"> <div class="clearfix"></div> </div> <!-- end group box --> </form> <script src="js/script.js"></script> ...................... </body> </html> далее файл обработки формы на jquery - script.js (ссылка на него есть выше) и есть файл отправки формы мне на почту - sendmail.php (сохранен в кодировке utf-8): Код (Text): <?php $to = 'мой@адрес.ru'; $subject = 'Мобильная версия сайта'; $name = substr( $_POST['contactName'], 0, 64 ); $email = substr( $_POST['contactEmail'], 0, 64 ); $phone = substr( $_POST['contactPhone'], 0, 11 ); $message = substr( $_POST['contactMessage'], 0, 250 ); $body = "Имя: ".$name."\r\n\r\n"; $body .= "Телефон: ".$phone."\r\n\r\n"; $body .= "E-Mail: ".$email."\r\n\r\n"; $body .= "Текст: ".$message; $headers = $headers."MIME-Version: 1.0"; $headers = $headers."Content-Transfer-Encoding: 8bit"; $headers = $headers."Content-Type: text/html; charset=utf-8"; $headers = "From: <mobile.мойсайт.ru>\r\n"; $headers = $headers."Return-path: <".$email.">\r\n"; var_dump($to, $subject, $body, $headers, $_POST, mail($to, $subject, $body, $headers)); ?> и на сервере почты стоит кодировка utf-8, в итоге письма приходят с заполненными полями на русском языке. а вот заголовки - одни знаки вопроса. кодировку файла с формой ставил на utf-8, все равно одно и тоже - знаки вопроса. короче перепробывал все возможное - ничего не помогает от вопросов. только если поменять заголовки с русского на инглиш, тогда письма корректно отображаются, но на инглише.
Код (Text): Return-Path: <host1268207@serv23.hostland.ru> X-Original-To: мой@адрес.ru Delivered-To: мой@адрес.ru Received: from serv23.hostland.ru (serv23-220.hostland.ru [77.234.200.220]) by mailserver.hostland.ru (Postfix) with ESMTP id DB5A2549C5 for <мой@адрес.ru>; Fri, 8 Feb 2013 09:40:24 +0400 (GMT-4) Received: from localhost.localdomain (unknown [127.0.0.100]) by localhost (Postfix) with ESMTP id 6FDD32E031 for <мой@адрес.ru>; Fri, 8 Feb 2013 09:40:24 +0400 (MSK) Received: by serv23.hostland.ru (Postfix, from userid 2600) id 1237C2E059; Fri, 8 Feb 2013 09:40:24 +0400 (MSK) To: мой@адрес.ru Subject: Mobile.mysite.ru From: <mobile.mysite.ru@serv23.hostland.ru> Message-Id: <20130208054024.1237C2E059@serv23.hostland.ru> Date: Fri, 8 Feb 2013 09:40:24 +0400 (MSK) ???: админ ???????: 123 E-Mail: test@mail.ru ?????: проверка! я тут в коде оставил на инглише запись - Mobile.mysite.ru, а в теге body оставил на русском и вот в результате где были русские буквы, появились знаки "?"
письмо приходит в однобайтной кодировке. с учетом того что в момент составления международных таблиц символов винды еще не существовало - почта чаще всего использует КОИ-8. ваш мта прислал письмо, в котором очевиден русский текст в однобайтной кодировке. так же, судя по "???" вместо "Имя" - остальная часть сообщения, формируемая скриптом - так же в однобайтной кодировке, но не в той, в которой приходят данные от пользователя. следовательно, у вас начиная с этапа "нажали кнопку отправки" начинается какая-то карусель с кодировками. например еще потому что форма у вас подписана метатегом с кодировкой cp1251. не удивлюсь, если в заголовках обмена еще что-нибудь указано интересное.
короче говоря надо попробывать с кодировкой KOI-8 да? т.е. файл отправки формы (sendmail.php) сохранить в КОИ-8 и на сервере почты выставить эту кодировку? Добавлено спустя 1 минуту 38 секунд: в метатегах, вы имеете ввиду?
нет. для начала проконтролировать кодировки. от запроса формы до получения письма. Добавлено спустя 1 минуту 33 секунды: нет
давайте, только не особо рассчитывайте на помощь - у меня все настроено как часы и подобных ситуаций возникнуть не может. а если и возникнут - я знаю что где как настроено и куда копать. с вашими скриптами я ведь максимум смогу их кодировку изменить. но исполняться-то они будут в моей "швейцарской" экосистеме.
ну о чем я и говорил... мне было достаточно поправить то о чем я говорил вам еще вчера и генерируемое письмо меня удовлетворяет. вы так и не стали отлаживать ваше приложение, вы так и не поняли что нужно ожидать и почему ваши действия не соответствуют вашим ожиданиям. Код (PHP): <?php $to = 'test@example.com'; $subject = 'Mobile.Example.com'; // из солидарности потер ваши данные $name = substr( $_POST['contactName'], 0, 64 ); $email = substr( $_POST['contactEmail'], 0, 64 ); $phone = substr( $_POST['contactPhone'], 0, 11 ); $message = substr( $_POST['contactMessage'], 0, 250 ); // а что будет если человек просто запустит скрипт? в журналах появится 4 сообщения о несуществующих индексах // а переменные будут пустыми // и вы получите пустое письмо $body = "Имя: ".$name."\r\n\r\n"; $body .= "Телефон: ".$phone."\r\n\r\n"; $body .= "E-Mail: ".$email."\r\n\r\n"; $body .= "Текст: ".$message; // тут - кому было сказано почитать про множественные переводы строк? так не надо делать // вот в этом блоке самая ржака. если бы вы понимали какую строку // ожидаете и в процессе дебага увидели расхождение - проблема была бы решена. $headers = $headers."MIME-Version: 1.0"; // итак: "присвоить хидерс результат конкатенации хидерс со строкой". постойте, какой в жопу хидерс? // ладно, инициализовали пустую строку и прилепили к ней текст. далее. $headers = $headers."Content-Transfer-Encoding: 8bit"; // формулировка как и у действия1. но! результат - я прилепляю заданную строку в ту же строку что и действие1 // с этих пор заголовок невалидный. $headers = $headers."Content-Type: text/html; charset=utf-8"; // формулировка д1, резульат как у д2 // заголовок уже не спасти - он уже такой длинной строкой что напоминает // нитевидный пусль. доктор, сообщите время смерти. // кстати, когда этот заголовок таки сработает - хоть 100500 раз сделай \r\n при формировании $body - будет одна строка. $headers = "From: <test@example.com>\n"; // внезапно! "присвоить хидерсу значение строки с переносом строки". ок, присвоили (новое) значение. $headers = $headers."Return-path: <".$email.">\n"; // "присвоить результат конкатенации", ок, присвоили. // внимание, вопрос! ЧТО БУДЕТ В ПЕРЕМЕННОЙ $headers? ВНИМАНИЕ, ОТВЕТ - 2 СТРОКИ С From И Return-path var_dump($to, $subject, $body, $headers, $_POST, mail($to, $subject, $body, $headers)); // эту строку можно выкинуть на помойку, так как вы все равно не стали читать что она выводит ?>
ну хорошо, а дальше то что и как исправить? а то вы загадками (для меня) говорите, а готовый исправленный скрипт так и не хотите выложить((( и вам время сэкономили бы и я со спокойной душой ушел бы. понимаю что именно в php-файле отправки скрыта ошибка, но если бы я знал язык программирования, я бы быстрее определился где и что у меня не так, но увы - его не знаю.
Скрипт готовый я вам выложил, полностью рабочий... Проверял лично... Выбросите все и забейте на программирование! Лучший выход для вас. Либо включите мозги и учитесь, а не орите...
ну не выкладываю для вашего же блага - вы обязаны мозги включить для реализации своей задачи. или оплатить, если считаете ситуацию тупиковой и опускаете руки. держите. бесплатно... Код (PHP): <?php $to = 'text@example.com'; $subject = 'Mobile.Example.com'; $name = isset( $_POST['contactName'] ) ? substr( $_POST['contactName'], 0, 64 ) : null; $email = isset( $_POST['contactEmail'] ) ? substr( $_POST['contactEmail'], 0, 64 ) : null; $phone = isset( $_POST['contactPhone'] ) ? substr( $_POST['contactPhone'], 0, 11 ) : null; $message = isset( $_POST['contactMessage'] ) ? substr( $_POST['contactMessage'], 0, 250 ) : null; if( null !== $name && null !== $email && null !== $phone && null !== $message ) { $body = sprintf("<html><body> <dl><dt>Имя</dt><dd>%s</dd></dl> <dl><dt>Телефон</dt><dd>%s</dd></dl> <dl><dt>E-Mail</dt><dd>%s</dd></dl> <dl><dt>Текст</dt><dd>%s</dd></dl> </body></html>" , htmlspecialchars( $name ) , htmlspecialchars( $phone ) , htmlspecialchars( $email ) , nl2br( htmlspecialchars( $message ) ) ); $headers = <<<HDRS From: <text@example.com> Return-path: <{$email}> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/html; charset=utf-8 HDRS; var_dump($to, $subject, $body, $headers, $_POST, mail($to, $subject, $body, $headers)); } ?> по успешной отработке создает письмо с кодом (например): Код (Text): X-Sendmail-Dummy: /usr/sbin/sendmail -t -i To: text@example.com Subject: Mobile.Example.com X-PHP-Originating-Script: 1000:sendmail.php From: <text@example.com> Return-path: <test@example.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/html; charset=utf-8 <html><body> <dl><dt>ааМб</dt><dd>ббаВаА</dd></dl> <dl><dt>аЂаЕаЛаЕбаОаН</dt><dd>бббаМ</dd></dl> <dl><dt>E-Mail</dt><dd>test@example.com</dd></dl> <dl><dt>аЂаЕаКбб</dt><dd>аЙббаПаИбаВаАаПб</dd></dl> </body></html> которое в почтовом клиенте выглядит как: Код (Text): Имя фыва Телефон ячсм E-Mail test@example.com Текст йцупифвапф в последнем случае это не с кодировкой проблемы а кириллица от балды набрана. удачи.