MAILTO in JavaScript?
Hallo,
Ich möchte gerne eine Email verschicken, also nach Knopfdruck(Buttonclick) soll das Mailprogramm geöffnet werden. Es soll bereits der Empfänger, der Betreff und ein Teil des Bodys bzw. des Inhaltes gefüllt werden. Ich habe die Mailto- Funktion gefunden in Html. Aber diese ist mir eine zu schlechte Lösung da ich dort alles bereits im html Code einfügen muss. Hat da jemand eine gute Lösung?
3 Antworten
ich hab mal einach mit einem selbst gebastelteten Input-"Formular" gespielt.
In der die input Felder geben ein default vor.
Der eigentlichemailto:: wird dynamisch erzeugt.
natürlich ist es durchaus möglich die defaults auch per Javascript festzulegen theoretisch sogar "verschüsselt" gegen Email-Suchbots...
Das würde jedoch das ganze zu unübersichtlich gestalten .
(bei bedarf nochmal nachfragen)
demo.html:
<html>
<body>
<h3>create a dynamic Mailto</h3>
<label for="recipend">Empfänger:</label><input type="text" id="recipend" value="Donalt@Duck.quak"><p>
<label for="bcc">BCC</label><input type="text" id="bcc" value="Esel@donkey.ia"><p>
<label for="cc">CC:</label><input type="text" id="cc" value="kitty@Duck.quak,Dagobert@Duck.quak"><p>
<label for="subject">Betreff:</label><input type="text" id="subject" value="Some text..."><p>
<p>Click the "Try it" button to get the text in the text field.</p>
<button onclick="makeMailtoLink()">create MailTo Link</button>
<p id="demo">Email: versteckt</p>
<script>
function makeMailtoLink() {
var x='<a href="mailto:'
x =x+document.getElementById("recipend").value;
if (document.getElementById("cc").value != '') x = x + '?cc='+ document.getElementById("cc").value;
if (document.getElementById("bcc").value != '') x = x + '&bcc='+ document.getElementById("bcc").value;
if (document.getElementById("subject").value != '') {
//space und sonderzeichen in uricode umwandeln
x = x + '&subject=' + encodeURIComponent(document.getElementById("subject").value);
}
x = x + '" target="_top">Mail me!</a>'
document.getElementById("demo").innerHTML = x;
}
</script>
</body>
+</html>
totale Heimlichtuerei:
die im html definierten Emailadressen sind ein Köder für Bots.
im Script-bereich werden die eigendlichen defaultaddressen so definiert, das bots sie nicht als solche erkennen. $placeholder$ wird erst beim "schreiben" nach @ "übersetzt"
<html>
<body>
...wie oben
<script>
document.getElementById("recipend").value='muh$placeholder$kuh.mu'.replace(/\$placeholder\$/g,'@');
document.getElementById("cc").value='winny$placeholder$puh.br,balu$placeholder$dschungl.bk'.replace(/\$placeholder\$/g,'@');
document.getElementById("bcc").value='heidie$placeholder$kuh.mu'.replace(/\$placeholder\$/g,'@');
function makeMailtoLink() {
...wie oben
}
</script>
</body>
Vermutlich willst Du ein Formular, in das der User Daten eingibt und das dann abgeschickt wird, wenn der User auf "Senden" klickt?
<!doctype html>
<title>Mail abschicken</title>
<script>
function abschicken() {
var link = "mailto:deineAdresse@example.com" +
"?subject=" + escape(document.getElementById('subject').value) +
"&body=" + escape(document.getElementById('mailtext').value)
window.location.href = link;
}
</script>
<p><input id="subject" placeholder="Betreff eintragen"></p>
<p><textarea id="mailtext">Hier der Text ...</textarea></p>
<p><button onclick="abschicken(); return false">Abschicken</button></p>
Alex
du musst zwangsweise im code einfuegen was gesendet wird, unterschied ist das man zb php code nicht sieht. alternativ text , name und email vom nutzer angeben lassen:
https://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_mail