Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 1
Регистрация: 30.05.2015
Сообщений: 22
1

Как реализовать отправку файла на почту

10.06.2015, 12:54. Показов 425. Ответов 0
Метки нет (Все метки)

Здравствуйте.
Есть готовая форма. Полностью рабочая: калькулятор считает, данные на почту отправляются. Но я никак не могу реализовать, чтобы прикрепленные файлы клиента отправлялись на почту. Долго не говоря вот код формы:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<form method="post" action="" enctype = "multipart/form-data">
<body>
<br><br><br>
<div align = "center" class = "indexClass">
<input type = "text" class = "cFIO" name = "FIO" placeholder = "Лукманов Ильнар Ильгизович" value = "ФИО" onfocus="if (this.value == 'ФИО') this.value = ''" onblur="if (!this.value) this.value = 'ФИО'"/>
<input type = "text" class = "cphone" name = "phone" placeholder = "+7(927)2236566" value = "Телефон" onfocus="if (this.value == 'Телефон') this.value = ''" onblur="if (!this.value) this.value = 'Телефон'"/>
<input type = "text" class = "cadress" name = "adress" placeholder = "г.Туймазы ул.Мичурина д.54а кв. 18" value = "Адрес" onfocus="if (this.value == 'Адрес') this.value = ''" onblur="if (!this.value) this.value = 'Адрес'" />
<input type = "text" class = "ce-mail" name = "e-mail" placeholder = "ilnar-lucmanov@ya.ru" value = "e-mail" onfocus="if (this.value == 'e-mail') this.value = ''" onblur="if (!this.value) this.value = 'e-mail'" />
 
 
 
<br><br>
<table class = "tableClass" id = "mimi">
<thead>
<tr>
<th scope="col">Тип изделия</th>
<th scope="col">Изделие</th>
<th scope="col">Материал</th>
<th scope="col">Размеры</th>
<th scope="col">Количество</th>
</tr>
</thead>
<tbody id="dynamic" class = "dynamicc">
<tr class = "row1">
<td class = "call1">
                    
                       <input type = "radio" class = "r1" name = "radioo" value = "vtulka" checked />
                       Втулка                   
                       <br>                 
                       <input type = "radio" class = "r1" name = "radioo" value = "novtulka"/>
                       Не втулка         
</td>
<td class = "call2">
<label>
<div class = "img-look" id = "izdelieLook" align = "center">Не выбрано</div>
</label>
<button type = "button" onclick="showOpen($(this))" style = "width: 70%; margin-left:15%;">Выбрать</button> 
<br>
<br>
<div class = "imgclass" align = "center">
<img src = "http://antigai.info/forma/vtulka1.jpg" class = "img1"   name = "vtulka1"/>
<img src = "http://antigai.info/forma/vtulka2.jpg" class = "img2"   name = "vtulka2"/>
<img src = "http://antigai.info/forma/vtulka3.jpg" class = "img3"   name = "vtulka3"/>
<img src = "http://antigai.info/forma/vtulka4.jpg" class = "img4"   name = "vtulka4"/>
</div>
 
</td>
 
<td  class = "call3"><label>    
            <select name = "select" class = "sselect" onchange = "my()" >
            <option value = "bronza">Бронза</option>
            <option value = "ferrum">Железо</option>
            <option value = "cuprum">Медь</option>      
            <option value = "chugun">Чугун</option>
            </select>
</label></td> 
 
<td  class = "call4"><label>
           d1<input type = "text" class = "d1" id = "1" placeholder = "метрах" onchange = "this.value.replace(/([^0-9])/g,''), my();" onkeyup = "var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;"><br>
           d2<input type = "text" class = "d2" id = "2" placeholder = "метрах" onchange = "this.value.replace(/([^0-9])/g,''), my();" onkeyup = "var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;"><br>
           d3<input type = "text" class = "d3" id = "3" placeholder = "метрах" onchange = "this.value.replace(/([^0-9])/g,''), my();" onkeyup = "var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;"></td>
