Chcę, aby moja witryna mogła wysyłać wiadomości e-mail bez odświeżania strony. Więc chcę użyć Javascript.
<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" />
Oto jak chcę wywołać tę funkcję, ale nie jestem pewien, co wstawić do funkcji javascript. Z przeprowadzonych przeze mnie badań znalazłem przykład wykorzystujący metodę mailto, ale rozumiem, że tak naprawdę nie wysyłam bezpośrednio ze strony.
Więc moje pytanie brzmi: gdzie mogę znaleźć, co należy umieścić w funkcji JavaScript, aby wysłać wiadomość e-mail bezpośrednio ze strony internetowej.
function sendMail() {
/* ...code here... */
}
javascript
email
użytkownik906357
źródło
źródło
Odpowiedzi:
Nie można wysłać wiadomości e-mail bezpośrednio za pomocą javascript.
Możesz jednak otworzyć klienta poczty użytkownika:
Istnieją również pewne parametry do wstępnego wypełnienia tematu i ciała:
Innym rozwiązaniem byłoby wykonanie wywołania ajax na serwerze, aby serwer wysłał wiadomość e-mail. Uważaj, aby nikt nie wysyłał wiadomości e-mail za pośrednictwem Twojego serwera.
źródło
window.location.href
(jak w tej odpowiedzi: stackoverflow.com/questions/271171/... ), aby otworzyć klienta poczty e-mail i nie pozostawia tego pustego okna, gdy użytkownik skończy pracę z wiadomością e-mail.subject
ibody
zmienne czy są to rzeczywiste teksty, które będą w polach?window.open( String( 'mailto:recipient^example.com' ).replace('^', '@') );
pomylić boty spamującePośrednio za pośrednictwem serwera - wywoływanie interfejsu API innej firmy - bezpieczne i zalecane
Twój serwer może wywołać interfejs API strony trzeciej po odpowiednim uwierzytelnieniu i autoryzacji. Klucze API nie są udostępniane klientowi.
node.js - https://www.npmjs.org/package/node-mandrill
a następnie użyj use $ .ajax na kliencie, aby zadzwonić do twojego API e-mail.
Bezpośrednio od klienta - wywołanie interfejsu API strony trzeciej - niezalecane
Wyślij e-mail używając tylko JavaScript
Lubię to -
https://medium.com/design-startups/b53319616782
Uwaga: pamiętaj, że Twój klucz API jest widoczny dla każdego, więc każdy złośliwy użytkownik może użyć tego klucza do wysyłania wiadomości e-mail, które mogą pochłonąć Twój przydział.
źródło
Nie mogłem znaleźć odpowiedzi, która naprawdę odpowiadałaby pierwotnemu pytaniu.
Złożyłem prostą bezpłatną usługę, która umożliwia standardowe żądanie POST HTTP w celu wysłania wiadomości e-mail. Nazywa się PostMail i możesz po prostu opublikować formularz, użyć Javascript lub jQuery. Podczas rejestracji zapewnia kod, który można skopiować i wkleić na swojej stronie internetowej. Oto kilka przykładów:
JavaScript:
jQuery:
Ponownie, w pełnym ujawnieniu, stworzyłem tę usługę, ponieważ nie mogłem znaleźć odpowiedniej odpowiedzi.
źródło
W tym poście możesz znaleźć, co należy umieścić w funkcji JavaScript.
Podaj własny skrypt PHP (lub inny język), aby wysłać wiadomość e-mail.
źródło
Przekazuję ci wiadomości. NIE MOŻESZ wysłać e-maila z JavaScript jako takiego.W oparciu o kontekst pytania PO, moja powyższa odpowiedź nie jest już prawdą, jak wskazał @KennyEvitt w komentarzach. Wygląda na to, że możesz używać JavaScript jako klienta SMTP .
Jednak nie kopałem głębiej, aby dowiedzieć się, czy jest wystarczająco bezpieczny i kompatybilny z wieloma przeglądarkami. Dlatego nie mogę ani zachęcać, ani zniechęcać do korzystania z niego. Używaj na własne ryzyko.
źródło
Wiem, że jestem o wiele za późno, aby napisać odpowiedź na to pytanie, ale myślę, że przyda się to każdemu, kto myśli o wysyłaniu wiadomości e-mail za pomocą javascript.
Pierwszy sposób, który sugerowałbym, to skorzystanie z wywołania zwrotnego, aby to zrobić na serwerze. Jeśli naprawdę chcesz, aby to było obsługiwane przy użyciu javascript, zalecamy to.
Najłatwiej znalazłem użycie smtpJs. Darmowa biblioteka, z której można wysyłać wiadomości e-mail.
1. Dołącz skrypt jak poniżej
2. Możesz albo wysłać taki e-mail
Nie jest to wskazane, ponieważ wyświetli Twoje hasło po stronie klienta. Możesz więc wykonać następujące czynności, które szyfrują dane uwierzytelniające SMTP i zablokują je w jednej domenie, a zamiast nich przekażą bezpieczny token.
Wreszcie, jeśli nie masz serwera SMTP, korzystasz z usługi przekazywania SMTP, takiej jak Elastic Email
Również tutaj jest link do oficjalnej strony SmtpJS.com, gdzie można znaleźć wszystkie potrzebne przykłady i miejsce, w którym można utworzyć bezpieczny token.
Mam nadzieję, że ktoś uzna te szczegóły za przydatne. Szczęśliwego kodowania.
źródło
Wydaje się, że na horyzoncie pojawia się nowe rozwiązanie. To się nazywa EmailJS . Twierdzą, że nie jest potrzebny kod serwera. Możesz poprosić o zaproszenie.
Aktualizacja sierpień 2016: Wydaje się, że EmailJS już działa. Możesz wysyłać do 200 e-maili miesięcznie za darmo i oferuje subskrypcje na większe ilości.
źródło
window.open („mailto: [email protected]”); jak wyżej nie robi nic, aby ukryć adres e-mail „[email protected]” przed zbieraniem przez robotów spamujących. Kiedyś ciągle napotykałem ten problem.
źródło
JavaScript jest po stronie klienta, nie można wysyłać wiadomości e-mail za pomocą Javascript. Przeglądarka rozpoznaje może tylko
mailto:
i uruchamia domyślnego klienta poczty.źródło
W swojej
sendMail()
funkcji dodaj wywołanie ajax do swojego backendu, gdzie możesz to zaimplementować po stronie serwera.źródło
źródło
JavaScript nie może wysyłać wiadomości e-mail z przeglądarki internetowej. Jednak wycofując się z rozwiązania, które już próbowałeś wdrożyć, możesz zrobić coś, co spełnia pierwotne wymagania:
Za pomocą JavaScript można skonstruować wartości, których będzie potrzebować e-mail, a następnie wysłać żądanie AJAX do zasobu serwera, który faktycznie wysyła wiadomość e-mail. (Nie wiem, jakich języków / technologii używasz po stronie serwera, więc ta część zależy od Ciebie.)
Jeśli nie znasz AJAX, szybkie wyszukiwanie w Google dostarczy Ci wielu informacji. Zasadniczo można go szybko uruchomić dzięki funkcji $ .ajax () jQuery. Musisz tylko mieć stronę na serwerze, którą można wywołać w żądaniu.
źródło
Wydaje się, że jedną „odpowiedzią” na to jest wdrożenie klienta SMPT. Zobacz email.js, aby uzyskać bibliotekę JavaScript z klientem SMTP.
Oto repozytorium GitHub dla klienta SMTP. W oparciu o README repozytorium wydaje się, że w zależności od przeglądarki klienta mogą być wymagane różne podkładki dystansowe lub wieloukładowe, ale ogólnie rzecz biorąc wydaje się to wykonalne (jeśli w rzeczywistości nie osiągnięte w znacznym stopniu), jednak nie w sposób, który można łatwo opisać nawet w uzasadniony sposób - długa odpowiedź tutaj.
źródło
Istnieje usługa łączona. Możesz połączyć wyżej wymienione rozwiązania, takie jak mandrill, z usługą EmailJS, co może zwiększyć bezpieczeństwo systemu. Jednak jeszcze nie uruchomili usługi.
źródło
Innym sposobem wysyłania wiadomości e-mail z JavaScript jest użycie directtomx.com w następujący sposób;
Następnie wywołaj go ze swojej strony w następujący sposób;
źródło
Zrobiłbym to z biblioteką SMTPJ, która oferuje szyfrowanie twoich danych uwierzytelniających, takich jak nazwa użytkownika, hasło itp.
źródło
Nie ma prostej odpowiedzi na twoje pytanie, ponieważ nie możemy wysyłać wiadomości e-mail tylko za pomocą javascript, ale istnieją sposoby na użycie javascript do wysyłania e-maili dla nas:
1) korzystanie z interfejsu API i wywoływanie interfejsu API za pomocą javascript w celu wysłania do nas wiadomości e-mail, na przykład https://www.emailjs.com mówi, że możesz użyć takiego kodu poniżej, aby wywołać ich interfejs po pewnych ustawieniach:
2) utwórz kod zaplecza, aby wysłać wiadomość e-mail, możesz użyć dowolnej struktury zaplecza, aby to zrobić za Ciebie.
3) używając czegoś takiego:
który otworzy twoją aplikację e-mail, może to spowodować zablokowanie wyskakującego okienka w przeglądarce.
Ogólnie rzecz biorąc, wysyłanie wiadomości e-mail jest zadaniem serwera, więc powinno się to odbywać w językach zaplecza, ale możemy używać javascript do zbierania potrzebnych danych i wysyłania ich na serwer lub interfejs API, możemy również użyć aplikacji trzeciej parytetu i otworzyć je za pomocą przeglądarki przy użyciu javascript, jak wspomniano powyżej.
źródło
Krótka odpowiedź jest taka, że nie można tego zrobić przy użyciu samego JavaScript. Będziesz potrzebował modułu obsługi po stronie serwera, aby połączyć się z serwerem SMTP, aby faktycznie wysłać pocztę. Istnieje wiele prostych skryptów pocztowych online, takich jak ten dla PHP:
Użyj Ajaxa, aby wysłać żądanie do skryptu PHP, sprawdź, czy wymagane pole nie jest puste lub niepoprawne, używając js również przechowuj pocztę wysyłaną przez kogo z twojego serwera.
Sprawdź, czy nie wystąpił błąd podczas wysyłania wiadomości ze skryptu i podejmij odpowiednie działania.
Aby rozwiązać ten problem, na przykład, jeśli adres e-mail jest niepoprawny lub wiadomość nie została wysłana z powodu problemu z serwerem lub jest w kolejce w takim stanie, natychmiast zgłoś to użytkownikowi i zapobiegaj wielokrotnemu wysyłaniu tej samej wiadomości e-mail. Uzyskaj odpowiedź ze skryptu Używając jQuery GET i POST
źródło
Ponieważ są to wspaniałe informacje, nazywa się mały interfejs API Mandrill do wysyłania wiadomości e-mail z javascript i działa idealnie. Możesz spróbować. Oto mały poradnik na początek.
źródło
Wyślij wiadomość e-mail za pomocą JavaScript lub jQuery
źródło
var objO = new ActiveXObject('Outlook.Application');