Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 2
Регистрация: 21.08.2015
Сообщений: 8
1

Отправить изображение на введенный пользователем Email

12.10.2015, 20:01. Показов 1976. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо изображение из canvas отправить на введенный пользователем Email .
Изображение на сервере сохраняется, и естественно отправляется письмо « в никуда», если раскоментировать часть кода в приведенном js, то изображение сохраняется и уходит два письма, одно куда надо, второе «в никуда». Помогите корректно отправить данные из Js в php, и в php пркрепить изображение к письму

HTML5
1
2
3
4
<form id="Form">
<input type="text" name="mail" placeholder="'E-mail'" required >
<button>отправить</button>
</form>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$("#Form").submit(function(){
var canvas = $('canvas')[0];
var canPng = canvas.toDataURL('image/png').replace(/data:image\/png;base64,/, '');
$.ajax({
type: "POST",
url: "mail.php",
data: {canPng:canPng}
}).done(function(){
alert("отпр")
});
 
// $.ajax({
//  type: "POST",
//  url: "mail.php",
//  data: $(this).serialize()
// }).done(function(){
//  alert("Заявка отпр")
// });
return false;
});
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// имя изображения 
$name =time().'.png';
 
//Сохраняем изображение
$foto = file_put_contents($name, base64_decode($_POST['canPng']));
 
$email = trim($_POST["mail"]);
 
// кому
$recepient = $email;
 
// от кого
$ot="test@test.ru";
 
// тема письма
$sitename  = "Название";
 
// тело письма
$message = "тело";
 
$subject   = "Тема \"$sitename\"";
 
mail($recepient, $subject, $message, "From: $frm_name <$ot>" . "\r\n" . "Reply-To: <$ot>" . "\r\n" . "X-Mailer: PHP/" . phpversion() . "\r\n" . "Content-type: text/html; charset=\"utf-8\"");
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.10.2015, 20:01
Ответы с готовыми решениями:

Автоматический ответ на email введенный в форму
Всем привет!Подскажите, задача в следующем: человек вводит свои данные в форму и нажимает...

Является ли введенный пользователем год високосным
Создайте программу, которая определяет, является ли введенный пользователем год-високосный год или...

Введенный пользователем массив отсортировать по убыванию
Здравствуйте! Я тут решил посидеть по-прокачивать свои скиллы в программировании (у меня их почти...

Определить, является ли введенный пользователем год високосным
3)На языке программирования С++ напишите программу, определяющую, является ли введенный...

6
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
12.10.2015, 21:24 2
Протестируйте вот такой скрипт

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
<?php
 
// имя изображения 
$name =time().'.png';
 
//Сохраняем изображение
$foto = file_put_contents($name, base64_decode($_POST['canPng']));
 
$email = trim($_POST["mail"]);
 
// кому
$recepient = $email;
 
// от кого
$ot="test@test.ru";
 
// тема письма
$sitename  = "Название";
 
// тело письма
$message = "тело";
 
$subject   = "Тема \"$sitename\"";
 
$EOL = "\r\n";
 
$message .= $EOL.$EOL;
 
$message .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";   
 
$message .= "Content-Transfer-Encoding: base64$EOL";   
 
$message .= "Content-Disposition: attachment; filename=\"$name\"$EOL";   
 
$message .= $EOL;
 
$message .= chunk_split(base64_encode(file_get_contents($name)));
 
$message .= $EOL.$EOL;
 
mail($recepient, $subject, $message, "From: $frm_name <$ot>" . "\r\n" . "Reply-To: <$ot>" . "\r\n" . "X-Mailer: PHP/" . phpversion() . "\r\n" . "Content-type: text/html; charset=\"utf-8\"");
 
?>
js оставьте без изменений.

Добавлено через 18 минут
форму можете поставить такую

HTML5
1
2
3
4
<form id="Form">
            <input type="text" class="form-mail" placeholder="'E-mail'" required >
            <button>отправить</button>
        </form>
