html-Schaltfläche zum Senden von E-Mails

Lesezeit: 8 Minuten

Benutzer-Avatar
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?

Benutzer-Avatar
armn

Sie können verwenden mailtohier ist der HTML-Code:

<a href="https://stackoverflow.com/questions/5773174/mailto:EMAILADDRESS">

Ersetzen EMAILADDRESS mit Ihrer E-Mail.

Benutzer-Avatar
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.

  • Ziemlich schockiert über die akzeptierte Antwort hier, wenn Sie und andere sich so viel Mühe gegeben haben, dies sehr gut zu erklären 🙁

    – Wesley Murch

    24. April 2011 um 21:16 Uhr

  • @Madmartigan: In der Tat. Ich fand den Kommentar-Thread, den Sie mit dem OP geführt haben, ziemlich aufschlussreich. Die akzeptierte Antwort schien … nicht hilfreich. Tatsächlich hätte ich es fast kommentiert und gefragt, wie sich das bewegt genau Die Aktion von einer Formularaktion zu einem Anker soll bei dem Thema/Körper-Problem in der Frage helfen. Nun ja.

    – David

    24. April 2011 um 21:19 Uhr

  • FWIW, viele meiner Kunden lieben Mailto-Links auf ihren Websites, auch wenn sie klobig sind, aber sie sind die Leute, die Standard-Microsoft-Tools für alles bei der Arbeit verwenden (einschließlich Standard-E-Mail-Programm) und mir E-Mails als .doc-Anhänge senden, haha

    – Wesley Murch

    24. April 2011 um 21:31 Uhr


  • Nun, die Abstimmung scheint dafür gesorgt zu haben. Für eine Minute dachte ich das war die akzeptierte Antwort. 🙂

    – Arlen Beiler

    30. Juni 2015 um 14:38 Uhr

  • Wie ich in meiner Antwort schreibe, erfüllt dieser Vorschlag nicht die Anfrage des OP, bei der es sich um eine E-Mail handelt mit Betreff und Nachricht. Außerdem funktioniert Davids Lösung nicht, weil die meisten, vielleicht alle Kombinationen aus Browsern und E-Mail-Clients die Attribute „Subject“ und „Body“ des mailto:-URI nicht akzeptieren, wenn sie als Aktion von

    bereitgestellt werden. Verwenden Sie stattdessen im Stil einer Schaltfläche.

    – björnte

    6. September 2016 um 10:57 Uhr


Benutzer-Avatar
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.

Benutzer-Avatar
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.)

Benutzer-Avatar
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.

  • Einige Browser unterstützten zumindest irgendwann Formulare mit Mailto-Aktionen. Sie würden die Daten als URL-codierte Nachricht an die angegebene Adresse senden. Es gab sogar eine Software, um Formulare direkt aus dem Postfach zu entschlüsseln und anzuzeigen. Ich habe solche Formulare jedoch seit einem Jahrzehnt nicht mehr gesehen, da das Versenden von E-Mails von der Serverseite einfach so viel besser ist.

    – Matti Virkkunen

    24. April 2011 um 20:58 Uhr


  • @Matti Virkkunen: Das ist interessant, das wusste ich noch nicht. Welche Browser unterstützen diese Funktion? Ich sehe eine Erwähnung davon hier.

    – Wesley Murch

    24. April 2011 um 21:01 Uhr


  • Vermutlich mindestens alte Version des IE. Tatsächlich habe ich ein solches Formular in meiner aktuellen Version von Chromium ausprobiert und es hat versucht, einen E-Mail-Client zu starten (ich habe jedoch keinen auf diesem Computer installiert), also tun sie zumindest noch etwas. Ich weiß allerdings nicht, ob die Daten durchgekommen sind.

    – Matti Virkkunen

    24. April 2011 um 21:03 Uhr

  • Ich habe es gerade in FF versucht und es öffnete mein MS Outlook (das nicht konfiguriert ist), gefüllt mit einigen der Formularwerte und dem Betreff “Form Post From Mozilla”. Interessant.

    – Wesley Murch

    24. April 2011 um 21:06 Uhr

1016980cookie-checkhtml-Schaltfläche zum Senden von E-Mails

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy