Как отправить на почту JS данные Modx?

Ссылка скопирована
1 ответ

Здравствуйте!
Опишу ситуацию, есть блок с товаром.
При нажатии на кнопку выходи Модальное окно тем самым через JS вставляется в форму картинка и заголовок.
Вопрос, как реализовать оправку фото товара и заголовок на почту?
Стоит formit и AjaxForm.

Дополнительно:

Ответы:

Сделайте скрытое поле формы(или скрытую форму) в модальном окне, туда добавляйте путь к картинке и заголовок, в теле письма путь к этому фото прописываете, через AjaxForm по закрытию окна отправляете. Или вам в закрепе к письму изображение нужно?

Как альтернативу посмотрите https://docs.modx.pro/components/fetchit/

  • Просто js при нажатии на кнопку с блока с товаром получает картинку и заголовок и вставляет в модельное окно.

    Как отправить на почту JS данные Modx?

    Как мне вот отправить картинку и заголовок?
    Обычно ModX вставляет данные с плайсхолдера.
    А тут JS вставляет картинку в модельное окно без каких либо сохранений в базу данных.

Не понял, вы в форму модального окна вставляете картинку и заголовок, но не знаете как их отправить?
Ну так вставляйте их в скрытые поля. И чанке письма, если такой есть, отобразите имя поля, в которое будет вставляться заголовок. Картинка будет во вложении. Чтобы вложение отправить добавьте форме атрибут enctype="multipart/form-data"

По хорошему, вы в форму на стороне JS должны положить ID карточки товара в скрытое поле.
На сервере, в сниппете AjaxForm нужно добавить хук, который по ID карточки товара получит все необходимые атрибуты этой карточки запросом из базы, считает необходимый файл превьюшки товара с каталога сервера и дополнит тело письма этими дополнительными атрибутами, или бинарником файла картинки/корректной внешней ссылкой на картинку.
Это будет самый корректный вариант реализации.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Ольга Сеть Ответ

Для отправки данных на почту в Modx с помощью JavaScript, вам понадобится использовать AJAX запрос к скрипту на сервере, который будет обрабатывать данные и отправлять их на почту. Вот пример того, как это можно сделать:

1. Создайте файл на сервере, который будет обрабатывать AJAX запросы. Допустим, вы создали файл с именем send_email.php. В этом файле вы можете использовать PHP для отправки электронной почты, например, с помощью функции mail().

2. Напишите JavaScript код, который будет отправлять данные на сервер с помощью AJAX запроса. Ниже приведен пример кода:

var data = {
    name: 'John Doe',
    email: 'johndoe@example.com',
    message: 'Hello, this is a test email!'
};
 
var xhr = new XMLHttpRequest();
xhr.open('POST', 'send_email.php', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(data));
 
xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        console.log('Email sent successfully!');
    }
};

var data = { name: 'John Doe', email: 'johndoe@example.com', message: 'Hello, this is a test email!' }; var xhr = new XMLHttpRequest(); xhr.open('POST', 'send_email.php', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(JSON.stringify(data)); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { console.log('Email sent successfully!'); } };

3. В файле send_email.php обработайте данные, которые пришли от клиента, и отправьте письмо на указанный адрес. Ниже приведен пример кода, который можно использовать для отправки писем с помощью PHP:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$data = json_decode(file_get_contents('php://input'), true);

$name = $data['name'];
$email = $data['email'];
$message = $data['message'];

$to = 'recipient@example.com';
$subject = 'New email from ' . $name;
$body = 'From: ' . $name . '

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно