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.

Kode Lima Detik

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.

A rose by any other name would smell as sweet.

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.

Nama rekaan dihasilkan oleh ninjaname.net, pun email hanya rekaan

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


Cover Photo by Brett Jordan on Unsplash


Leave a Reply

Your email address will not be published. Required fields are marked *