W moim settings.py
mam:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Host for sending e-mail.
EMAIL_HOST = 'localhost'
# Port for sending e-mail.
EMAIL_PORT = 1025
# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
Mój kod e-mail:
from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['[email protected]'])
email.send()
Oczywiście, jeśli skonfiguruję serwer do debugowania przez python -m smtpd -n -c DebuggingServer localhost:1025
, widzę wiadomość e-mail na moim terminalu.
Jednak w jaki sposób mam wysłać wiadomość e-mail nie na serwer debugowania, ale na adres [email protected]?
Po przeczytaniu twoich odpowiedzi pozwól mi coś wyjaśnić:
Nie możesz używać localhost (prostego komputera ubuntu) do wysyłania wiadomości e-mail?
Myślałem, że w django 1.3
send_mail()
jest nieco przestarzałe iEmailMessage.send()
jest używane zamiast tego?
Odpowiedzi:
Wyślij wiadomość e-mail do prawdziwego serwera SMTP. Jeśli nie chcesz zakładać własnej, możesz znaleźć firmy, które będą ją prowadzić, na przykład same Google.
źródło
Używam Gmaila jako mojego serwera SMTP dla Django. O wiele łatwiejsze niż radzenie sobie z postfiksem lub jakimkolwiek innym serwerem. Nie zajmuję się zarządzaniem serwerami poczty elektronicznej.
W settings.py:
UWAGA : w 2016 roku Gmail domyślnie już na to nie zezwala. Możesz skorzystać z usługi zewnętrznej, takiej jak Sendgrid, lub skorzystać z tego samouczka od Google, aby zmniejszyć bezpieczeństwo, ale zezwolić na tę opcję: https://support.google.com/accounts/answer/6010255
źródło
django-admin.py startproject gmail
Edytuj settings.py kodem poniżej:
Uruchom tryb interaktywny:
python manage.py shell
Importuj moduł EmailMessage:
Wyślij email:
Aby uzyskać więcej informacji, sprawdź
send_mail
iEmailMessage
funkcje w dokumentach .UPDATE dla Gmaila
Również jeśli masz problemy z wysyłaniem e-maili przez Gmaila, pamiętaj, aby sprawdzić te przewodniki od Google.
W ustawieniach konta Google przejdź do
Security > Account permissions > Access for less secure apps
i włącz tę opcję.Utwórz także hasło aplikacji do Gmaila po włączeniu dla niej weryfikacji dwuetapowej .
Następnie w ustawieniach należy użyć hasła aplikacji . Więc zmień następującą linię:
Jeśli jesteś zainteresowany wysyłaniem wiadomości e-mail w formacie HTML, sprawdź to .
źródło
Moja witryna jest hostowana
Godaddy
i mam na niej zarejestrowany prywatny adres e-mail. Oto ustawienia, które działały u mnie:W settings.py:
W skorupkach:
Wtedy otrzymałem „1” jako O / P czyli Sukces. Otrzymałem też pocztę. :)
źródło
W przypadku Django w wersji 1.7, jeśli powyższe rozwiązania nie działają, spróbuj następujących rozwiązań
w settings.py dodaj
Ostatnia linia załatwiła sprawę w przypadku django 1.7
źródło
Musisz użyć smtp jako zaplecza w settings.py
Jeśli używasz zaplecza jako konsoli, otrzymasz dane wyjściowe w konsoli
A także poniżej ustawienia dodatkowo
Jeśli używasz Gmaila do tego, konfiguracji 2-stopniową weryfikację i hasło konkretnego zastosowania i skopiuj i wklej to hasło w powyżej wartości EMAIL_HOST_PASSWORD.
źródło
Zauważyłem, że użycie SendGrid jest najłatwiejszym sposobem skonfigurowania wysyłania wiadomości e-mail za pomocą Django. Oto jak to działa:
settings.py
:EMAIL_HOST = 'smtp.sendgrid.net' EMAIL_HOST_USER = '<your sendgrid username>' EMAIL_HOST_PASSWORD = '<your sendgrid password>' EMAIL_PORT = 587 EMAIL_USE_TLS = True
I gotowe!
Aby wysłać e-mail:
Jeśli chcesz, aby Django wysyłało Ci e-maila za każdym razem, gdy wystąpi wewnętrzny błąd serwera 500, dodaj do swojego
settings.py
:Wysyłanie e-maili za pomocą SendGrid jest darmowe do 12 000 e-maili miesięcznie.
źródło
Właściwie to zrobiłem to od Django jakiś czas temu. Otwórz legalne konto GMail i wprowadź tutaj poświadczenia. Oto mój kod -
źródło
smtplib
bezpośredniego użycia ; Django zajmie się tą częścią za Ciebie.send_mail
send_mail()
jak byś to zrobił. Nadal musisz samodzielnie złożyć wiadomość, ale nie musisz się martwić o bity SMTP.Późno, ale:
Oprócz
DEFAULT_FROM_EMAIL
poprawki, o której wspominali inni, i umożliwienia mniej bezpiecznym aplikacjom dostępu do konta, musiałem przejść do https://accounts.google.com/DisplayUnlockCaptcha po zalogowaniu się jako konto, o którym mowa, aby Django ostatecznie uwierzytelniło się .Poszedłem pod ten adres URL przez tunel SSH do serwera WWW, aby upewnić się, że adres IP jest taki sam; Nie jestem do końca pewien, czy to konieczne, ale nie zaszkodzi. Możesz to zrobić w następujący sposób:
ssh -D 8080 -fN <username>@<host>
a następnie ustaw przeglądarkę internetową, aby używała golocalhost:8080
jako proxy SOCKS.źródło
Możesz użyć narzędzia „Test Mail Server Tool”, aby przetestować wysyłanie wiadomości e-mail na komputerze lub na hoście lokalnym. Google, pobierz „Test Mail Server Tool” i skonfiguruj.
Następnie w twoim settings.py:
Z muszli:
źródło
Dla SendGrid - w szczególności Django :
SendGrid Django Docs tutaj
Ustaw te zmienne w
settings.py
w views.py
źródło