Как отправить электронное письмо с HTML-страницы, используя данные, выбранные на странице из переключателя?

Я пытаюсь отправить электронное письмо с HTML-страницы, используя данные радиокнопки со страницы.

На самом деле в этом нет ничего особенного, за исключением того, что есть 3 переключателя, и я хочу сделать это после того, как пользователь выберет кнопку и нажмет кнопку отправки, чтобы перенаправить его, чтобы отправить мне электронное письмо.

Тело письма должно содержать предыдущий выбор переключателя. (например, если бы у меня было 3 вида еды: 1) мясо, 2) овощи, 3) фрукты, и пользователь выбрал «фрукты», в теле письма должно было быть что-то вроде «Вы выбрали фрукты».)

Любые мысли о том, как это может работать?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
69
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

HTML — это язык разметки, и он не может отправлять электронные письма. Следующей мыслью может быть использование JavaScript, встроенного в HTML-страницу, для отправки электронной почты, но JS также не может отправлять электронные письма.

Один из вариантов — создать ссылку «mailto:», например:

<a href = "mailto:[email protected]">Email Me</a> "

Это попросит браузер открыть почтовое приложение пользователя, такое как Outlook или Gmail. Вам придется проделать некоторую магию JavaScript, чтобы получить данные, которые вы хотите, в ссылку. (Я бы исследовал изменение значения href тега «a»). См. https://en.wikipedia.org/wiki/Mailto.

Наиболее часто используемый вариант отправки электронных писем на основе того, что пользователь делает на веб-странице, — отправить запрос на сервер веб-сайта, который будет иметь код на стороне сервера, который отправляет электронное письмо через SMTP или API. Детали будут зависеть от вашего серверного решения. Если вы не можете выяснить подробности этого с помощью Google, я бы задал более конкретный вопрос об отправке электронной почты с использованием выбранной вами серверной технологии.

Если вы ищете решение для PHP,

Я бы использовал функцию «Почта» для фактической отправки почты. Перед отправкой вам необходимо очистить и обработать данные формы. Я бы посмотрел Страница обработки формы W3 для общего понимания того, как получить доступ к данным формы, и это сообщение о переполнении стека для получения дополнительной информации о правильной очистке данных формы.

Ответ принят как подходящий

Вы можете использовать комбинацию AJAX (javascript) и PHP.

Что-то вроде этого:

//jQuery (javascript):
$('#btnGo').click(function(){
  var eden = $('[name=fruits]:checked').val();
  console.info(eden);
  $.ajax({
    type:'post',
     url:'name_of_your_php_file.php',
    data:'dfruit=' + eden
  }).done(function(recd){
    console.info(recd);
  });
});
<!-- HTML -->
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
Apple: <input type = "radio" name = "fruits" value = "apple" /></br>
Pear: <input type = "radio" name = "fruits" value = "pear" /></br>
Orange: <input type = "radio" name = "fruits" value = "orange" /></br>
<button id = "btnGo">Go</button>

PHP:

<?php
    $fruit = $_REQUEST['dfruit'];

    $headers = "";
    $headers .= "Content-type: text/html; charset=iso-8859-1\n";
    $headers .= "From: [email protected]\n";
    $headers .= "Organization: cssyphus.com\n";
    $headers .= "X-Priority: 3\n";
    $headers .= "X-Mailer: PHP". phpversion() ."\n" . PHP_EOL;
    $msg = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns = "http://www.w3.org/1999/xhtml">';

    $msg .= "You requested a: " . $fruit;
    $to = "[email protected]";
    $subject = "Whatever you want for a subject";

    mail($to, $subject, $msg, $headers);

    echo 'Email sent!'; //This is received in the `.done()` section of js.

Важно: обратите внимание, что у меня есть ссылка на библиотеку jQuery в HTML. Это также необходимо для работы примера кода. Если вы не очень хорошо разбираетесь в javascript (которым, судя по вашему вопросу, я предполагаю, что вы еще не являетесь), jQuery упростит вашу работу. И меньше печатать.

Спасибо за ответ, будем пробовать :)

ignotus 05.07.2019 09:41

Другие вопросы по теме