а js

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$("#Form").submit(function(){
    
    var canvas = $('canvas')[0];
        
    var canPng = canvas.toDataURL('image/png').replace(/data:image\/png;base64,/, '');
    
    var form_mail = $(".form-mail").value();
 
    $.ajax({
        type: "POST",
        url: "mail.php",
        data: {canPng:canPng, mail: form_mail}
    });
 
    return false;
});
Добавлено через 20 минут
в этом ^ js коде ошибка. Замените строку №7 на

Javascript
1
var form_mail = $(".form-mail").val();
1
2 / 2 / 2
Регистрация: 21.08.2015
Сообщений: 8
13.10.2015, 20:16  [ТС] 3
Что то где-то рядышком, но пока не работает

На компе протестировал (Denwer) результат: картинка сохраняется, но к письму прикрепляется ее код (может это глюки Denwer)
Выгрузил на хостинг, письмо не отправляется, вместо картинки создается пустой файл

Добавлено через 22 часа 20 минут
С пустым изображением на хостине разобрался. (поменял путь к php файлу, да и вообще перенес все это дело в другой файл). В результате(как на компе так и на хостинге) изображение на сервере сохраняется (нормальное не пустой файл), письмо отправляется по указанному адресу, но изображение не прикрепляется, а в теле сообщения длинный код:
тело Content-Type: application/octet-stream; name="1444755242.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="1444755242.png" iVBORw0KGgoAAAANSUhEUgAABAAAAAF6CAYAAACHnCqDAAAgAElEQVR4nOzd51dcR77ofV7cmXPH Y1uWhRCxaXITmtAFNKEJTWhCk6EbaEITmtCEJidJKCKhgAIo54iSg6xgyXKQg2wJBZQ8Mz5nHa/7 rOfN8298nxcILGskW557zp3je+qzVi3Ue++uXbvYLK3fr2rXdnKSJEmSJEmSJEmSJEmSJEmSJEmS JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmS JEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSpP+GapycnHjFvhO/sE+SJEmSJEmSJEmSpN+R VyUAMp5tlwkASZIkSZIkSZIkSfq/wKsSAJednJzGXrFPkiRJkiRJkiRJkqTfmZclAGqcnJwGX7Gv и так далее

HTML5
1
2
3
4
<form id="Form">
<input type="text" class="form-mail" placeholder="E-mail" required >
<button>отправить з</button>
</form>
Javascript
1
2
3
4
5
6
7
8
9
10
11
$("#Form").submit(function(){    
var canvas = $('canvas')[0];        
var canPng = canvas.toDataURL('image/png').replace(/data:image\/png;base64,/, '');
var form_mail = $(".form-mail").val();
$.ajax({
type: "POST",
url: "save_img/saveCPic.php",
data: {canPng:canPng, mail: form_mail}
});
return false;
});
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
// имя изображения 
$name =time().'.png';
 
//Сохраняем изображение
$foto = file_put_contents($name, base64_decode($_POST['canPng']));
 
// $email = trim($_POST["mail"]);
 $email = trim($_POST["mail"]);
// кому
$recepient = "$email";
 
// от кого
$ot="test@test.ru";
 
// тема письма
$sitename  = "Название";
 
// тело письма
$message = "тело";
 
$subject   = "Тема \"$sitename\"";
 
$EOL = "\r\n"; 
$message .= $EOL.$EOL; 
$message .= "Content-Type: application/octet-stream; name=\"$name\"$EOL"; 
$message .= "Content-Transfer-Encoding: base64$EOL"; 
$message .= "Content-Disposition: attachment; filename=\"$name\"$EOL"; 
$message .= $EOL;
$message .= chunk_split(base64_encode(file_get_contents($name))); 
$message .= $EOL.$EOL;
 
