
Benutzer544079
Wie sende ich eine E-Mail mit festgelegten Anfangswerten für die Header? subject
und message
von einer Schaltfläche in HTML, wie dieser
<form method="post" action="mailto:email.com?subject=subject&message=message">
wo subject
und message
sind Werte, die von a abgerufen werden form
?

armn
Sie können verwenden mailto
hier ist der HTML-Code:
<a href="https://stackoverflow.com/questions/5773174/mailto:EMAILADDRESS">
Ersetzen EMAILADDRESS
mit Ihrer E-Mail.

David
Diese Methode scheint in meinem Browser nicht zu funktionieren, und wenn Sie sich umschauen, zeigt sich, dass das gesamte Thema der Angabe von Headern für a mailto
Link/Aktion wird nur spärlich unterstützt, aber vielleicht kann das helfen …
HTML:
<form id="fr1">
<input type="text" id="tb1" />
<input type="text" id="tb2" />
<input type="button" id="bt1" value="click" />
</form>
JavaScript (mit jQuery):
$(document).ready(function() {
$('#bt1').click(function() {
$('#fr1').attr('action',
'mailto:[email protected]?subject=" +
$("#tb1').val() + '&body=' + $('#tb2').val());
$('#fr1').submit();
});
});
Beachten Sie, was ich hier mache. Dem Formular selbst ist keine Aktion zugeordnet. Und der Submit-Button ist nicht wirklich ein submit
Typ, es ist nur ein button
Typ. Mit JavaScript binde ich mich an das Klickereignis dieser Schaltfläche, setze das Aktionsattribut des Formulars und sende dann das Formular.
Es funktioniert insofern, als es das Formular an a übermittelt mailto
Aktion (mein Standard-E-Mail-Programm erscheint und öffnet eine neue Nachricht an die angegebene Adresse), aber für mich (Safari, Mail.app) gibt es nicht wirklich den Betreff oder Text in der resultierenden Nachricht an.
HTML ist nicht wirklich ein sehr gutes Medium, um dies zu tun, da ich sicher bin, dass andere darauf hinweisen, während ich dies schreibe. Es ist möglich, dass dies in einigen Browsern und/oder einigen E-Mail-Clients funktioniert. Es ist jedoch nicht einmal mehr eine sichere Annahme, dass Benutzer heutzutage einen fetten Mail-Client haben werden. Ich kann mich nicht erinnern, wann ich meine das letzte Mal geöffnet habe. HTML mailto
ist ein bisschen Legacy-Funktionalität und heutzutage ist es wirklich gut, dass Sie die Mail-Aktion, wenn möglich, auf der Serverseite durchführen.

björnte
Wie David feststellt, erfüllt sein Vorschlag nicht die Anfrage des OP, die eine E-Mail war mit Betreff und Nachricht. Es funktioniert nicht, weil die meisten, vielleicht alle Kombinationen aus Browsern und E-Mail-Clients das nicht akzeptieren subject
und body
Attribute der mailto:
URI bei Bereitstellung als <form>
‘s action
.
Aber hier ist ein funktionierendes Beispiel:
HTML (mit Bootstrap Stile):
<p><input id="subject" type="text" placeholder="type your subject here"
class="form-control"></p>
<p><input id="message" type="text" placeholder="type your message here"
class="form-control"></p>
<p><a id="mail-link" class="btn btn-primary">Create email</a></p>
JavaScript (mit jQuery):
<script type="text/javascript">
function loadEvents() {
var mailString;
function updateMailString() {
mailString = '?subject=" + encodeURIComponent($("#subject').val())
+ '&body=' + encodeURIComponent($('#message').val());
$('#mail-link').attr('href', 'mailto:[email protected]' + mailString);
}
$( "#subject" ).focusout(function() { updateMailString(); });
$( "#message" ).focusout(function() { updateMailString(); });
updateMailString();
}
</script>
Anmerkungen:
- Das
<form>
Element mit zugehörigem action
Attribut wird nicht verwendet.
- Das
<input>
Element des Typs button
wird auch nicht verwendet.
<a>
gestylt als Button (hier mit Bootstrap) ersetzt <input type="button">
focusout()
mit updateMailString()
ist notwendig, weil die <a>
Stichworte href
-Attribut wird nicht automatisch aktualisiert, wenn sich die Werte der Eingabefelder ändern.
updateMailString()
wird auch beim Laden des Dokuments aufgerufen, falls die Eingabefelder vorbelegt sind.
- Ebenfalls
encodeURIComponent()
wird verwendet, um Zeichen wie das Anführungszeichen (“) nach Outlook zu übertragen.
Bei diesem Ansatz ist die mailto:
URI geliefert wird (mit subject
und body
Attribute) in einem a
Element href
Schild. Dies funktioniert in allen von mir getesteten Kombinationen von Browsern und E-Mail-Clients, die aktuelle (2015) Versionen von sind:
- Browser: Firefox/Win&OSX, Chrome/Win&OSX, IE/Win, Safari/OSX&iOS, Opera/OSX
- E-Mail-Clients: Outlook/Win, Mail.app/OSX&iOS, Sparrow/OSX
Bonus-Tipp: In meinen Anwendungsfällen füge ich der E-Mail einen kontextbezogenen Text hinzu body
. Meistens möchte ich, dass dieser Text Zeilenumbrüche enthält. %0D%0A
(Wagenrücklauf und Zeilenvorschub) funktioniert in meinen Tests.

