Dalam pelajaran ini, saya akan membagikan skrip yang saya gunakan untuk mengirim email ke pengguna aplikasi yang saya buat dan banyak lagi.
Apa yang akan kita lakukan??
Kami akan membuat program Python sederhana yang akan melakukan hal berikut:
- Gunakan file template yang kami buat untuk desain email. Ini hanya akan menjadi file berbasis teks dengan nilai placeholder.
- Dapatkan nama dan email orang tersebut dari file teks lain yang kami buat.
Poin-poin ini membuat program ini lebih dekat dengan penggunaan pengiriman email di aplikasi Anda. Mari kita mulai.
File untuk email email
File yang berisi email untuk pengguna akan terlihat seperti ini:
Shubham [email protected]Ini hanyalah file teks sederhana yang berisi nama pengguna dan email yang dipisahkan oleh spasi. Beberapa email telah dimasukkan dengan data setiap pengguna di baris baru. Kami menamai file ini pengguna.txt.
Menggunakan Template
Mari kita dengan cepat menentukan template yang akan kita gunakan dalam skrip kita untuk mengganti nilai:
Halo $PERSON_NAME,Kami mengirim email ini menggunakan modul Python smtplib. Keren, kan??
Semoga harimu cerah!
Bersulang
Kami telah menggunakan string template $PERSON_NAME yang akan diganti dengan nama orang yang kita dapatkan dari pengguna.file txt saat mengirim email.
Mendapatkan data pengguna dari file
Langkah pertama untuk mengirim email ke pengguna adalah mengidentifikasi ke mana kita ingin mengirim email. Mari kita tulis fungsi Python yang akan menerima nama file dan mengembalikan kepada kami nama pengguna dan ID email tempat email harus dikirim:
def get_users_data(nama_file):nama_pengguna = []
email_pengguna = []
dengan open(file_name, mode='r', encoding='utf-8') sebagai user_file:
untuk user_info di user_file:
nama pengguna.tambahkan(info_pengguna.berpisah()[0])
email_pengguna.tambahkan(info_pengguna.membagi()[1])
kembalikan nama_pengguna, email_pengguna
Dengan fungsi ini, kami hanya mengembalikan nama pengguna dan email yang kami dapatkan dari file.
Mendapatkan Objek Template
Sekarang, kita dapat mengurai template kita dan mendapatkan objek template dari file teks yang kita buat:
def read_template(nama_file):dengan open(file_name, 'r', encoding='utf-8') sebagai msg_template:
msg_template_content = msg_template.Baca()
kembalikan Template(msg_template_content)
Dengan ini, kita akan mendapatkan kembali objek Template yang dapat kita gunakan untuk mengurai konten file dan membuat penggantian yang diperlukan untuk string template seperti nama pengguna.
Bagaimana pengiriman email dilakukan?
Sekarang setelah kita siap dengan desain template dan data pengguna, kita perlu memahami bagaimana email sebenarnya dikirim ke pengguna:
- Buat koneksi SMTP dengan kredensial masuk untuk akun pengirim
- Buat header multi-bagian dengan informasi dengan bidang Dari, Ke, dan Subjek
- Bangun badan pesan yang perlu dikirim
- Kirim email dengan objek koneksi SMTP
Menyiapkan koneksi SMTP
Mari kita akhirnya mendefinisikan fungsi yang akan mengirim email ke pengguna yang ditunjuk. Berikut adalah fungsinya:
def utama():nama_pengguna, email_pengguna = get_users_data('pengguna.txt') # baca detail pengguna
message_template = read_template('pesan.txt')
# siapkan server SMTP
smtplib_server = smtplib.SMTP(host = = smtp.gmail.com', port=587)
smtplib_server.mulai ()
smtplib_server.masuk(SEND_FROM, EMAIL_PWD)
# Dapatkan setiap detail pengguna dan kirim email:
untuk nama, email dalam zip(nama_pengguna, email_pengguna):
multipart_message = MIMEMultipart() # buat pesan
# tambahkan nama orang yang sebenarnya ke templat pesan
pesan = pesan_templatetemp.pengganti(PERSON_NAME=nama.judul())
# Mencetak isi pesan demi kita
cetak (pesan)
# atur parameter pesan
multipart_message['From']=SEND_FROM
multipart_message['Ke']=email
multipart_message['Subject']="Email LinuxHint"
# tambahkan di badan pesan
multipart_message.lampirkan(MIMEText(msg, 'polos'))
# kirim pesan melalui server yang disiapkan sebelumnya.
smtplib_server.kirim_pesan(multipart_message)
del multipart_message
# Hentikan sesi SMTP dan tutup koneksi
smtplib_server.berhenti()
Dalam fungsi di atas, kami mengikuti setiap langkah yang kami nyatakan di bagian sebelumnya. Kami membangun koneksi SMTP dan menggunakannya untuk mengirim email.
Program lengkap
Di bagian terakhir, mari kita lihat program lengkap yang dapat digunakan untuk mengirim email ke pengguna yang ditunjuk:
impor smtplibdari Template impor string
dari email.pantomim.multipart impor MIMEMultipart
dari email.pantomim.impor teks MIMEText
SEND_FROM = 'email-saya-sini'
EMAIL_PWD = 'sandi-saya-di sini'
def get_users_data(nama_file):
nama_pengguna = []
email_pengguna = []
dengan open(file_name, mode='r', encoding='utf-8') sebagai user_file:
untuk user_info di user_file:
nama pengguna.tambahkan(info_pengguna.berpisah()[0])
email_pengguna.tambahkan(info_pengguna.membagi()[1])
kembalikan nama_pengguna, email_pengguna
def read_template(nama_file):
dengan open(file_name, 'r', encoding='utf-8') sebagai msg_template:
msg_template_content = msg_template.Baca()
kembalikan Template(msg_template_content)
def utama():
nama_pengguna, email_pengguna = get_users_data('pengguna.txt') # baca detail pengguna
message_template = read_template('pesan.txt')
# siapkan server SMTP
smtplib_server = smtplib.SMTP(host = = smtp.gmail.com', port=587)
smtplib_server.mulai ()
smtplib_server.masuk(SEND_FROM, EMAIL_PWD)
# Dapatkan setiap detail pengguna dan kirim email:
untuk nama, email dalam zip(nama_pengguna, email_pengguna):
multipart_message = MIMEMultipart() # buat pesan
# tambahkan nama orang yang sebenarnya ke templat pesan
pesan = pesan_templatetemp.pengganti(PERSON_NAME=nama.judul())
# Mencetak isi pesan demi kita
cetak (pesan)
# atur parameter pesan
multipart_message['From']=SEND_FROM
multipart_message['Ke']=email
multipart_message['Subject']="Email LinuxHint"
# tambahkan di badan pesan
multipart_message.lampirkan(MIMEText(msg, 'polos'))
# kirim pesan melalui server yang disiapkan sebelumnya.
smtplib_server.kirim_pesan(multipart_message)
del multipart_message
# Hentikan sesi SMTP dan tutup koneksi
smtplib_server.berhenti()
jika __name__ == '__main__':
utama()
Saat kami menjalankan program ini dengan ID Gmail, Anda mungkin menghadapi masalah seperti ini:
Kesalahan SMTP Gmail
Ini karena Gmail tidak mengizinkan skrip biasa untuk menggunakan API Gmail. Untuk ini, Anda mungkin harus menonaktifkan login keamanan di akun Gmail Anda. Baca tentang cara melakukan ini untuk Gmail di sini.
Kesimpulan
Dalam pelajaran ini, kita melihat bagaimana kita dapat mengirim email menggunakan Python smtplib modul.