Mail mit Nodemailer und Node.js-Server schicken?

Ich möchte eine Mail von einer html-Seite schicken lassen, auf welcher man die Sender-adresse und das Passwort des Senders angibt, habe aber ein Problem bei der Verbindung mit dem Server. Gedownloaded habe ich den Server, express, nodemailer, body-parser und cors.

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Email Sender</title>
</head>
<body>
    <h1>Email Sender</h1>
    <input type="email" id="from" placeholder="Von Email">
    <input type="password" id="password" placeholder="Email Passwort">
    <input type="text" id="text" placeholder="Nachricht">
    <button onclick="sendEmail()">Email Senden</button>

    <script>
        function sendEmail() {
            var fromEmail = document.getElementById('from').value;
            var emailPassword = document.getElementById('password').value;
            var message = document.getElementById('text').value;
    
            fetch('/send', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({ from: fromEmail, password: emailPassword, text: message })
            })
            .then(response => {
                if (!response.ok) {
                    throw new Error('Network response was not ok');
                }
                return response.json();
            })
            .then(data => {
                alert('E-Mail wurde erfolgreich gesendet!');
            })
            .catch(error => {
                console.error('Error:', error);
                alert('Fehler beim Senden der E-Mail: ' + error.message);
            });
        }
    </script>
    
</body>
</html>
const express = require('express');
const nodemailer = require('nodemailer');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

app.post('/send', (req, res) => {
    const { from, password, text } = req.body;

    const transporter = nodemailer.createTransport({
        service: 'gmail',
        auth: {
            user: from,
            pass: password
        }
    });

    const mailOptions = {
        from: from,
        to: 'ziel-email@gmail.com',
        subject: 'Nachricht von meiner Website',
        text: text
    };

    transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
            console.log(error);
            res.status(500).send({ status: 'error', message: error.message });
        } else {
            console.log('Email sent: ' + info.response);
            res.send({ status: 'success', message: 'Email sent' });
        }
    });
});

const PORT = 3000;
app.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});
HTML, Webseite, JavaScript, Programmiersprache, Webentwicklung, Backend, node.js

Meistgelesene Fragen zum Thema Programmiersprache