Прямая отправка email с сайта через JavaScript: методы и код
Быстрый ответ
Для отправки электронных писем из JavaScript удобно использовать сервис EmailJS. Процесс выглядит следующим образом:
- Регистрируемся на веб-сайте EmailJS.
 - Подключаем их SDK:
 
html <script src="https://cdn.emailjs.com/sdk/2.3.2/email.min.js"></script> - Инициализируем библиотеку, используя ваш идентификатор пользователя:
 
javascript emailjs.init("ваш_user_id"); - Отправляем электронное письмо:
 
javascript emailjs.send("service_id", "template_id", { to_name: "Имя", message: "Привет!", reply_to: "email@example.com" }) .then(response => console.log('Письмо успешно отправлено!', response)) .catch(error => console.log('Возникла ошибка...', error));Помните о замене "вашuserid", "serviceid" и "templateid" на соответствующие данные из EmailJS. 

Подробное руководство: Серверная магия
Отправка электронной почты через JavaScript работает более эффективно, когда используются API и серверы. Давайте разберемся, как это устроено:
AJAX: Непрерывный пользовательский интерфейс
С применением AJAX, JavaScript способен отправлять данные на почтовый сервер без перезагрузки страницы, благодаря чему пользовательский интерфейс остается незаметным.
$.ajax({   // Этот $.ajax действительно волшебен, не так ли?
  url: '/email-service',
  method: "POST",
  data: { subject: 'Привет!', body: 'Просто хотел сказать привет!' }
});  
Сторонние API: Обеспечение отправки писем
Платформы, такие как SendGrid и Mailjet, предлагают удобные API, которые прекрасно совместимы с JavaScript. Однако, стоит помнить о безопасности ваших API-ключей и хранить их в тайне от клиентской части.
SMTP-библиотеки: Чистота и простота
SMTP-библиотеки — за них отвечает, например, smtpJs — позволяют использовать метод Email.send() с зашифрованными данными SMTP. Если у вас нет собственного SMTP сервера, можно воспользоваться услугами SMTP-ретрансляции и настроить их привязку к вашему домену.
Визуализация
Процесс можно представить в виде эстафеты:
1. JavaScript (🏃♂️)  ->  2. Email Сервер (📮)
🏃♂️: "Вот, 📮, теперь твоя очередь работать!"
📮: "Понял, получил! Сейчас все будет отправлено... 📬✉️!"
Ключевые моменты:
- 🏃♂️: Отправка писем самим JavaScript не возможна.
 - 📮: Приходится пробрасывать данные на сервер, который может быть написан на Node.js или PHP.
 
fetch("/send-email", { // Передаем наши чувства используя fetch!
  method: "POST",
  body: JSON.stringify({ to: "user@example.com", subject: "Привет!", body: "Привет!" })
});
И следующей остановкой становится почтовый ящик! 📬✉️🚀
Вывод: Отправка электронной почты осуществляется с помощью сервера (📮), который берет на себя основную задачу в доставке вашего сообщения до получателя.
Удаленная отправка: Письма без обновления страницы
Отправка прямо с вашего сайта через PostMail
С помощью Postmail можно отправлять письма прямо с вашего веб-сайта. Благодаря грамотной обработке успешных отправок и ошибок пользователь всегда будет в теме происходящего.
Методика старой школы: Использование Mailto
window.open('mailto:test@example.com') возвратит нас в начало эры электронной почты, предложив открыть почтовый клиент пользователя. Этот метод — сюрприз-парадокс: прост, но эффективен.
Альтернатива, которую программисты НЕНАВИДЯТ: XMLHttpRequest
var xhr = new XMLHttpRequest();  // Помнишь этого старого знакомого? Он всё еще с нами!
xhr.open('POST', '/email-handler', true);
xhr.send('Тело письма');
Обработка ошибок, предотвращение спама и кодирование
Обработка ошибок и борьба со спамом — это также важно, как и посещение стоматолога для любителей сладкого. Воспользуйтесь блоками try-catch и encodeURIComponent, чтобы сообщение было правильно закодировано. И ни в коем случае не делитесь личными или конфиденциальными адресами публично!
Полезные материалы
- Обзор | EmailJS — Инструмент для отправки электронных писем из JavaScript с помощью EmailJS.
 - Отправка писем | Gmail | Google для Разработчиков — Подход Google к отправке электронной почты через Gmail API.
 - Nodemailer :: Nodemailer — Привлекательный способ для Node.js посылать электронные письма.
 - Использование Fetch API – Веб API | MDN — Руководство MDN по Fetch API для сетевых запросов.
 - Custom Forms with No Server Code | Formspree — Отправка сообщений с форм без написания кода для сервера.
 - Аутентификация | Twilio — Как обеспечить безопасность вашей электронной корреспонденции при использовании V3 API от SendGrid.
 


