Masino Sinaga

Web Development and PHPMaker

Anda di sini: Beranda / PHPMaker / Menambahkan Business Logic Saat Mengirim Email di Aplikasi Web dari PHPMaker
Mudahnya Menyaring Record dari Lookup Table di Aplikasi Web dari PHPMaker
Menjalankan Kode Setelah Record Berhasil Diubah di Aplikasi Web dari PHPMaker

Menambahkan Business Logic Saat Mengirim Email di Aplikasi Web dari PHPMaker

Sel, 17 Juni 2014 oleh Masino Sinaga 32 Komentar

Aplikasi Web manapun pasti tidak akan pernah terlepas dari fitur pengiriman Email saat event tertentu terjadi. PHPMaker sudah menyediakan sebuah server event yang bernama Email_Sending yang lokasinya berada di bawah Server Events -> Table-Specific -> Common di dalam project PHPMaker Anda. Pastikan sebelumnya Anda sudah memilih salah satu Table yang Anda inginkan dari panel Database di sebelah kiri dari project PHPMaker Anda, untuk memastikan Anda menambahkan kode di server event pada Table yang tepat.

Server event ini dipanggil sebelum pemberitahuan lewat Email dikirimkan oleh sistem. Anda dapat mengkostumisasi isi Email dengan menggunakan server event ini. Server event Email_Sending memiliki parameter berikut:

  1. Email – instansiasi dari object Email yang mengandung semua informasi mengenai Email yang akan dikirim. Ini merupakan instansiasi dari class cEmail (lihat contoh di bawah).
  2. Args – sebuah array yang mengandung informasi tambahan.

Beberapa event atau halaman yang menggunakan fitur pengiriman Email adalah sebagai berikut:

  • Halaman Add, Record yang baru dalam format array dapat diakses dengan menggunakan $Args[“rsnew”].
  • Halaman Copy, Record yang lama dalam format array dapat diakses dengan $Args[“rsold”].
  • Halaman Edit/Update, data yang lama dari Record dalam format array dapat diakses dengan $Args[“rsold”], sedangkan data yang baru dari Record dalam format array dapat diakses dengan $Args[“rsnew”].
  • Halaman Register, Record yang baru dalam format array dapat diakses dengan menggunakan $Args[“rs”].

Anda dapat mendapatkan nilai di Field tertentu, misalnya dengan menggunakan kode berikut:

$rsnew = $Args["rsnew"];
$MyValue = $rsnew["MyField"]; 

atau

$MyValue = $Args["rsnew"]["MyField"];

Kembalikan nilai FALSE di dalam server event ini jika Anda ingin membatalkan pengiriman Email.

Untuk halaman Grid-Add/Edit atau Update, ada lebih dari satu Record, sehingga argumennya merupakan array dari array (array multidimensional).

Mari simak contoh berikut. Katakanlah ada sebuah field Email di suatu Record, dan Anda ingin mengganti data penerima Email menjadi nilai dari field tersebut.

function Email_Sending(&$Email, &$Args) { 
    //var_dump($Email);
    //var_dump($Args);
    //exit();
    if (CurrentPageID() == "add") { // Jika halaman Add
         $Email->Recipient = $Args["rsnew"]["MyEmailField"]; // Ganti penerima ke nilai field pada record baru
         $Email->Subject = "My New Subject"; // Ganti subject Email
         $Email->Content .= "\nAdded by " . CurrentUserName(); // Tambahkan isi Email lainnya
    }
    return TRUE;
}

Menyenangkan sekali, bukan? 🙂

Ditempatkan di bawah: PHPMaker Ditag dengan:Email_Sending, PHPMaker Indonesia, Server Events, Tutorial PHPMaker

Masino Sinaga

Web Developer pengguna PHPMaker untuk membangun Aplikasi Web sejak tahun 2004. Sampai sekarang masih aktif dan rajin membagikan pengalamannya menggunakan PHPMaker melalui situs masinosinaga.com, ilovephpmaker.com, dan phpmakerprojects.com.

Mudahnya Menyaring Record dari Lookup Table di Aplikasi Web dari PHPMaker
Menjalankan Kode Setelah Record Berhasil Diubah di Aplikasi Web dari PHPMaker

