Неопределенный индекс — попытка ОПУБЛИКОВАТЬ изображение в кодировке base64 в PHP

#javascript #php #jquery #post #base64

#javascript #php #jquery #Публикация #base64

Вопрос:

Я пытаюсь выяснить, где моя ошибка, и я очень новичок в PHP. Я пытаюсь отправить изображение, созданное с помощью функции js. В настоящее время я запускаю это на localhost, пока не смогу устранить неполадки. Вот несколько фрагментов кода.

Это js-код, в котором я ОТПРАВЛЯЮ изображение в файл php:

 $('#send-image-mail-php').click(function() {
                yourDesigner.getProductDataURL(function(dataURL) {
                    $.post("php/send_image_via_mail.php", { base64_image: yourDesigner.getProductDataURL() }, function(data) {
                        if(data) {
                            alert("Mail successfully sent!");
                        }
                        else {            
                        alert("Mail could not be sent!");
                        }
            });
  

это php-код:

 <?php

$base64_str = substr($_POST['base64_image'], strpos($_POST['base64_image'], ",") 1);
$to =   'myemail@domain.com';//set here your receiving mail address
$subject =  'Fancy Product Designer Test Email'; //set here the mail subject
$message = '';
$bound_text =   md5(date('r', time()));
$bound =    "--".$bound_text."rn";
$bound_last =   "--".$bound_text."--rn";

$headers =  "From: myemail@domain.comrn";//set here the sending mail address
$headers .=     "MIME-Version: 1.0rn"
    ."Content-Type: multipart/mixed; boundary="$bound_text"";

$message .=     "If you can see this MIME than your client doesn't accept MIME types!rn";
    .$bound;

$message .=     "Content-Type: text/html; charset="iso-8859-1"rn"
    ."Content-Transfer-Encoding: 7bitrnrn"
    ."Email Sent Successfullyrn" //set here the mail text
    .$bound;

$message .=     "Content-Type: image/png; name="mail_product.png"rn"
    ."Content-Transfer-Encoding: base64rn"
    ."Content-disposition: attachment; file="mail_product.png"rn"
    ."rn"
    .chunk_split($base64_str)
    .$bound_last;

if(mail($to, $subject, $message, $headers))
{
     echo json_encode(1);
} else {
     echo json_encode(0);
}

?>
  

И вот журнал ошибок с моего сервера Apache, работающий локально через XAMPP:

 [Sat Sep 12 00:32:37.790441 2020] [php7:notice] [pid 10748:tid 1920] [client ::1:61515] PHP Notice:  Undefined index: base64_image in C:\xampp\htdocs\php\send_image_via_mail.php on line 6, referer: http://localhost/product-designer.html
[Sat Sep 12 00:32:37.790441 2020] [php7:notice] [pid 10748:tid 1920] [client ::1:61515] PHP Notice:  Undefined index: base64_image in C:\xampp\htdocs\php\send_image_via_mail.php on line 6, referer: http://localhost/product-designer.html
[Sat Sep 12 00:32:37.856441 2020] [php7:notice] [pid 10748:tid 1924] [client ::1:61517] PHP Notice:  Undefined index: base64_image in C:\xampp\htdocs\php\send_image_via_mail.php on line 6, referer: http://localhost/product-designer.html
[Sat Sep 12 00:32:37.856441 2020] [php7:notice] [pid 10748:tid 1924] [client ::1:61517] PHP Notice:  Undefined index: base64_image in C:\xampp\htdocs\php\send_image_via_mail.php on line 6, referer: http://localhost/product-designer.html
sendmail: Error writing to C:xamppsendmaildebug.log: --- MESSAGE BEGIN ---
sendmail: Error writing to C:xamppsendmaildebug.log: To: myemail@domain.com
sendmail: Error writing to C:xamppsendmaildebug.log: Subject: Fancy Product Designer Test Email
sendmail: Error writing to C:xamppsendmaildebug.log: From: myemail@domain.com
sendmail: Error writing to C:xamppsendmaildebug.log: MIME-Version: 1.0
sendmail: Error writing to C:xamppsendmaildebug.log: Content-Type: multipart/mixed; boundary="f6e9b319c244b41ebc6650ef9c316270"
sendmail: Error writing to C:xamppsendmaildebug.log: 
sendmail: Error writing to C:xamppsendmaildebug.log: If you can see this MIME than your client doesn't accept MIME types!
sendmail: Error writing to C:xamppsendmaildebug.log: --f6e9b319c244b41ebc6650ef9c316270
sendmail: Error writing to C:xamppsendmaildebug.log: Content-Type: text/html; charset="iso-8859-1"
sendmail: Error writing to C:xamppsendmaildebug.log: Content-Transfer-Encoding: 7bit
sendmail: Error writing to C:xamppsendmaildebug.log: 
sendmail: Error writing to C:xamppsendmaildebug.log: Email sent successfully
sendmail: Error writing to C:xamppsendmaildebug.log: --f6e9b319c244b41ebc6650ef9c316270
sendmail: Error writing to C:xamppsendmaildebug.log: Content-Type: image/png; name="mail_product.png"
sendmail: Error writing to C:xamppsendmaildebug.log: Content-Transfer-Encoding: base64
sendmail: Error writing to C:xamppsendmaildebug.log: Content-disposition: attachment; file="mail_product.png"
sendmail: Error writing to C:xamppsendmaildebug.log: 
sendmail: Error writing to C:xamppsendmaildebug.log: 
sendmail: Error writing to C:xamppsendmaildebug.log: --f6e9b319c244b41ebc6650ef9c316270--
sendmail: Error writing to C:xamppsendmaildebug.log: 
sendmail: Error writing to C:xamppsendmaildebug.log: --- MESSAGE END ---
sendmail: Error writing to C:xamppsendmaildebug.log: Authenticating with POP3 server
sendmail: Error during delivery: Connect tim
  

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

Кроме того, я получал сообщение об ошибке о том, что $ message также не определено, но я, похоже, исправил эту ошибку, объявив ее как «; с остальными объявлениями.

В любом случае, я уже настроил свои файлы php.ini, а также файл sendmail.ini. Я использую gmail для отправки и получения электронной почты. Я ввел SMTP, а также POP… Я надеюсь, что это не то, где я ошибся.

Извините, если это было опубликовано ранее. Мне действительно не помешало бы некоторое понимание. Спасибо за чтение.

Комментарии:

1. Обновление: я удалил всплывающую информацию из sendmail.ini, и это новая ошибка. Я мог бы рвать на себе волосы: [php7:error] [pid 7480:tid 1924] [client ::1:62901] PHP Parse error: syntax error, unexpected '.', expecting end of file in C:\xampp\htdocs\php\send_image_via_mail.php on line 22, referer: http://localhost/product-designer.html

2. что getProductDataURL ?

3. Это пользовательская функция, используемая в дизайнере продукта, которая создает изображение, которое я пытаюсь передать PHP-скрипту. Вот документация по нему: ссылка

4. Еще одно обновление! Я добавил пароль для конкретного приложения в свою учетную запись Gmail, и теперь электронные письма отправляются, но изображение пустое, и ни один текст сообщения не анализируется. Не совсем квадрат 1, но все та же проблема.