Программная отправка почты — распространенное требование в проектах веб-разработки. В этой статье мы рассмотрим несколько способов отправки почты с помощью JavaScript. Независимо от того, создаете ли вы контактную форму или интегрируете функции электронной почты в свое приложение, мы предоставим вам все необходимое. Давайте погрузимся!
Метод 1: использование протокола «mailto».
Самый простой способ отправить электронное письмо с помощью JavaScript — использовать протокол «mailto». Он позволяет открыть почтовый клиент пользователя по умолчанию с предварительно заполненным содержимым. Вот пример:
const recipient = "example@example.com";
const subject = "Hello!";
const body = "Just wanted to say hi.";
const mailtoLink = `mailto:${recipient}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
window.location.href = mailtoLink;
Метод 2: использование SMTP-серверов
Чтобы программно отправлять почту с вашего собственного сервера, вы можете использовать простой протокол передачи почты (SMTP). Одной из популярных библиотек, упрощающих этот процесс, является Nodemailer. Вот пример отправки электронного письма с помощью Nodemailer:
const nodemailer = require("nodemailer");
async function sendMail() {
const transporter = nodemailer.createTransport({
host: "smtp.example.com",
port: 587,
secure: false,
auth: {
user: "your_username",
pass: "your_password",
},
});
const mailOptions = {
from: "your_email@example.com",
to: "recipient@example.com",
subject: "Hello!",
text: "Just wanted to say hi.",
};
const info = await transporter.sendMail(mailOptions);
console.log("Message sent: %s", info.messageId);
}
sendMail();
Метод 3: использование XMLHttpRequest
Другой подход — использовать XMLHttpRequest, который позволяет выполнять HTTP-запросы из JavaScript. Вы можете использовать API поставщика услуг электронной почты для отправки почты. Вот пример использования API Mailgun:
const xhr = new XMLHttpRequest();
const url = "https://api.mailgun.net/v3/your_domain.com/messages";
const apiKey = "your_api_key";
xhr.open("POST", url);
xhr.setRequestHeader("Authorization", `Basic ${btoa(`api:${apiKey}`)}`);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log("Mail sent successfully!");
}
};
const formData = new FormData();
formData.append("from", "your_email@example.com");
formData.append("to", "recipient@example.com");
formData.append("subject", "Hello!");
formData.append("text", "Just wanted to say hi.");
xhr.send(formData);
Метод 4. Использование API-интерфейса Fetch
API-интерфейс Fetch предоставляет современную альтернативу XMLHttpRequest для выполнения HTTP-запросов. Вы можете использовать тот же подход, что и метод 3, но вместо этого использовать Fetch API. Вот пример:
const url = "https://api.mailgun.net/v3/your_domain.com/messages";
const apiKey = "your_api_key";
const data = {
from: "your_email@example.com",
to: "recipient@example.com",
subject: "Hello!",
text: "Just wanted to say hi.",
};
fetch(url, {
method: "POST",
headers: {
"Authorization": `Basic ${btoa(`api:${apiKey}`)}`,
"Content-Type": "application/x-www-form-urlencoded",
},
body: new URLSearchParams(data),
})
.then((response) => {
if (response.ok) {
console.log("Mail sent successfully!");
}
})
.catch((error) => {
console.error("An error occurred:", error);
});
В этой статье мы рассмотрели несколько способов отправки почты с помощью JavaScript. От простого протокола mailto до использования SMTP-серверов с такими библиотеками, как Nodemailer, или выполнения HTTP-запросов с использованием XMLHttpRequest или Fetch API — у вас есть ряд вариантов на выбор в зависимости от ваших конкретных требований. Внедрение этих методов в ваши приложения позволит вам беспрепятственно отправлять электронные письма и повысить удобство работы пользователей.