Komentar

  1. hendra mengatakan

    Kam, 30 Juli 2015 pada 3:56 pm

    Saya sudah setting $Email->Recipient = $Args[“rsnew”][“penerima@domain.com”];
    pada kondisi CurrentPageID() == “add”
    Juga sudah aktifkan Email Notofication On Add.
    Saat save ada pesan berikut : “You must provide at least one recipient email address”

    Balas
    • Masino Sinaga mengatakan

      Kam, 30 Juli 2015 pada 4:14 pm

      Kode yang Anda buat itu salah. Seharusnya seperti ini (diasumsikan nama field yang menyimpan Email penerima adalah “Email_Penerima”):

      $Email->Recipient = $Args[“rsnew”][“Email_Penerima”];
      
      Balas
      • hendra mengatakan

        Jum, 31 Juli 2015 pada 10:36 am

        Itu khan tiap ada inputkan order, saya send email, apakah yg dimaksud di table Order Master ditambahkan 1 field, lalu “Email_Penerima” adalah field tersebut ?

        Balas
        • Masino Sinaga mengatakan

          Jum, 31 Juli 2015 pada 9:41 pm

          Iya.

          Balas
          • hendra mengatakan

            Sab, 1 Agustus 2015 pada 8:06 am

            ok trm kasih, saya coba nya

            Balas
            • hendra mengatakan

              Sab, 1 Agustus 2015 pada 10:36 am

              ok sudah bisa.
              Bagaimana menyembunyikan Content berikut ?
              Record status changed:
              table: test
              key value: 00001
              action: Inserted

              Balas
              • Masino Sinaga mengatakan

                Sen, 3 Agustus 2015 pada 8:38 am

                Mainkan property ReplaceContent dari object Email. Baca menu Help untuk info lebih lanjut!

                Balas
  2. Rudy mengatakan

    Jum, 9 September 2016 pada 8:49 am

    Pak Masino, gimana cara nya menambahkan attachment di email notifikasi tersebut.

    Balas
    • Masino Sinaga mengatakan

      Jum, 9 September 2016 pada 9:21 am

      Tambahkan kode ini di server event tersebut:

      $Email->Attachments = "<nama_file_lengkap_dengan_pathnya>";
      
      Balas
      • rudy mengatakan

        Jum, 9 September 2016 pada 9:45 am

        oke sipp,
        kalau cc dan bcc pak ?

        Balas
        • Masino Sinaga mengatakan

          Jum, 9 September 2016 pada 9:47 am

          Mirip seperti di atas:

          $Email->Cc = "<email_yang_akan_di_cc>";
          $Email->Bcc = "<email_yang_akan_di_bcc>";
          
          Balas
  3. sidik mengatakan

    Sen, 26 September 2016 pada 9:50 am

    Pak Masino,

    Kalo Emailsender nya ingin dibuat custome, Email sender sesuai dengan account yg login.

    trims

    Balas
    • Masino Sinaga mengatakan

      Sel, 27 September 2016 pada 1:25 pm

      Gunakan global function yang bernama ew_ExecuteScalar untuk mengambil data Email dari user yang sedang login, lalu assign-kan data Email tersebut seperti pada komentar yang ini.

      Balas
  4. desthy mengatakan

    Kam, 10 November 2016 pada 4:11 pm

    sore bang masino, saya ingin tanya:
    bagaimana cara mengirimkan email otomatis (untuk user dan untuk ReportTo) setelah user mengisi/edit/hapus data?
    misalkan dari contoh demo phpmaker yg ada, userA (dengan ReportTo userG) mengisi data/edit/hapus data, maka akan ada notifikasi otomatis ke email userA dan userG sebagai atasannya.

    email notifikasi kepada userA:
    Anda telah menambahkan data tgl 12-10-2016 10:16:13 (diambil dari ew_CurrentDateTime) pada tabel Order Detail dengan perincian sbb:
    Order ID : 10248
    Product ID : Queso Cabrales
    Unit Price : $14.00
    Quantity : 13
    Discount : 0%
    Sub Total : $182.00

    dan juga akan ada email notifikasi otomatis untuk atasan dari userA (Report To) yaitu userG :
    Bawahan Anda, “UserA” telah menambahkan data tgl 12-10-2016 10:16:13 pada tabel Order Detail dengan perincian sbb:
    Order ID : 10248
    Product ID : Queso Cabrales
    Unit Price : $14.00
    Quantity : 13
    Discount : 0%
    Sub Total : $182.00

    begitu pula bila user mengedit/menghapus data akan ada email konfirmasi kepada user & atasannya (Reports To). bagaimana caranya pak mengirim 2 email notifikasi sekaligus seperti itu? terimakasih.

    Balas
    • Masino Sinaga mengatakan

      Kam, 10 November 2016 pada 5:24 pm

      Silahkan baca kembali artikel di atas. Pada prinsipnya, Anda bisa menggunakan server event Email_Sending seperti yang sudah dibahas di artikel itu.

      Balas
  5. Rudy Budiana mengatakan

    Jum, 6 Oktober 2017 pada 1:26 pm

    pak masino, saya membuat multi-update dalam suatu view (bukan Table), (database menggunakan Mysql) dan menambahkan business logic di server event row_updated dan email_sending, proses update data berhasil dan business logic di row_update berjalan dengan baik, tapi business logic di email_sending tidak berjalan, saya mau menampung isi field Id di variable $id_inv dengan code sebagai berikut :

    $id_inv = $Args[“rsold”][“Id”];

    tapi setelah di jalankan $id_inv kosong, lalu saya coba dengan code :

    $id_inv = $Args[“rsold”][“Id”];

    hasilnya tetap sama yaitu kosong, ini karena apa ya ?
    mohon pencerahan nya

    Balas
    • Rudy Budiana mengatakan

      Jum, 6 Oktober 2017 pada 1:27 pm

      maaf saya ralat :

      tapi setelah di jalankan $id_inv kosong, lalu saya coba dengan code :

      $id_inv = $Args[“rsnew”][“Id”];

      hasilnya tetap sama yaitu kosong, ini karena apa ya ?
      mohon pencerahan nya

      Balas
      • Masino Sinaga mengatakan

        Jum, 6 Oktober 2017 pada 1:45 pm

        Biasanya, karena field Id tersebut tidak diaktifkan dari Fields -> Multi-Update Page -> Multi-Update.

        Balas
        • Rudy Budiana mengatakan

          Jum, 6 Oktober 2017 pada 2:28 pm

          field Id nya disable (gray) pak .. tidak bisa diapa-apakan

          Balas
          • Masino Sinaga mengatakan

            Jum, 6 Oktober 2017 pada 2:45 pm

            Coba cek nilainya dengan kode ini:

            var_dump($Args[“rsold”][“Id”]);

            Kemungkinan karena multi-update itu, makanya nilai Id-nya berbeda-beda, sehingga tidak bisa ditangkap oleh sistem (?). Atau mungkin nilai-nya menjadi dalam bentuk array (?).

            Balas
  6. Rudy Budiana mengatakan

    Kam, 19 Oktober 2017 pada 2:17 pm

    Dear pak Masino
    kenapa ya send email nya tidak berfungsi saat event grid edit, tapi jika edit dengan metode biasa (single) berhasil .
    mohon pencerahan nya

    Terimakasih

    Balas
    • Masino Sinaga mengatakan

      Kam, 19 Oktober 2017 pada 2:52 pm

      Karena CurrentPageID untuk edit single tidak sama dengan edit di grid-edit.

      Balas
      • Rudy Budiana mengatakan

        Jum, 20 Oktober 2017 pada 3:34 pm

        bisakah menyimpan function send email pada saat event grid edit.. bukan di email_sending ?

        Balas
        • Masino Sinaga mengatakan

          Sab, 21 Oktober 2017 pada 8:21 am

          Bisa.

          Balas
  7. sidik mengatakan

    Sel, 6 Maret 2018 pada 1:40 pm

    Pak Masino,
    Untuk yang kirim email setelah edit apakah hanya dengan mengubah
    add menjadi edit dan rsnew menjadi rsold, terimakasih

    function Email_Sending(&$Email, &$Args) {
    if (CurrentPageID() == “Edit”) {
    $Email->Recipient = $Args[“rsold”][“MyEmailField”]; // Ganti penerima ke nilai field pada record baru
    $Email->Subject = “My New Subject”; // Ganti subject Email
    $Email->Content .= “\nAdded by ” . CurrentUserName(); // Tambahkan isi Email lainnya
    }
    return TRUE;
    }

    Balas
    • Masino Sinaga mengatakan

      Sel, 20 Maret 2018 pada 6:55 pm

      CurrentPageID() selalu mengembalikan nilai dalam huruf kecil semua. Jadi, “Edit” itu seharusnya “edit”.

      Untuk rsold atau rsnew, tergantung kondisi. Kalau nilainya berubah di halaman Edit, gunakan rsnew, sebaliknya rsold.

      Balas
  8. ikhsan mengatakan

    Sen, 13 Agustus 2018 pada 4:19 pm

    kalau currentPage nya di gridadd penulisannya CurrentPageID() == “gridadd” gitu ya pak ?

    Balas
    • Masino Sinaga mengatakan

      Kam, 8 November 2018 pada 7:22 pm

      Bukan, karena saat mode gridadd, nilai dari function CurrentPageID() adalah “list”. Coba CurrentPage()->CurrentAction

      Balas
  9. leo mengatakan

    Jum, 15 Desember 2023 pada 9:44 am

    Halo pak, saya mau nanya bisakah di phpmaker sewaktu user habis login bisa kirim email berdasarkan hasil dari sql misal saya ambil table food
    select * from food where expired date > sysdate
    hasilnya di kirim ke email yang menangani stok food tersebut apakah bisa phpmaker menangani hal seperti ini atau hanya bisa di even add, update, delete saja, mohon petunjuknya

    Balas
    • Masino Sinaga mengatakan

      Jum, 15 Desember 2023 pada 10:46 am

      Tentu bisa, pakai server event User_LoggedOut yang akan dieksekusi setelah user berhasil logout.

      Balas

