Di saya settings.py
, saya punya yang berikut:
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
Kode email saya:
from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['[email protected]'])
email.send()
Tentu saja, jika saya menyiapkan server debugging melalui python -m smtpd -n -c DebuggingServer localhost:1025
, saya bisa melihat email di terminal saya.
Namun, bagaimana cara saya mengirim email bukan ke server debugging tetapi ke [email protected]?
Setelah membaca jawaban Anda, izinkan saya meluruskan sesuatu:
Tidak bisakah Anda menggunakan localhost (pc ubuntu sederhana) untuk mengirim email?
Saya pikir dalam Django 1.3
send_mail()
agak usang danEmailMessage.send()
digunakan sebagai gantinya?
Jawaban:
Kirim email ke server SMTP nyata. Jika Anda tidak ingin membuat sendiri, Anda dapat menemukan perusahaan yang akan menjalankannya untuk Anda, seperti Google sendiri.
sumber
Saya menggunakan Gmail sebagai server SMTP saya untuk Django. Jauh lebih mudah daripada berurusan dengan postfix atau apa pun server lain. Saya tidak dalam bisnis mengelola server email.
Di settings.py:
CATATAN : Pada 2016 Gmail tidak memperbolehkan ini lagi secara default. Anda dapat menggunakan layanan eksternal seperti Sendgrid, atau Anda dapat mengikuti tutorial ini dari Google untuk mengurangi keamanan tetapi mengizinkan opsi ini: https://support.google.com/accounts/answer/6010255
sumber
django-admin.py startproject gmail
Edit settings.py dengan kode di bawah ini:
Jalankan mode interaktif:
python manage.py shell
Impor modul EmailMessage:
Kirim email:
Untuk informasi lebih lanjut, periksa
send_mail
danEmailMessage
fitur dalam dokumen .UPDATE untuk Gmail
Juga jika Anda memiliki masalah dalam mengirim email melalui gmail, ingatlah untuk memeriksa panduan ini dari google.
Di pengaturan akun Google Anda, buka
Security > Account permissions > Access for less secure apps
dan aktifkan opsi ini.Juga buat kata sandi khusus aplikasi untuk gmail Anda setelah Anda mengaktifkan verifikasi 2 langkah untuk itu.
Maka Anda harus menggunakan kata sandi khusus aplikasi dalam pengaturan. Jadi ubah baris berikut:
Juga jika Anda tertarik untuk mengirim email HTML, lihat ini .
sumber
Situs saya dihosting pada
Godaddy
dan saya memiliki email pribadi yang terdaftar pada yang sama. Ini adalah pengaturan yang berfungsi untuk saya:Di settings.py:
Dalam shell:
Lalu saya mendapat "1" sebagai O / P yaitu Sukses. Dan saya menerima surat juga. :)
sumber
Untuk Django versi 1.7, jika solusi di atas tidak berhasil maka coba yang berikut ini
di settings.py tambahkan
Baris terakhir melakukan trik untuk Django 1.7
sumber
Anda perlu menggunakan smtp sebagai backend di settings.py
Jika Anda menggunakan backend sebagai konsol, Anda akan menerima output di konsol
Dan juga pengaturan di bawah ini sebagai tambahan
Jika Anda menggunakan gmail untuk ini, siapkan verifikasi 2 langkah dan kata sandi khusus Aplikasi dan salin dan tempel kata sandi tersebut di atas nilai EMAIL_HOST_PASSWORD.
sumber
Saya menemukan menggunakan SendGrid menjadi cara termudah untuk mengatur pengiriman email dengan Django. Begini cara kerjanya:
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
Dan Anda sudah siap!
Untuk mengirim email:
Jika Anda ingin Django mengirim email kepada Anda setiap kali ada 500 server internal kesalahan, tambahkan berikut ini ke Anda
settings.py
:Mengirim email dengan SendGrid gratis hingga 12rb email per bulan.
sumber
Sebenarnya saya sudah melakukan ini dari Django beberapa waktu lalu. Buka akun GMail yang sah & masukkan kredensial di sini. Ini kode saya -
sumber
smtplib
secara langsung; Django akan menangani bagian itu untuk Anda.send_mail
& menggunakan saya sendiri ...send_mail()
adalah bagaimana Anda akan melakukannya. Anda masih perlu merakit pesan sendiri, tetapi Anda tidak perlu khawatir tentang bit SMTP.Terlambat, tapi:
Selain
DEFAULT_FROM_EMAIL
perbaikan yang disebutkan orang lain, dan memungkinkan aplikasi yang kurang aman untuk mengakses akun, saya harus menavigasi ke https://accounts.google.com/DisplayUnlockCaptcha saat masuk sebagai akun yang bersangkutan agar Django akhirnya mengotentikasi .Saya pergi ke URL itu melalui terowongan SSH ke server web untuk memastikan alamat IPnya sama; Saya tidak sepenuhnya yakin apakah itu perlu tetapi tidak ada salahnya. Anda dapat melakukannya seperti
ssh -D 8080 -fN <username>@<host>
itu:, lalu atur browser web Anda untuk digunakanlocalhost:8080
sebagai proxy SOCKS.sumber
Anda dapat menggunakan "Alat Uji Server Surat" untuk menguji pengiriman email di komputer atau server lokal Anda. Google dan Unduh "Alat Uji Server Surat" dan aturlah.
Kemudian di settings.py Anda:
Dari shell:
sumber
Untuk SendGrid - Django Secara Khusus:
SendGrid Django Docs di sini
Tetapkan variabel-variabel ini di
settings.py
di views.py
sumber