Benutzer949286
Ich konnte nie eine Antwort finden, die die ursprüngliche Frage wirklich befriedigte, also habe ich einen einfachen kostenlosen Service zusammengestellt (Die Post), mit der Sie eine Standard-HTTP-POST-Anforderung zum Senden einer E-Mail senden können. Wenn Sie sich anmelden, erhalten Sie einen Code, den Sie kopieren und in Ihre Website einfügen können. In diesem Fall können Sie einfach einen Formularpost verwenden:
HTML:
<form action="https://postmail.invotes.com/send"
method="post" id="email_form">
<input type="text" name="subject" placeholder="Subject" />
<textarea name="text" placeholder="Message"></textarea>
<!-- replace value with your access token -->
<input type="hidden" name="access_token" value="{your access token}" />
<input type="hidden" name="success_url"
value=".?message=Email+Successfully+Sent%21&isError=0" />
<input type="hidden" name="error_url"
value=".?message=Email+could+not+be+sent.&isError=1" />
<input id="submit_form" type="submit" value="Send" />
</form>
Nochmals, in voller Offenlegung, ich habe diesen Dienst erstellt, weil ich keine passende Antwort finden konnte.
Sie können eine E-Mail nicht direkt mit einem HTML-Formular senden. Sie können das Formular jedoch an Ihren Webserver senden und dann die E-Mail mit einem serverseitigen Programm generieren, das zB in PHP geschrieben ist.
Die andere Lösung besteht darin, einen Link zu erstellen, wie Sie es mit “mailto:” getan haben. Dadurch wird das lokale E-Mail-Programm des Benutzers geöffnet. Und er/sie kann dann die vorausgefüllte E-Mail versenden.
Wenn Sie sich entschieden haben, wie Sie es machen möchten, können Sie auf dieser Seite eine weitere (spezifischere) Frage stellen. (Oder Sie können irgendwo im Internet nach einer Lösung suchen.)

Sagar Patra
@ user544079
Obwohl es jetzt sehr alt und irrelevant ist, antworte ich, um Leuten wie mir zu helfen! es sollte so sein:
<form method="post" action="mailto:$emailID?subject=$MySubject &message= $MyMessageText">
Hier sind $emailID, $MySubject, $MyMessageText Variablen, die Sie aus einem FORM oder einer DATABASE-Tabelle zuweisen, oder Sie können einfach Werte in Ihrem Code selbst zuweisen. Alternativ können Sie den Code auch so einfügen (normalerweise wird er nicht verwendet):
<form method="post" action="mailto:[email protected]?subject=New Registration Alert &message= New Registration requires your approval">
Sie können einen Anker verwenden, um zu versuchen, den vorab ausgefüllten Standard-E-Mail-Client des Benutzers zu öffnen mailto:
, aber Sie können die eigentliche E-Mail nicht senden. * Anscheinend ist dies auch mit einer Formularaktion möglich, aber die Browserunterstützung ist unterschiedlich und unzuverlässig, daher empfehle ich dies nicht.
HTML kann keine E-Mails senden, Sie müssen eine serverseitige Sprache wie PHP verwenden, was ein anderes Thema ist. Es gibt viele gute Ressourcen, wie man das hier auf SO oder anderswo im Internet macht.
Wenn Sie PHP verwenden, verstehe ich SwiftMailer ziemlich viel vorgeschlagen.
10169800cookie-checkhtml-Schaltfläche zum Senden von E-Mailsyes