Trackbacks

  1. Mudahnya Mengirim Email Notifikasi di Aplikasi Web dari PHPMaker – Masino Sinaga berkata:
    Sel, 7 Juli 2015 pukul 2:19 pm

    […] Beruntunglah kita sebagai Web Developer yang sudah menggunakan PHPMaker! Mengapa? Karena PHPMaker sudah lama menyediakan fitur ini, sehingga sangat sayang untuk tidak digunakan. PHPMaker sudah menyediakan server event yang bernama Email_Sending yang lokasinya berada di bawah Server Events -> Table-Specific -> Common. Mengenai hal ini, silahkan baca artikel yang sudah pernah saya tulis berjudul Menambahkan Business Logic Saat Mengirim Email di Aplikasi Web dari PHPMaker. […]

    Balas
  2. Menimpa Pengaturan dalam File php.ini Melalui Project PHPMaker – Masino Sinaga berkata:
    Sab, 11 Juli 2015 pukul 12:40 am

    […] O iya, sekedar mengingatkan, yang sedang kita bahas ini terkait dengan dua artikel saya terdahulu, yang berjudul: – Mudahnya Mengirim Email Notifikasi di Aplikasi Web dari PHPMaker – Menambahkan Business Logic Saat Mengirim Email di Aplikasi Web dari PHPMaker. […]

    Balas

