feat: Kontaktformular sendet serverseitig per SMTP statt mailto

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
Claude Code
2026-04-06 20:14:05 +02:00
Ursprung 2053f215e5
Commit 6f0e6028c5

Datei anzeigen

@@ -351,21 +351,36 @@ function mdToHtml(md) {
}
});
// Form submit -> mailto fallback (no backend yet)
// Form submit -> server-side SMTP
window.submitContact = function (e) {
e.preventDefault();
var name = document.getElementById('cf-name').value;
var org = document.getElementById('cf-org').value;
var email = document.getElementById('cf-email').value;
var msg = document.getElementById('cf-message').value;
var btn = e.target.querySelector('button[type="submit"]');
if (btn) { btn.disabled = true; btn.textContent = 'Wird gesendet...'; }
var subject = 'Anfrage von ' + name + (org ? ' (' + org + ')' : '');
var body = 'Name: ' + name + '\nOrganisation: ' + (org || '-') + '\nE-Mail: ' + email + '\n\nNachricht:\n' + msg;
window.location.href = 'mailto:info@aegis-sight.de?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body);
document.getElementById('contact-form').style.display = 'none';
document.getElementById('form-success').style.display = 'block';
fetch('/api/contact', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name: document.getElementById('cf-name').value,
organisation: document.getElementById('cf-org').value,
email: document.getElementById('cf-email').value,
message: document.getElementById('cf-message').value
})
})
.then(function (r) { return r.json().then(function (d) { return { ok: r.ok, data: d }; }); })
.then(function (res) {
if (res.ok) {
document.getElementById('contact-form').style.display = 'none';
document.getElementById('form-success').style.display = 'block';
} else {
alert(res.data.error || 'Fehler beim Senden');
if (btn) { btn.disabled = false; btn.textContent = 'Nachricht senden'; }
}
})
.catch(function () {
alert('Verbindungsfehler. Bitte versuchen Sie es erneut.');
if (btn) { btn.disabled = false; btn.textContent = 'Nachricht senden'; }
});
return false;
};