Frage

Dies ist ein wenig verwirrend, um zu erklären, so mit mir tragen, hier...

Ich möchte ein system einrichten, wo ein Benutzer können senden Sie Vorlagen von E-Mails über meine Internetseite, außer es ist wirklich nicht gesendet mit meinem server - es statt nur eröffnet Ihre eigene lokale E-mail-client mit E-Mail bereit zu gehen.Die Anwendung füllen Sie den Körper der E-Mail mit vordefinierten Variablen zu speichern, die Benutzer geben es sich.Sie können dann Bearbeiten Sie die Nachricht wie gewünscht, sollte Sie nicht genau passen Ihre Zwecke.

Es gibt eine Reihe von Gründe, warum ich will, dass es über die lokalen mail-client, so dass immer der server zum senden der E-Mail ist nicht eine option:es hat zu werden 100% client-Seite.

Ich habe bereits eine meist funktionierende Lösung ausgeführt wird, und ich werde nach den details, die als eine Antwort, ich Frage mich, ob es irgendwelche besser Weg?

War es hilfreich?

Lösung

So wie ich es jetzt tue, ist im Grunde wie folgt aus:

Der HTML-Code:

<textarea id="myText">
    Lorem ipsum...
</textarea>
<button onclick="sendMail(); return false">Send</button>

Die Javascript:

function sendMail() {
    var link = "mailto:me@example.com"
             + "?cc=myCCaddress@example.com"
             + "&subject=" + escape("This is my subject")
             + "&body=" + escape(document.getElementById('myText').value)
    ;

    window.location.href = link;
}

Dieses überraschenderweise funktioniert recht gut. Das einzige Problem ist, dass, wenn der Körper besonders lang (irgendwo über 2000 Zeichen), dann öffnet es nur eine neue E-Mail, aber es gibt keine Informationen darin. Ich vermute, dass es mit der maximalen Länge der URL zu tun sein würde überschritten wird.

Andere Tipps

Hier ist der Weg, um es mit jQuery und ein „Element“ zu tun zu klicken Sie auf:

$('#element').click(function(){
    $(location).attr('href', 'mailto:?subject='
                             + encodeURIComponent("This is my subject")
                             + "&body=" 
                             + encodeURIComponent("This is my body")
    );
});

Dann können Sie Ihre Inhalte erhalten entweder, indem es von Eingabefeldern Fütterung (dh. Mit $('#input1').val() oder von einem Server-Seite Skript mit $.get('...'). Viel Spaß

Sie brauchen keine Javascript, müssen Sie Ihre href wie folgt codiert werden:

<a href="mailto:me@me.com">email me here!</a>

Was ist eine live-Validierung auf das Textfeld, und einmal geht es über 2000 (oder was auch immer der maximale Schwellenwert ist), dann zeigt 'Diese E-Mail ist zu lange, um abgeschlossen werden, im browser, bitte <span class="launchEmailClientLink">launch what you have in your email client</span>'

Auf die würde ich haben

.launchEmailClientLink {
cursor: pointer;
color: #00F;
}

und jQuery dies in Ihren onDomReady

$('.launchEmailClientLink').bind('click',sendMail);

Sie können diesen kostenlosen Service nutzen: https://www.smtpjs.com

  1. Fügen Sie das Skript:

<script src="https://smtpjs.com/v2/smtp.js"> </script>

  1. Senden Sie eine E-Mail mit:

    Email.send("from@you.com", "to@them.com", "This is a subject", "this is the body", "smtp.yourisp.com", "username", "password");

Wenn dies nur wird die Benutzer-Client zu öffnen, die E-Mail zu schicken, warum sie es nicht zulassen, komponieren auch dort. Sie verlieren die Fähigkeit zu verfolgen, was sie senden, aber wenn das nicht wichtig ist, dann sammeln nur die Adressen und Betreff und den Client-Pop-up der Benutzer im Körper füllen zu lassen.

Das Problem mit der Idee ist, dass der Benutzer einen E-Mail-Client haben muß, was nicht der Fall ist, wenn er auf webmails verlassen, was der Fall für viele Anwender. (Zumindest gibt es keine Turn-around zu diesem Webmail zu umleiten, wenn ich das Problem vor einem Dutzend Jahren untersucht).

Das ist, warum die normale Lösung auf php mail () für das Senden von E-Mail angewiesen ist (Server-Seite, dann).

Aber wenn heute „E-Mail-Client“ ist immer gesetzt, automatisch, was möglicherweise zu einem Webmail-Client, werde ich glücklich sein zu wissen.

Anfrage senden an mandrillapp.com :

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
        console.log(xhttp.responseText);
    }
}
xhttp.open('GET', 'https://mandrillapp.com/api/1.0/messages/send.json?message[from_email]=mail@7995.by&message[to][0][email]=zdanevich.vitaly@yaa.ru&message[subject]=Заявка%20с%207995.by&message[html]=xxxxxx&key=oxddROOvCpKCp6InvVDqiGw', true);
xhttp.send();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top