<td  class = "call5"><input type = "text" id = "countt" name = "quantities"  class = "kolichestvoo" onchange = "this.value.replace(/([^0-9])/g,''), my();" onkeyup = "var n=this.value.replace(/([^0-9])/g,''); if(n!=this.value) this.value=n;"/></label></td>        
<td  class = "call5"><button type="button"  class="add">строка+</button><br><br><button type="button"  class="del">строка -</button></td>
</tr>
<tr>
<td  class = "call6">Итого:<div id = "total" ></div></td>
<td  class = "call7"><input type = "button" value = " отправить" onclick = "send();"><br>
</tr>
</tbody>
</table>
</div>
</form>
<table>
<tr>
<td>
<form method = "POST" enctype = "multipart/form-data">
<input type = "file" name = "myfile">
<input type = "button" onclick = "loading()" value = "прикрепить">
</form>
</td>
</tr>
</table>
<!-- Задний прозрачный фон-->
<div onclick="showClose()" id="wrap"></div>
<!-- Само окно-->
<div id="window">
<!-- Картинка крестика-->
<img class="close" onclick="showClose()" src="http://sergey-oganesyan.ru/wp-content/uploads/2014/01/close.png">
 
<img src = "http://antigai.info/forma/vtulka1.jpg" item = "Втулка №1" id = "vtulka12" onclick = "ImgNextSelect($(this))"/>&nbsp;&nbsp;&nbsp;&nbsp;
 
<img src = "http://antigai.info/forma/vtulka2.jpg" item = "Втулка №2" value = "vtulka2" onclick = "ImgNextSelect($(this))" name = "vtulka2"/><br>
 
<img src = "http://antigai.info/forma/vtulka3.jpg" item = "Втулка №3" value = "vtulka3" onclick = "ImgNextSelect($(this))" name = "vtulka3"/>&nbsp;&nbsp;&nbsp;&nbsp;
 