Tinggalkan Balasan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses

Pos-pos Terbaru

  • Mudahnya Mengubah Nilai Delay Auto Hide Success Message di PHPMaker 2025
  • Mudahnya Berpindah Layout dari Table ke Cards di Halaman List lewat PHPMaker 2025
  • Jangan Lupa Pakai AdjustSql Saat Insert atau Update Data Lewat ExecuteStatement
  • File-File yang Wajib Diperhatikan Setelah Menambah Item User Values di PHPMaker 2025
  • Begini Cara Memuat Tables dari Database Secara Dinamis di PHPMaker 2025

Menu

  • Siapa Saya?
  • Web Development
  • PHPMaker
  • Umum
  • Syarat dan Ketentuan
  • Sitemap (Peta Situs)
  • Komentar

Komentar Terbaru

  • Masino Sinaga pada Mudahnya Menyesuaikan Timezone di Calendar Report pada PHPMaker 2023
  • Nano pada Mudahnya Menyesuaikan Timezone di Calendar Report pada PHPMaker 2023
  • Charly pada Mudahnya Menyembunyikan Tombol Master/Detail di Halaman View pada PHPMaker 2023
  • Charly pada Mudahnya Menyembunyikan Tombol Master/Detail di Halaman View pada PHPMaker 2023
  • Masino Sinaga pada Mudahnya Menyembunyikan Tombol Master/Detail di Halaman View pada PHPMaker 2023

Situs Terkait

  1. I Love PHPMaker
  2. Situs Resmi PHPMaker
  3. Forum Diskusi PHPMaker
  4. PHPMaker di IlmuKomputer.com
  5. PHPMaker Projects
  6. PHPMaker Learning

Baru di PHPMaker?

Baca ini terlebih dulu ...

  1. Ayo Menjadi Web Developer yang Cerdas!
  2. PHPMaker: PHP Code Generator + PHP Framework
  3. Pertanyaan-Pertanyaan yang Paling Sering Diajukan Seputar PHPMaker
  4. Tips buat Anda Pemula yang Baru Mengenal dan Menggunakan PHPMaker
  5. Bacalah Help, Bacalah Help, dan Bacalah Help di PHPMaker!

(c) Masino Sinaga 2009 - 2025 | WordPress | Catat masuk | Kembali ke atas