Saya mencoba mengirim email (Gmail) menggunakan python, tetapi saya menerima kesalahan berikut.
Traceback (most recent call last):
File "emailSend.py", line 14, in <module>
server.login(username,password)
File "/usr/lib/python2.5/smtplib.py", line 554, in login
raise SMTPException("SMTP AUTH extension not supported by server.")
smtplib.SMTPException: SMTP AUTH extension not supported by server.
Skrip Python adalah sebagai berikut.
import smtplib
fromaddr = '[email protected]'
toaddrs = '[email protected]'
msg = 'Why,Oh why!'
username = '[email protected]'
password = 'pwd'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
Jawaban:
Anda perlu mengatakan
EHLO
sebelum berlari langsung keSTARTTLS
:Anda juga harus benar-benar membuat
From:
,To:
danSubject:
header pesan, dipisahkan dari badan pesan oleh baris kosong dan digunakanCRLF
sebagai penanda EOL.Misalnya
sumber
EHLO
dengan salah ketik. Setelah saya mencoba HELO berkali-kali tetapi responnya berbeda. Butuh berjam-jam untuk mengetahui bahwa EHLO sebenarnya adalah perintah yang dimengerti SMTP dan saya melakukan kesalahan ketik.jika Anda ingin menggunakan Port 465 Anda harus membuat
SMTP_SSL
objek:sumber
Saya mengalami masalah yang sama dan menemukan pertanyaan ini. Saya mendapat Kesalahan Otentikasi SMTP tetapi nama pengguna / pass saya benar. Inilah yang diperbaiki. Saya membaca ini:
https://support.google.com/accounts/answer/6010255
Singkatnya, google tidak mengizinkan Anda untuk masuk melalui smtplib karena telah menandai jenis login ini sebagai "kurang aman", jadi yang harus Anda lakukan adalah pergi ke tautan ini saat Anda masuk ke akun google Anda, dan memungkinkan akses:
https://www.google.com/settings/security/lesssecureapps
Setelah diatur (lihat tangkapan layar saya di bawah), itu akan berfungsi.
Login sekarang berfungsi:
Respon setelah perubahan:
Tanggapan sebelumnya:
Masih tidak bekerja? Jika Anda masih mendapatkan SMTPAuthenticationError tetapi sekarang kodenya 534, karena lokasinya tidak diketahui. Ikuti tautan ini:
https://accounts.google.com/DisplayUnlockCaptcha
Klik lanjutkan dan ini akan memberi Anda 10 menit untuk mendaftarkan aplikasi baru Anda. Jadi lanjutkan untuk melakukan upaya login lain sekarang dan itu akan berhasil.
UPDATE : Tampaknya ini tidak berfungsi segera Anda mungkin akan buntu untuk sementara mendapatkan kesalahan ini di smptlib:
Pesan mengatakan untuk menggunakan browser untuk masuk:
Setelah mengaktifkan 'lesssecureapps', cari kopi, kembali, dan coba tautan 'DisplayUnlockCaptcha' lagi. Dari pengalaman pengguna, mungkin diperlukan waktu hingga satu jam agar perubahan dimulai. Kemudian coba proses masuk kembali.
sumber
Anda jatuh sakit dengan OOP?
sumber
Ini bekerja
Buat Kata Sandi APP Gmail!
Setelah Anda membuat itu lalu buat file bernama
sendgmail.py
Kemudian tambahkan kode ini :
Jadi, jika Anda berhasil, akan melihat gambar seperti ini:
Saya menguji dengan mengirim email dari dan ke diri saya sendiri.
sumber
Anda dapat menemukannya di sini: http://jayrambhia.com/blog/send-emails-using-python
sumber
Tidak terkait langsung tetapi masih layak untuk ditunjukkan adalah bahwa paket saya mencoba membuat pengiriman pesan gmail benar-benar cepat dan tidak menyakitkan. Itu juga mencoba untuk memelihara daftar kesalahan dan mencoba untuk menunjuk ke solusi segera.
Ini benar-benar hanya membutuhkan kode ini untuk melakukan apa yang Anda tulis:
Atau satu liner:
Untuk paket / instalasi silakan lihat git atau pip , tersedia untuk Python 2 dan 3.
sumber
Ini adalah contoh API Gmail. Meskipun lebih rumit, ini adalah satu-satunya metode yang saya temukan yang berfungsi pada 2019. Contoh ini diambil dan dimodifikasi dari:
https://developers.google.com/gmail/api/guides/sending
Anda harus membuat proyek dengan antarmuka API Google melalui situs web mereka. Selanjutnya Anda harus mengaktifkan API GMAIL untuk aplikasi Anda. Buat kredensial dan kemudian unduh kredibilitas tersebut, simpan sebagai kredensial.json.
sumber
Ada API gmail sekarang, yang memungkinkan Anda mengirim email, membaca email dan membuat konsep melalui REST. Berbeda dengan panggilan SMTP, ini bukan pemblokiran yang bisa menjadi hal yang baik untuk webservers berbasis utas yang mengirim email di utas permintaan (seperti python webservers). API juga cukup kuat.
Lebih mudah untuk menyiapkan jika Anda memiliki hak administrator Google Apps di domain, karena Anda dapat memberikan izin kepada klien Anda. Kalau tidak, Anda harus mengutak-atik otentikasi dan izin OAuth.
Inilah intisari yang menunjukkannya:
https://gist.github.com/timrichardson/1154e29174926e462b7a
sumber
jawaban bagus dari @David, ini untuk Python 3 tanpa try-generic kecuali:
sumber
Aktifkan aplikasi yang kurang aman di akun gmail Anda dan gunakan (Python> = 3.6):
sumber
<{gmailUser}>
dengan<YourAlias>
.Sepertinya masalah yang lama
smtplib
. Dipython2.7
semuanya berfungsi dengan baik.Perbarui : Yap,
server.ehlo()
juga bisa membantu.sumber
sumber
sumber