<img src = "http://antigai.info/forma/vtulka4.jpg" item = "Втулка №4" value = "vtulka4" onclick = "ImgNextSelect($(this))" name = "vtulka4"/><br>
обработчик :
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
//Функция показа;
var volume = 0;
var massa = 0;
var itogPrice = 0;
var density = 0;
var objColor = 0;
var totalPrice = 0;     
var textTotal = document.getElementById('total');
 
            function ImgNextSelect(obj){
                var colorcurrent = obj.attr('item');
                objColor.html(colorcurrent);
                switch(colorcurrent){
                    case "Втулка №1" : {
                    objImg.find('.img1').css("display","block");
                    objImg.find('.img2').css("display","none"); 
                    objImg.find('.img3').css("display","none");
                    objImg.find('.img4').css("display","none");
                    break;
                    }
                    case "Втулка №2" : {
                    objImg.find('.img1').css("display","none");
                    objImg.find('.img2').css("display","block");    
                    objImg.find('.img3').css("display","none");
                    objImg.find('.img4').css("display","none");
                    break;
                    }
                    case "Втулка №3" : {
                    objImg.find('.img1').css("display","none");
                    objImg.find('.img2').css("display","none"); 
                    objImg.find('.img3').css("display","block");
                    objImg.find('.img4').css("display","none");
                    break;
                    }
                    case "Втулка №4" : {
                    objImg.find('.img1').css("display","none");
                    objImg.find('.img2').css("display","none"); 
                    objImg.find('.img3').css("display","none");
                    objImg.find('.img4').css("display","block");
                    break;
                };
                    }
            showClose();  // закрываем диалоговое окно
            };  
 
            function showOpen(obj){
                    objColor = obj.parent().find('div.img-look');
                    objImg = obj.parent().find('div.imgclass');
                    document.getElementById('window').style.display = 'block';          
                    document.getElementById('wrap').style.display = 'block';            
            };
            
            function showClose(){
                    
                    document.getElementById('window').style.display = 'none';           
                    document.getElementById('wrap').style.display = 'none';             
            };
                
            
    /*dynamic.addEventListener('keyup', function(e){
    var t = e.target;
    if(t.className == 'kolichestvoo') {
        alert( t.value );
    } else {
        alert("говно тема");
    }
}, false);*/
 
    function my(){
        
        totalPrice = 0;
        var countLine = $('.dynamicc').find('.row1').length;
        for (var i = 0; i < countLine; i++){
            
            var line = $('.dynamicc .row1:eq('+ i +')');
            var inQuantities = parseFloat(line.find('.call5 input[class = "kolichestvoo"]').val());
            var d1 = parseFloat(line.find('.call4 input[class = "d1"]').val());
            var d2 = parseFloat(line.find('.call4 input[class = "d2"]').val());
            var d3 = parseFloat(line.find('.call4 input[class = "d3"]').val());
            var material = line.find('.call3 select[class = "sselect"]').val();
            
            if(material == "bronza"){
                density = 8700;
            } 
            else if(material == "ferrum") {
                density = 7800;
            }
            else if(material == "cuprum") {
                density = 8900;
            }
            else if(material == "chugun") {
                density = 7000;
            }
             volume = d1*d2*d3;
             massa = volume*density;
             itogPrice = (massa*650)*inQuantities;
            totalPrice = totalPrice + itogPrice;
        }
        totalPrice += "руб.";
        textTotal.innerHTML = totalPrice;
        
    };
    
    function getCookie(name) {
    var matches = document.cookie
            .match(new RegExp("(?:^|; )"
                    + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1')
                    + "=([^;]*)"));
    return matches ? decodeURIComponent(matches[1]) : undefined;
}
    
    function send() {
        
        var send_mail = $('.ce-mail').val();
        var send_adress = $('.cadress').val();
        var send_FIO = $('.cFIO').val();
        var send_phone = $('.cphone').val();
        var send_itog = textTotal.innerHTML;
        var tipizdeliearray = [];
        var izdeliearray = [];
        var materialarray = [];
        var razmerd1array = [];
        var razmerd2array = [];
        var razmerd3array = [];
        var countarray = [];
        var line = $('.row1');
        var line_count = line.length;
        for (var i = 0; i < line_count; i++){       
            var current = $('.row1:eq('+ i +')');
            
            var tipizdelie = current.find('.call1 input[class="r1"]:checked').val();
            tipizdeliearray.push(tipizdelie);
            var izdelie = current.find('.img-look').html();
            izdeliearray.push(izdelie);
            var material = current.find('select.sselect').val();
            materialarray.push(material);
            var d1 = current.find('.call4 input[class = "d1"]').val();
            //alert(d1);
            razmerd1array.push(d1);     
            var d2 = current.find('.call4 input[class = "d2"]').val();
            razmerd2array.push(d2);
            //alert(d2);
            var d3 = current.find('.call4 input[class = "d3"]').val();
            razmerd3array.push(d3);
            //alert(d3);
            
            var count = current.find('.kolichestvoo').val();
            countarray.push(count);
            //alert(count);
        }
    
    var cookie0 = getCookie('name0');
    var name_f0 = getCookie('name_f0');
    
    var cookie1 = getCookie('name1');
    var name_f1 = getCookie('name_f1');
    
    var cookie2 = getCookie('name2');
    var name_f2 = getCookie('name_f2');
    
        $.ajax({
            
            type : 'POST',
            url : 'http://antigai.info/forma/send.php',
            async : true,
            data : {
                line_count : line_count,
                send_phone : send_phone,
                send_FIO : send_FIO,
                send_adress : send_adress,
                send_itog : send_itog,
                send_mail : send_mail,
                tipizdeliearray: tipizdeliearray,
                izdeliearray : izdeliearray,
                materialarray : materialarray,
                razmerd1array : razmerd1array,
                razmerd2array : razmerd2array,
                razmerd3array : razmerd3array,
                countarray : countarray,
                cookie0 : cookie0,
                name_f0 : name_f0,
                cookie1 : cookie1,
                name_f1 : name_f1,
                cookie2 : cookie2,
                name_f2 : name_f2
            },
            success : function(data) {
                console.log(data);
            }
        });
        
        alert('Спасибо гавнюк, твое письмо отправленно!');
        var urlName = window.location.href;
        location.replace(urlName);
    };
форма отправляющая данные на почту :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
print_r($_POST);
$today = date("d.m.Y H:i:s");
$sendString = '<h2>Заказ от' .$today.'</h2><br><br><table border = "1" cellspacing = "0" colspasing = "0"><tr><td><b>Заказчик</b></td><td><b>Телефон</b></td><td><b>Адрес</b></td><td><b>Почта</b></td></tr><tr><td>'.$_POST["send_FIO"].'</td><td>'.$_POST["send_phone"].'</td><td>'.$_POST["send_adress"].'</td><td>'.$_POST["send_mail"].'</td></tr></table><br>';
 
$send_count = $_POST["line_count"];
 
$sendString = $sendString.'<table border = "1"><tr><td><b>№</b></td><td><b>Тип изделия</b></td><td><b>Изделие</b></td><td><b>Материал</b></td><td><b>Размеры</b></td><td><b>Количество</b></td></tr>';
 
