Mengirim Banyak Email E-Certificate
John lupa setelah membuat e-certificate yang perlu dilakukan berulang adalah mengirim email ke masing-masing peserta. Pekerjaan yang tak kalah merepotkan.
from openpyxl import load_workbook
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
from simplegmail import Gmail # ini baru
gmail = Gmail() # ini baru
wb = load_workbook('nama_sertifikat.xlsx', data_only = True)
ws = wb.active
last_row = ws.max_row + 1
for row in range(2, last_row):
number = 'Nomor: ' + ws['A' + str(row)].value
participant = ws['B' + str(row)].value
photo = Image.open('latar_sertifikat.png')
drawing = ImageDraw.Draw(photo)
# participant
font = ImageFont.truetype("Pacifico-Regular.ttf", 68)
filename = participant.replace(' ', '_') + '.png'
width, height = photo.size
w, h = drawing.textsize(participant, font=font)
x = (width-w) / 2
y = 220
xy = (x, y)
drawing.text(xy, participant, fill='black', font=font)
# number
font = ImageFont.truetype("AnticSlab-Regular.ttf", 24)
w, h = drawing.textsize(number, font=font)
x = (width-w) / 2
y = 630
xy = (x, y)
drawing.text(xy, number, fill='black', font=font)
photo.save(filename)
# Mengirim email
email = ws['C' + str(row)].value
subject = 'Sertifikat Webinar Membaca Gelagat Zaman a.n. ' + participant
msg_html = "<h4>Yth. " + participant + "</h4><br />Terlampir sertifikat Webinar."
msg_plain = "Yth. " + participant + "\nTerlampir sertifikat Webinar."
attachments = [filename, 'membaca_gelagat_zaman.pdf', 'membaca_gelagat_zaman.pptx']
params = {
"to": email,
"sender": "
ba********@gm***.com
",
"subject": subject,
"msg_html": msg_html,
"msg_plain": msg_plain,
"attachments": attachments
}
message = gmail.send_message(**params)
Latar Belakang
Menurut John bukanlah ide yang baik meletakkan semua sertifikat dalam satu tempat lalu memberi semua orang (baca: semua peserta) akses untuk melihat dan mengambil yang dimaui.
Sertifikat adalah sesuatu yang lazim digunakan untuk keperluan serius sehingga informasi yang ada padanya adalah representasi dari dunia nyata.
Di dalam sertifikat setidaknya tertera nama. Nama orang yang benar-benar ada di dunia.
atau lebih dikenal sebagai, apalah arti sebuah nama?
Nama orang, yang benar-benar ada, adalah pintu masuk ke dalam banyak kemungkinan, baik maupun buruk. Cukup berbekal nama kita dapat menelusuri sosial media untuk mendapatkan data lain seperti tanggal lahir dan nama ibu kandung. Tiga informasi yang selalu diperlukan mengakses layanan keuangan.
Tambah dua data lagi, nomor kartu kredit dan alamat, kita sudah bisa menikmati transaksi online, menggunakan uang orang lain.
Jadi, nama bukanlah sekedar nama.
Di sisi lain personalisasi seperti mengirim sertifikat kepada masing-masing peserta adalah hal yang baik dalam hubungan. Kita sendiri tentu lebih senang menerima pesan yang mencantumkan nama kita ketimbang yang tidak.
Mengirim sertifikat satu per satu melalui email kepada setiap peserta adalah pilihan John.
Tiap pilihan menanggung konsekuensinya sendiri.
Karena itu John harus memikirkan bagaimana caranya. Untung teknologi yang diperlukan sudah ada (banyak), sedang menunggu untuk dimanfaatkan.
Teknologi Digunakan
Melanjutkan proses sebelumnya, data peserta ada dalam bentuk Excel file.
Untuk mengirim email, John memilih menggunakan library simple-gmail.
Langkah Kerja
Instalasi
simple-gmail
Simple-gmail adalah salah satu library yang dapat digunakan untuk berinteraksi dengan Gmail API. Atau dapat dikatakan library ini akan membantu mengirim email dengan pengirim adalah akun Gmail milik John.
Pengalaman Pertama
Jika ini merupakan pengalaman pertama menggunakan simple-gmail atau library Gmail lainnya, sebelum atau setelah melakukan instalasi simple-gmail, kita harus mendapat kredensial dari Google, akan dijelaskan sebagai suplemen pada halaman dua tulisan ini.
Selanjutnya silahkan mengikuti langkah pada halaman empat untuk penggunaan simple-gmail untuk pertama kali. Butuh beberapa langkah tambahan yang harus dilewati.
Jika lebih memilih library buatan Google, halaman tiga menjelaskan penggunaan Google Client Library.
Kode
Kode di bawah ini adalah kelanjutan dari pembuatan e-certificate dimana setelah menyimpan gambar maka gambar tersebut akan dikirimkan ke email peserta.
from openpyxl import load_workbook from PIL import Image from PIL import ImageDraw from PIL import ImageFont ws = wb.active last_row = ws.max_row + 1 for row in range(2, last_row): number = 'Nomor: ' + ws['A' + str(row)].value participant = ws['B' + str(row)].value photo = Image.open('latar_sertifikat.png') drawing = ImageDraw.Draw(photo) # participant font = ImageFont.truetype("Pacifico-Regular.ttf", 68) filename = participant.replace(' ', '_') + '.png' width, height = photo.size w, h = drawing.textsize(participant, font=font) x = (width-w) / 2 y = 220 xy = (x, y) drawing.text(xy, participant, fill='black', font=font) # number font = ImageFont.truetype("AnticSlab-Regular.ttf", 24) w, h = drawing.textsize(number, font=font) x = (width-w) / 2 y = 630 xy = (x, y) drawing.text(xy, number, fill='black', font=font) photo.save(filename)
Di atas adalah kode sebelumnya, yang bertugas untuk membaca Excel kemudian menuliskan nama peserta dan nomor sertifikat di atas gambar latar. Hasil eksekusi kode di atas kurang lebih seperti ini.
Yang perlu John lakukan hanya menambahkan sedikit kode yang bertugas untuk mengirim email berisi lampiran tiga files, yaitu sertifikat dan bahan seminar yang dibagikan.
Gunakan kode di bawah ini, lalu beri nama test_email.py.
from openpyxl import load_workbook
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
from simplegmail import Gmail # ini baru
gmail = Gmail() # ini baru
wb = load_workbook('nama_sertifikat.xlsx', data_only = True)
ws = wb.active
last_row = ws.max_row + 1
for row in range(2, last_row):
number = 'Nomor: ' + ws['A' + str(row)].value
participant = ws['B' + str(row)].value
photo = Image.open('latar_sertifikat.png')
drawing = ImageDraw.Draw(photo)
# participant
font = ImageFont.truetype("Pacifico-Regular.ttf", 68)
filename = participant.replace(' ', '_') + '.png'
width, height = photo.size
w, h = drawing.textsize(participant, font=font)
x = (width-w) / 2
y = 220
xy = (x, y)
drawing.text(xy, participant, fill='black', font=font)
# number
font = ImageFont.truetype("AnticSlab-Regular.ttf", 24)
w, h = drawing.textsize(number, font=font)
x = (width-w) / 2
y = 630
xy = (x, y)
drawing.text(xy, number, fill='black', font=font)
photo.save(filename)
# Mengirim email
email = ws['C' + str(row)].value
subject = 'Sertifikat Webinar Membaca Gelagat Zaman a.n. ' + participant
msg_html = "<h4>Yth. " + participant + "</h4><br />Terlampir sertifikat Webinar."
msg_plain = "Yth. " + participant + "\nTerlampir sertifikat Webinar."
attachments = [filename, 'membaca_gelagat_zaman.pdf', 'membaca_gelagat_zaman.pptx']
params = {
"to": email,
"sender": "
ba********@gm***.com
",
"subject": subject,
"msg_html": msg_html,
"msg_plain": msg_plain,
"attachments": attachments
}
message = gmail.send_message(**params)
Hanya sedikit tambahan. Di bagian atas ada 2 baris tambahan, diberi komentar “ini baru”, yaitu untuk me-load library dan membuat sebuah obyek gmail.
Tambahan kode selanjutnya di bagian bawah, dimana parameter yang digunakan:
- email: email dari masing-masing peserta
- subject: subyek pada email
- msg_html: pesan yang dikirimkan, dalam bentuk html
- msg_plain: pesan yang dikirimkan, dalam bentuk teks biasa
- attachments: daftar files yang dilampirkan
- params: sebuah dict berisi semua parameter yang telah disebutkan sebelumnya
- message: penggunaan simple-gmail untuk mengirimkan email dengan parameter yang telah dipilih
Jalankan kode.
Hasilnya akan seperti ini, di inbox peserta.
Simpulan
Personalisasi dapat membuat komunikasi lebih cair, lebih lancar. Email adalah salah satu media komunikasi yang efektif. Banyak daftar yang harus diajak berkomunikasi adalah keniscayaan di era sekarang.
Menggabungkan ketiganya adalah sulit jika dilakukan secara manual, namun teknologi telah siap untuk membantu, hanya perlu sedikit pengetahuan untuk menggunakannya.
Terdapat cara lain yang dapat dipertimbangkan, yaitu menggunakan add-on Autocrat pada Google Sheets.
Untuk menggunakan Autocrat jamaknya orang membuat daftar hadir menggunakan Google Forms lalu data yang dikumpulkan dalam bentuk Google Sheets akan diotomasi pengisiannya ke dalam template dalam bentuk Google Slides.
Kemudian, masih oleh Autocrat, berkas Google Slides tersebut dikirimkan ke email masing-masing peserta.
Pilihan yang tak kalah menarique.
Langganan dan Saran
Jika suka tulisan di sini silahkan berlangganan agar kami dapat mengirimkan pemberitahuan tulisan baru. Punya saran atau keluhan terhadap blog ini, boleh ajukan langsung pada kami.
Pelbagai tips harian, ada di Twitter.
Referensi
- https://developers.google.com/gmail/api
- https://github.com/jeremyephron/simple-gmail
- https://atguides.humboldt.edu/m/google/l/792830-how-do-i-use-google-forms-and-sheets-to-automatically-generate-custom-certificates
- https://www.geeksforgeeks.org/how-to-automatically-generate-certificates-for-google-forms/
Cover Photo by Brett Jordan on Unsplash