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}`);
});