for($i=0; $i<$send_count; $i++) {
    $sendString = $sendString.'<tr><td>'.($i+1).'</td><td>'.$_POST["tipizdeliearray"][$i].'</td><td>'.$_POST["izdeliearray"][$i].'</td><td>'.$_POST["materialarray"][$i].'</td><td> d1 = '.$_POST["razmerd1array"][$i].'<br> d2 = '.$_POST["razmerd2array"][$i].'<br> d3 = '.$_POST["razmerd3array"][$i].'</td><td>'.$_POST["countarray"][$i].'</td></tr>';
}
$sendString = $sendString.'<tr><td>Заказ на общую сумму:'.$_POST["send_itog"].'</td></tr></table>';
 
echo $sendString;
 
$to = 'ilnar-lucmanov@yandex.ru';
$headers = "";
$body = $sendString;
$title = "ilnar-lucmanov@ya.ru";
    for($i=0; $i<3; ++$i)
    {
        $path[$i] = $_POST['cookie'.$i];
        $name[$i] = $_POST['name_f'.$i];
    }
    
    for($i=0; $i<3; ++$i)
    {
    if ($path[$i]) {  
    $fp = fopen($path[$i],"rb");   
    if ($fp)   
    { 
        $file[$i] = fread($fp, filesize($path[$i])); 
    }   
    fclose($fp);   
    }
    }
 
    $EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
    $boundary     = "--".md5(uniqid(time()));  // любая строка, которой не будет ниже в потоке данных.  
    $headers    = "MIME-Version: 1.0;$EOL";   
    $headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  
    $headers   .= "From: $title";  
      
    $multipart  = "--$boundary$EOL";   
    $multipart .= "Content-Type: text/html; charset=UTF-8$EOL";   
    $multipart .= "Content-Transfer-Encoding: base64$EOL";   
    $multipart .= $EOL; // раздел между заголовками и телом html-части 
    $multipart .= chunk_split(base64_encode($body));   
    for($i=0; $i<3; ++$i)
    {
    if($path[$i]){
    $multipart .=  "$EOL--$boundary$EOL";   
    $multipart .= "Content-Type: application/octet-stream; name=\"$name[$i]\"$EOL";   
    $multipart .= "Content-Transfer-Encoding: base64$EOL";   
    $multipart .= "Content-Disposition: attachment; filename=\"$name[$i]\"$EOL";   
    $multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла 
    $multipart .= chunk_split(base64_encode($file[$i]));   
    }
    }
    $multipart .= "$EOL--$boundary--$EOL";
    
    ################
 
    if (mail($to, $subject, $multipart, $headers))
    {
        echo "Ваше письмо отправлено";
    }
    else
    {
        echo "Ошибка отправки сообшения";
    }
?>
Не ругайтесь если вот так набросал слишком много кода. Голова пока не до конца понимает как все это реализовать. В php коде отправки формы я уже начала реализовывать прикрепление материала. (
PHP
1
2
$path[$i] = $_POST['cookie'.$i];
        $name[$i] = $_POST['name_f'.$i];
)

Но не понимаю как собрать эти данные из формы и отправить методом ajax php обработчик.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2015, 12:54
Ответы с готовыми решениями:

Реализовать отправку писем после оплаты товара на почту
Требуется реализовать функцию доступа для скачивания после оплаты как на этом сайте....

Как реализовать отправку прикрепленных файлов с сайта на почту?
Добрый день, подскажите как организовать отправку прикрепленных файлов с формы сайта на почту. Код...

Как реализовать отправку файла на FTP-сервер?
В общем ребят такая проблема. Я хочу чтоб некоторые файлы которые мне нужны это 1 файл( ID.exe)...

Настроить отправку на почту прикрепленного файла из формы
Доброго времени суток! Ребятушки, нужна помощь! Есть форма на сайте, отправляется без...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2015, 12:54

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как реализовать отправку файла с сервера по указанному посетителем адресу электронной почты?
Здравствуйте! Вопрос такой. Сайт на wordpress, тема от yootheme Имеется простейшая форма для...

Как сделать отправку на почту данных
Вот нашел пример и хотел бы что на почту отправлялось и что бы без лишних obrabotka_form.php и т.д...

Как сделать архивацию и отправку файлов на почту?
Точнее интересует как сделать сбор нужных файлов и архивацию. Например, у меня на ПК, на раб....

Как сделать отправку письма на почту клиенту
Как сделать отправку письма на почту клиенту, админу приходит, а вот клиенту ничего. &lt;?php ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.