PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

sp_send_dbmail alternatif di postgres? Cara mudah mengirim laporan email Postgres?

Anda dapat menggunakan pgMail untuk mengirim email dari dalam PostgreSQL.

Prasyarat:

Sebelum Anda dapat menggunakan pgMail, Anda harus menginstal bahasa prosedural TCL/u. TCL/u adalah versi TCL TAK TERBATAS yang dapat digunakan database Anda dalam fungsi tersimpannya. Sebelum Anda tergila-gila menginstal bahasa prosedural TCL tak terbatas di semua database Anda, pertimbangkan bahwa Anda harus menyiapkan tindakan pencegahan keamanan yang memadai saat menambahkan bahasa TCL/u ke database Anda! Saya tidak akan bertanggung jawab atas server yang salah konfigurasi yang memungkinkan pengguna berbahaya melakukan hal-hal buruk!

Untuk menginstal bahasa prosedural TCL/u, Anda harus telah mengkompilasi (atau menggunakan paket biner) dan menginstal ekstensi TCL dari PostgreSQL. Setelah Anda yakin ini telah selesai, cukup ketik berikut ini pada prompt shell unix sebagai administrator database.

# createlang pltclu [YOUR DATABASE NAME]

Di tempat [YOUR DATABASE NAME] , masukkan nama database tempat Anda akan menambahkan prosedur tersimpan. Jika Anda ingin ditambahkan ke semua database BARU, gunakan "template1" sebagai nama database Anda.

Sebelum menambahkan prosedur baru ke DB, lakukan:

Ganti teks <ENTER YOUR MAILSERVER HERE> dengan nama domain yang sepenuhnya memenuhi syarat untuk server surat Anda. yaitu, mail.server.com.

Ganti teks <ENTER YOUR DATABASESERVER HERE> dengan nama domain yang sepenuhnya memenuhi syarat untuk server database Anda. yaitu, db.server.com.

Setelah Anda melakukan hal di atas, Anda siap untuk pergi.

Setelah langkah ini, gunakan antarmuka psql untuk menambahkan fungsi pgMail. Cukup salin isi file pgmail.sql dan tempel ke jendela Anda. Anda juga dapat memuatnya langsung dari baris perintah dengan mengetik:

# psql -e [YOUR DATABASE NAME] < pgMail.sql

Setelah Anda menginstal fungsi yang disimpan, cukup panggil prosedur sebagai berikut.

select pgmail('Send From ','Send To ','Subject goes here','Plaintext message body here.');

select pgmail('Send From ','Send To ','Subject goes here','','HTML message body here.');

Atau sekarang, MIME multi-bagian!

select pgmail('Send From ','Send To ', 'Subject goes here','Plaintext message body here.', 'HTML message body here.');

Di bidang "Kirim Dari" dan "Kirim Ke", Anda dapat menyertakan email saja, atau email yang diapit <> dengan nama teks biasa.

Menguji Pemasangan Anda

Saya telah menyertakan contoh untuk Anda coba. Anda HARUS PERTAMA mengganti string dalam skrip example.execute.sql dengan alamat email asli Anda, dan menginstal bahasa plpgsql seperti yang Anda lakukan pada pltclu di atas. Anda dapat melakukannya dengan memasukkan createlang [YOUR DATABASE NAME] plpgsql .

Setelah selesai, jalankan dulu example.setup.sql. Kemudian jalankan skrip example.execute.sql. Asalkan semuanya berfungsi dengan baik, Anda akan melihat 2 email di kotak surat Anda. Untuk menghapus contoh ini, jalankan example.cleanup.sql naskah.

Otentikasi SMTP

pgMail tidak mendukung SMTP Auth. Sebagian besar orang yang menggunakannya mengatur server surat lokal di server basis data untuk antrian lokal dan kemudian menggunakan pengaturan itu untuk setiap relai yang diperlukan (dengan auth). Atau, sebagai alternatif, biasanya ada aturan khusus yang dibuat di file /etc/mail/access (atau yang setara) untuk memungkinkan relay dari IP yang digunakan oleh server database. Jelas, opsi terakhir tidak bekerja dengan GMail.

Bagian dari alasan di balik ini adalah bahwa auth akan bermasalah dalam sifat transaksional pgMail untuk pekerjaan besar. Solusi ideal adalah dengan menjatuhkan server EXIM di server database dan menangani semua jenis otentikasi sebagai server relai pintar. Berikut ini tautan yang memiliki info lebih lanjut tentang cara menyetel server SMTP .

Dokumentasi:http://brandolabs.com/pgmail



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails menyertakan kueri dengan kondisi tidak mengembalikan semua hasil dari tabel kiri

  2. Terkadang kesalahan Postgres di Heroku:tidak dapat menerjemahkan nama host <pg URL> ke alamat:Nama atau layanan tidak diketahui (PG::Error)

  3. Menggunakan Aturan untuk Menyisipkan Urutan Kenaikan Otomatis Tabel Sekunder

  4. Apache Cayenne / PostgreSQL:terlalu banyak klien yang sudah error

  5. Apakah ada fungsi yang membutuhkan waktu satu tahun, bulan, dan hari untuk membuat tanggal di PostgreSQL?