Ich möchte, dass meine Website eine E-Mail senden kann, ohne die Seite zu aktualisieren. Also möchte ich Javascript verwenden.
<form action="javascript:sendMail();" name="pmForm" id="pmForm" method="post">
Enter Friend's Email:
<input name="pmSubject" id="pmSubject" type="text" maxlength="64" style="width:98%;" />
<input name="pmSubmit" type="submit" value="Invite" />
Hier ist, wie ich die Funktion aufrufen möchte, aber ich bin nicht sicher, was ich in die Javascript-Funktion einfügen soll. Aus den Recherchen, die ich durchgeführt habe, habe ich ein Beispiel gefunden, das die mailto-Methode verwendet, aber ich verstehe, dass das nicht direkt von der Site gesendet wird.
Meine Frage ist also, wo ich finde, was ich in die JavaScript-Funktion einfügen kann, um eine E-Mail direkt von der Website zu senden.
function sendMail() {
/* ...code here... */
}
javascript
email
user906357
quelle
quelle
Antworten:
Sie können keine E-Mail direkt mit Javascript senden.
Sie können jedoch den E-Mail-Client des Benutzers öffnen:
Es gibt auch einige Parameter, um das Thema und den Körper vorab zu füllen:
Eine andere Lösung wäre, einen Ajax-Anruf an Ihren Server zu tätigen, damit der Server die E-Mail sendet. Achten Sie darauf, dass niemand E-Mails über Ihren Server senden darf.
quelle
window.location.href
(wie in dieser Antwort: stackoverflow.com/questions/271171/… ) den E-Mail-Client öffnen und dieses leere Fenster bleibt nicht zurück, wenn der Benutzer mit der E-Mail fertig ist.subject
undbody
Variablen oder sind sie der tatsächliche Text, der in den Feldern sein wird?window.open( String( 'mailto:recipient^example.com' ).replace('^', '@') );
Spam-Bots verwirrenIndirekt über Ihren Server - Aufruf der Drittanbieter-API - sicher und empfohlen
Ihr Server kann die Drittanbieter-API nach ordnungsgemäßer Authentifizierung und Autorisierung aufrufen. Die API-Schlüssel sind nicht für den Client verfügbar.
node.js - https://www.npmjs.org/package/node-mandrill
Verwenden Sie dann $ .ajax auf dem Client, um Ihre E-Mail-API aufzurufen.
Direkt vom Client - Aufruf der Drittanbieter-API - nicht empfohlen
Senden Sie eine E-Mail nur mit JavaScript
So was -
https://medium.com/design-startups/b53319616782
Hinweis: Beachten Sie, dass Ihr API-Schlüssel für jeden sichtbar ist, sodass jeder böswillige Benutzer Ihren Schlüssel verwenden kann, um E-Mails zu versenden, die Ihr Kontingent verschlingen können.
quelle
Ich konnte keine Antwort finden, die die ursprüngliche Frage wirklich befriedigte.
Ich habe einen einfachen kostenlosen Dienst zusammengestellt, mit dem Sie eine Standard-HTTP-POST-Anfrage zum Senden einer E-Mail stellen können. Es heißt PostMail und Sie können einfach ein Formular veröffentlichen, Javascript oder jQuery verwenden. Wenn Sie sich anmelden, erhalten Sie Code, den Sie kopieren und in Ihre Website einfügen können. Hier sind einige Beispiele:
Javascript:
jQuery:
Bei vollständiger Offenlegung habe ich diesen Dienst erneut erstellt, da ich keine passende Antwort finden konnte.
quelle
In diesem Beitrag finden Sie Informationen zur JavaScript-Funktion.
Stellen Sie Ihr eigenes PHP-Skript (oder eine andere Sprache) zum Senden der E-Mail bereit.
quelle
Ich bringe Ihnen die Neuigkeiten. Sie können keine E-Mail mit JavaScript per se senden.Aufgrund des Kontextes der Frage des OP gilt meine obige Antwort nicht mehr, wie @KennyEvitt in den Kommentaren ausgeführt hat. Sie können anscheinend JavaScript als SMTP-Client verwenden .
Allerdings habe ich, digged nicht tiefer, um herauszufinden , ob es sicher und Cross-Browser - kompatibel genug. Daher kann ich Sie weder ermutigen noch entmutigen, es zu verwenden. Benutzung auf eigene Gefahr.
quelle
Ich weiß, dass ich viel zu spät bin, um eine Antwort auf diese Frage zu schreiben, aber ich denke trotzdem, dass dies für jeden nützlich sein wird, der daran denkt, E-Mails über Javascript zu versenden.
Der erste Weg, den ich vorschlagen würde, ist die Verwendung eines Rückrufs, um dies auf dem Server zu tun. Wenn Sie wirklich möchten, dass es mit Javascript gehandhabt wird, empfehle ich Folgendes.
Der einfachste Weg, den ich gefunden habe, war die Verwendung von smtpJs. Eine kostenlose Bibliothek, mit der Sie E-Mails senden können.
1. Schließen Sie das Skript wie unten ein
2. Sie können entweder eine solche E-Mail senden
Dies ist nicht ratsam, da Ihr Kennwort auf der Clientseite angezeigt wird. Auf diese Weise können Sie die folgenden Schritte ausführen, um Ihre SMTP-Anmeldeinformationen zu verschlüsseln, sie an eine einzelne Domäne zu sperren und stattdessen anstelle der Anmeldeinformationen ein sicheres Token zu übergeben.
Wenn Sie keinen SMTP-Server haben, verwenden Sie einen SMTP-Relay-Dienst wie Elastic Email
Hier finden Sie auch den Link zur offiziellen SmtpJS.com-Website, auf der Sie alle benötigten Beispiele und den Ort finden, an dem Sie Ihr sicheres Token erstellen können.
Ich hoffe, jemand findet diese Details hilfreich. Viel Spaß beim Codieren.
quelle
Es scheint eine neue Lösung am Horizont zu geben. Es heißt EmailJS . Sie behaupten, dass kein Servercode benötigt wird. Sie können eine Einladung anfordern.
Update August 2016: EmailJS scheint bereits live zu sein. Sie können bis zu 200 E-Mails pro Monat kostenlos senden und es werden Abonnements für höhere Volumes angeboten.
quelle
window.open ('mailto: [email protected]'); Wie oben wird die E-Mail-Adresse "[email protected]" nicht vor der Ernte durch Spambots geschützt. Ich bin ständig auf dieses Problem gestoßen.
quelle
Javascript ist clientseitig, Sie können keine E-Mails mit Javascript senden. Der Browser erkennt möglicherweise nur
mailto:
und startet Ihren Standard-Mail-Client.quelle
sendMail()
Fügen Sie in Ihrer Funktion Ihrem Backend einen Ajax-Aufruf hinzu, den Sie auf der Serverseite implementieren können.quelle
quelle
JavaScript kann keine E-Mails von einem Webbrowser senden. Wenn Sie jedoch von der Lösung zurücktreten, die Sie bereits zu implementieren versucht haben, können Sie etwas tun, das die ursprüngliche Anforderung erfüllt:
Sie können JavaScript verwenden, um die Werte zu erstellen, die die E-Mail benötigt, und dann eine AJAX-Anforderung an eine Serverressource senden, die die E-Mail tatsächlich sendet. (Ich weiß nicht, welche serverseitigen Sprachen / Technologien Sie verwenden, daher liegt dieser Teil bei Ihnen.)
Wenn Sie mit AJAX nicht vertraut sind, erhalten Sie durch eine schnelle Google-Suche viele Informationen. Im Allgemeinen können Sie es mit der $ .ajax () -Funktion von jQuery schnell zum Laufen bringen. Sie benötigen lediglich eine Seite auf dem Server, die in der Anforderung aufgerufen werden kann.
quelle
Es scheint, als ob eine Antwort darauf darin besteht, einen SMPT-Client zu implementieren. In email.js finden Sie eine JavaScript-Bibliothek mit einem SMTP-Client.
Hier ist das GitHub-Repo für den SMTP-Client. Basierend auf der README-Datei des Repos scheint es, dass je nach Client-Browser verschiedene Shims oder Polyfills erforderlich sein können, aber insgesamt scheint dies durchaus machbar (wenn nicht tatsächlich signifikant erreicht) zu sein, obwohl dies nicht einmal von einem vernünftigen Benutzer leicht zu beschreiben ist. lange Antwort hier.
quelle
Es gibt einen Kombinationsservice. Sie können die oben aufgeführten Lösungen wie Mandrill mit einem Service EmailJS kombinieren, wodurch das System sicherer wird. Sie haben den Dienst jedoch noch nicht gestartet.
quelle
Eine andere Möglichkeit, E-Mails von JavaScript aus zu senden, besteht darin, directtomx.com wie folgt zu verwenden.
Rufen Sie es dann von Ihrer Seite wie folgt auf;
quelle
Ich würde das mit der SMTPJ- Bibliothek tun. Sie bietet Verschlüsselung für Ihre Anmeldeinformationen wie Benutzername, Passwort usw.
quelle
Es gibt keine eindeutige Antwort auf Ihre Frage, da wir E-Mails nicht nur mit Javascript senden können, sondern es gibt Möglichkeiten, Javascript zum Senden von E-Mails für uns zu verwenden:
1) Verwenden einer API, um die API per Javascript an uns zu senden, um die E-Mail für uns zu senden. Https://www.emailjs.com sagt beispielsweise , dass Sie einen solchen Code verwenden können, um die API nach einigen Einstellungen aufzurufen:
2) Erstellen Sie einen Backend-Code, um eine E-Mail für Sie zu senden. Sie können jedes Backend-Framework verwenden, um dies für Sie zu tun.
3) mit etwas wie:
Wenn Sie Ihre E-Mail-Anwendung öffnen, wird dies möglicherweise in einem blockierten Popup in Ihrem Browser angezeigt.
Im Allgemeinen ist das Senden einer E-Mail eine Serveraufgabe, sollte also in Backend-Sprachen erfolgen. Wir können jedoch Javascript verwenden, um die benötigten Daten zu sammeln und an den Server oder die API zu senden. Außerdem können wir die Anwendung für dritte Paritäten verwenden und sie öffnen über den Browser mit Javascript wie oben erwähnt.
quelle
Die kurze Antwort lautet, dass Sie dies nicht allein mit JavaScript tun können. Sie benötigen einen serverseitigen Handler, um eine Verbindung zum SMTP-Server herzustellen und die E-Mails tatsächlich zu senden. Es sind viele einfache Mail-Skripte online, wie dieses für PHP:
Verwenden Sie Ajax , um eine Anfrage an das PHP-Skript zu senden. Überprüfen Sie mithilfe von js, ob das erforderliche Feld nicht leer oder falsch ist. Führen Sie außerdem eine Aufzeichnung der von wem von Ihrem Server gesendeten E-Mails.
Suchen Sie in Ihrem Skript nach Fehlern, die beim Versenden aufgetreten sind, und ergreifen Sie die entsprechenden Maßnahmen.
Um das Problem zu beheben, wenn beispielsweise die E-Mail-Adresse falsch ist oder die E-Mail aufgrund eines Serverproblems nicht gesendet wird oder sich in einem solchen Zustand in der Warteschlange befindet, melden Sie dies sofort dem Benutzer und verhindern Sie, dass dieselbe E-Mail immer wieder mehrfach gesendet wird. Erhalten Sie eine Antwort von Ihrem Skript mit jQuery GET und POST
quelle
Da dies alles wundervolle Infos sind, gibt es eine kleine API namens Mandrill , um Mails aus Javascript zu versenden, und sie funktioniert perfekt. Sie können es versuchen. Hier ist ein kleines Tutorial für den Start.
quelle
Senden Sie eine E-Mail mit JavaScript oder jQuery
quelle
var objO = new ActiveXObject('Outlook.Application');