mail($recepient, $subject, $message, "From: $frm_name <$ot>" . "\r\n" . "Reply-To: <$ot>" . "\r\n" . "X-Mailer: PHP/" . phpversion() . "\r\n" . "Content-type: text/html; charset=\"utf-8\"");
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
14.10.2015, 12:17 4
MAX2210, давайте задействуем в ваших скриптах модуль отправки сообщения phpmailer? В нем есть возможность добавлять вложения к отправляемому сообщению - любые файлы, изображения. Я вчера тестировал его через свой gmail аккаунт с добавлением изображения, так что письмо пришло на ящик с изображением.

MAX2210, ещё скажите - для php ф-и mail Вы используете зарегистрированный почтовый адрес с которого отправляются письма? С адресом smtp сервера, логином и паролем. Это очень важно, так как для отправки писем используется smtp сервер + зарег. на нем почтовый ящик. Именно эти данные надо сообщать в php mailer перед отправкой письма. Вот:

examples/gmail.phps

адрес сервера исходящих писем стр.№28
PHP
1
2
//Set the hostname of the mail server
$mail->Host = 'smtp.gmail.com';
порт сервера исходящих писем стр.№34
PHP
1
2
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 587;
адрес почтового ящика зарегистрированного аккаунта стр.№43
PHP
1
2
//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "username@gmail.com";
пароль к почтовому ящику зарегистрированного аккаунта стр.№46
PHP
1
2
//Password to use for SMTP authentication
$mail->Password = "yourpassword";
если эти ^ данные указаны и указанны корректно, далее просто добавляется некоторая информация обязательная: от кого письмо, адрес получателя, тема сообщения, тело сообщения. И в конце добавляем файл/фалы просто передав как аргумент метода addAttachment адрес изображения стр.№68

PHP
1
2
//Attach an image file
$mail->addAttachment('images/phpmailer_mini.png');
и отправляем сообщение

PHP
1
$mail->sedn()
Так что если хотите задействуем в Вашем скрипте отправки сообщение этот класс php mailer. Должно работать безотказно. php mailer это мировой php класс по отправке сообщения.

MAX2210, ТОЛЬКО НЕ ПУБЛИКУЙТЕ В ЭТОЙ ТЕМЕ КОНФИДЕНЦИАЛЬНЫЕ ДАННЫЕ: АДРЕС ПОЧТОВОГО ЯЩИКА И ПАРОЛЬ К НЕМУ, И ПРОЧЕЕ.

Укажем в коде

PHP
1
2
$mail->Username = "ваш_почтовый_ящик";
$mail->Password = "ваш_пароль_от_почтового_ящика";
а Вы уже в этом шаблоне на вашем сервере подставите соотв. данные.

Добавлено через 1 минуту

Не по теме:

Я в отправке сообщений не очень разбираюсь, так что может быть где то не правильно говорю.

1
2 / 2 / 2
Регистрация: 21.08.2015
Сообщений: 8
15.10.2015, 12:45  [ТС] 5
tolimadokara, спасибо огромное за отклик, и не оставили с задаче сам на сам.
Письмо все-таки отправил, файл прикрепил, (без использования библиотеки). Предложенный Вами способ тоже протестирую, и потом выберу для себя более подходящий. О результате отпишусь через пару дней, тогда же и выложу код с которым получилось без библиотеки (сейчас нет доступа к домашнему компу)
0
2 / 2 / 2
Регистрация: 21.08.2015
Сообщений: 8
18.10.2015, 20:56  [ТС] 6
Добрался домой, вот код который работает без подключение модуля.
HTML5
1
2
3
4
5
                
<form id="Form">
 <input type="text" class="form-mail" placeholder="E-mail" required >
 <button>отправить з</button>
</form>
Javascript
1
2
3
4
5
6
7
8
9
10
11
$("#Form").submit(function(){    
var canvas = $('canvas')[0];        
var canPng = canvas.toDataURL('image/png').replace(/data:image\/png;base64,/, '');
var form_mail = $(".form-mail").val();
$.ajax({
type: "POST",
url: "save_img/saveCPic.php",
data: {canPng:canPng, mail: form_mail}
});
return false;
});
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
<?php
 
