На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU, ANDLL, fatalist
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> The_Bat, ActiveX & JavaScript
    вот в чём проблема: все, кто сталкивался с отправкой данных из формы по e-mail сталкивались, наверное, с тем, что The Bat! с явной неохотой отправляет подобные сообщения, точнее говоря, вообще их не отправляет. На этот случай всплывает в памяти технология ActiveX, но как реализовать вставку определенного текста в код письма не знаю. Может кто подскажет, как обойтись без наворотов в межпрограммном взаимодействии, а если подобного простого пути нет, то может кто-нибудь кинет простенький примерчик с ActiveX на JavaScript
      Все гораздо проще:
      ExpandedWrap disabled
        <a href="mailto:address@domain.com?subject=Тема письма&body=Содержимое сообщения">Текст ссылки</a>

      Это, конечно, если ты используешь mailto, а не серверный скрипт (тогда тебе в серверную часть).
        не всё так гладко - пишу следующую процу:
        ExpandedWrap disabled
           
          function SendOrderNow(th){
              var strMail='mailto:name@domen.ru?subject=The_order&body=';
              var tab=document.getElementById("PostTab");
              for (var i=1; i<tab.rows.length; i++) {
                  var perO='SendZak.ta_'+i+'.value';
                  if (tab.rows[0].cells[2].innerText=='Кол-во') {
                      strMail+=tab.rows[i].cells[1].innerText+' кол-во='+tab.rows[i].cells[2].innerText+' Описание='+eval(perO)+' /n';
                  }
                  else {
                      strMail+=tab.rows[i].cells[1].innerText+' Описание='+eval(perO)+' /n';
                  }
              }
              th.href=strMail;
          }

        так отправляется всякая хренотень: в таблице ведь по-русски написаны слова - он их в href загонять не хочет. Что делать в таком случае?

        P.S.:
        SendZak - форма
        ta_xxx - элемент формы типа textarea
        th - указатель this на ссылку, которой и присваиваем href
        Сообщение отредактировано: Malicious Babai -
          Во-первых, надо указать кодировку (точно так же - &charset=windows-1251).
          Во-вторых, нужна функция типа urlencode() (она есть в PHP, но не знаю, есть ли в JS). Могу ее написать, если в JS ее нет.
            Параметры значение параметров Subject, Body надо брать в кавычки. Твой код мне поднять не удалось, а свой написал - работает.
            [html]
            <script>
            function mail(th) {
            var body = 'Привет! Это пробное письмо';
            var subject = 'Привет, Roman!';
            var to = 'some@wh.ere';

            th.href = 'mailto:' + to + '?Subject="' + subject + '"&Body="' + body + '"';
            }
            </script>

            <a href="#" onclick="mail(this);">Mail Me</a>
            [/html]

            У меня тока The Bat. Под другими не тестил;)
              Malicious Babai, вариант Rom@nych'а работает? Если да, то я могу спать спокойно.

              Попробовал написать urlencode:
              ExpandedWrap disabled
                function CharToHex(c) {
                    var HEX_TABLE = "0123456789ABCDEF";
                    var got = c.charCodeAt(0);
                    var left = 0;
                    var result = "";
                    var result2 = "";
                    left = got % 16;
                    result += HEX_TABLE.charAt(left);  
                    got = Math.floor(got/16);
                    result += HEX_TABLE.charAt(got);
                    for(var cnt = result.length; cnt >= 0; cnt--) result2 += result.charAt(cnt);
                    return result2;
                }
                 
                function str_urlencode(str) {
                    var LAT_TABLE = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
                    var result = "";
                    var c = "";
                    for(var i = 0; i < str.length; i++) {
                        c = str.charAt(i);
                        if((LAT_TABLE.indexOf(c) == -1) && (c != '_') && (c != ' ')) {
                            result += '%' + CharToHex(c);
                        }
                        else {
                            if(c == ' ') result += '+';
                            else result += c;
                        }
                    }
                    return result;
                }

              С обычными кодировками работает. Но с unicode символами - жестокий облом.
                Понимаешь, в чём бяка. Я тоже хотел написать так, но когда я пишу строку
                [html]
                <a href="mailto:some@wh.ere?Subject=Hello%20user&Body=Some%20text">Mail!</a>
                [/html]
                оно тоже не работает. Поэтому - кавычки рулят%)
                  Закрываем тему.
                    Rom@nych, у меня при отправке слова Прювет (заключенного в кавычках) в теле письма помещается вот такая запись: " 2CF0F0FFE0E2EE52F2 ". Думаю согласишься, что выглядит довольно-таки нечитабельно :( (хотя без кавычек и этого нет). Тоже самое происходит при отправке всей таблицы (разница только в результирующем выражении)

                    Trustmaster, я с PHP знаком весьма слабо, но судя по твоему коду я так понял, что urlencode() преобразует кириллицу (и другие нелатинские литеры) к 16-тиричному формату. Я вставляю твою функцию в код и получается такая строка:
                    ExpandedWrap disabled
                       
                      str=str_urlencode(strBody)+'charset=windows-1251';
                      th.href=strMail+str;

                    функция как доходит до этого фрагмента, так вообще перестает выполняться. Может я не правильно что-то понял или сделал - поправь меня, пожалуйста. В JS есть функция преобразования строки к ASCII-кодированной строке escape(), но она тож не ах-ти как помогает. К примеру, тот же "Прювет" выводит в теле письма вот таким образом: " 2u041F0u04400u044E0u04320u04350u0442 "
                    В общем, ерундистика какая-то получается :wall:

                    P.S.: уж извиняйте, что раз в день на форуме бываю и не отвечаю сразу - рабочий график не позволяет
                      Я функцию на JS написал! Попробуй так:
                      ExpandedWrap disabled
                        th.href='mailto:address@domain.com?subject=Subject&charset=windows-1251&body=' + str_urlencode(strBody);

                      Только эта функция с unicode символами работать не будет (а набирается, скорее всего, юникод) - вот в чем проблема. Можно еще использовать html-макросы (&1024; например) и content-type=text/html. Тебе так пойдет?
                        Malicious Babai, выложи всю страницу (если там нет супер секюрной инфы;)) и мы попробуем в ней разобраться:) А не под The bat'ом пробовал? Мой код работает (в таком виде как я написал). Можно ещё и систему для прикола указать;))
                          Trustmaster, да я понял, что проца на JS написана - я про то говорил, что не знал до этого момента назначения данной функциии (а она ведь из PHP, в принципе, взята).
                          Цитата
                          Можно еще использовать html-макросы (&1024; например)

                          а можно поподробнее с этого момента, а то у меня понятие об html-макросах весьма туманное.
                          Цитата
                          и content-type=text/html.

                          т.е. в мета-тэгах прописать? так это всё и так прописано и кодировка выставлена win-1251, так что Юникод здесь не виноват. Что-то здесь другое, при чём самое интересное, что из IE6 SP1 отправка сообщения по предложенному тобой методу осужществляется примерно в таком виде: @@15-17,5   1 а /n ( 1,5-10; Ш250-1500 Ђ   1 а /n (это две строки из таблицы), а Opera 7.10 вообще отказывается глотать эти скрипты и блокирует выполнение всех действий на странице ( при этом не выполняются ряд процедур не причастные к отправке сообщений) :wacko:
                            Rom@nych, по твоей просьбе выкладываю... тока учтите, что сначала пускается файл ааа2.htm , а потом уже в файле заказа происходит отправка по мылу (т.е. между формами данные передаются между всем этим)... странички тестовые, так что графику к ним не прилагаю и замечания по поводу дизайна просьба не высказывать :D как тока скрипты все напишу и дизайн проработаю обязательно выложу линк для оценки в соответствующем разделе
                            Сообщение отредактировано: Malicious Babai -

                            Прикреплённый файлПрикреплённый файл2.zip (7.49 Кбайт, скачиваний: 124)
                              Функция urlencode взята из протокола HTTP, она применяется для отправки данных скриптам. Данный код я перевел со своей же функции на C#.
                              Что до html-макросов, то это тот же
                              ExpandedWrap disabled
                                 
                              , например. Для каждого символа unicode есть свой макрос. Если задать тип письма text/html (опять-таки в href, а не в header скрипта) и тело написать макросами, то должно работать. Но по-моему, это далеко не лучшая идея.
                              Гораздо лучше написать online форму и генерировать/отсылать письмо прямо из скрипта. Как насчет PHP/Perl?
                                Trustmaster, начальство жадным бывает ;) - потому на free-хостинге сижу пока что. Приходиться выпутываться посредством JS (если страницы смотрел, то заметил, что там и передача данных от одной формы к другой, и отправка по почте... в данный момент еще и над алгоритмом поиска в каталоге думаю... Всё это, без сомнения, проще и разумнее реализовать на PHP, но пока что сами всё видите...
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0353 ]   [ 16 queries used ]   [ Generated: 24.04.24, 12:05 GMT ]