// имя изображения 
$name =time().'.png';
 
//Сохраняем изображение
$foto = file_put_contents($name, base64_decode($_POST['canPng']));
$email = trim($_POST["mail"]);
 
$attach = array($name);
 
// текст
$text = 'тнло сообщения'
.$email;
 
$from = "test@test.com";
$to = "$email";
 
$subject = "Тема письма";
 
// Заголовки письма === >>>
$headers = "From: $from\r\n";
// $headers .= "To: $to\r\n";
$headers .= "Subject: $subject\r\n";
$headers .= "Date: " . date("r") . "\r\n";
$headers .= "X-Mailer: zm php script\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/alternative;\r\n";
$baseboundary = "------------" . strtoupper(md5(uniqid(rand(), true)));
$headers .= "  boundary=\"$baseboundary\"\r\n";
// <<< ====================
 
// Тело письма === >>>
$message  =  "--$baseboundary\r\n";
$message .= "Content-Type: text/plain;\r\n";
$message .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$message .= "--$baseboundary\r\n";
$newboundary = "------------" . strtoupper(md5(uniqid(rand(), true)));
$message .= "Content-Type: multipart/related;\r\n";
$message .= "  boundary=\"$newboundary\"\r\n\r\n\r\n";
$message .= "--$newboundary\r\n";
$message .= "Content-Type: text/html; charset=utf-8\r\n";
$message .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$message .= $text . "\r\n\r\n";
// <<< ==============
 
// прикрепляем файлы ===>>>
foreach($attach as $filename){
    $mimeType='image/png';
    $fileContent = file_get_contents($filename,true);
    $filename=basename($filename);
    $message.="--$newboundary\r\n";
    $message.="Content-Type: $mimeType;\r\n";
    $message.=" name=\"$filename\"\r\n";
    $message.="Content-Transfer-Encoding: base64\r\n";
    $message.="Content-ID: <$filename>\r\n";
    $message.="Content-Disposition: inline;\r\n";
    $message.=" filename=\"$filename\"\r\n\r\n";
    $message.=chunk_split(base64_encode($fileContent));
}
// <<< ====================
 
// заканчиваем тело письма, дописываем разделители
$message.="--$newboundary--\r\n\r\n";
$message.="--$baseboundary--\r\n";
 
 
$result = mail($to, $subject, $message , $headers);
var_dump($result);
 
?>
Почитал о возможностях Phpmailer , появилось желание разобраться с ним, поюзаю а там уже решу чем именно пользоваться.
0
elnorbert
19.10.2015, 11:17     Отправить изображение на введенный пользователем Email
  #7

Не по теме:

да. phpmailer хороший класс.

0
19.10.2015, 11:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2015, 11:17
Помогаю со студенческими работами здесь

Как добавить в массив введенный пользователем элемент
Я очень плохо разбираюсь в массивах и не могу понять как добавить в массив int элемент который ввел...

Упорядочить массив введённый пользователем из 15 элементов по возрастанию.
Здравствуйте, я уже не однократно создавал похожую тему, но так как я не программист я не знаю как...

Определить, является ли введенный пользователем массив симметричным
Пользователем вводится одномерный массив целых чисел. Программа должна определить, является ли...

Как из Tkinter.Text получить введенный пользователем текст?
Tkinter. txt_1 = Text(root,height=10,width=60).grid(row=11,column=1,columnspan=5) Как получить...

Отправить файл по email
Люди помогите очень нужно. Програма заключатся есть какойто файл (константа). и его нужно...

Не могу отправить email
Всем привет, хочу отправить email, нашел несколько примеров, какие-то работают, а какие-то нет. Вот...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Почему при инициализации массива 3х3х3 будет создано 13 одномерных массивов?
Alexander-7 16.01.2025
При инициализации многомерного массива, в данном случае трехмерного массива размерностью 3x3x3, может возникнуть путаница относительно того, как структура данных организована в памяти. Общее число. . .
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru