Saya memiliki alur kerja dev, staging, dan server live yang diatur di Pantheon. Situs saya memiliki banyak peraturan yang menyebabkan anggota dikirim melalui email karena berbagai alasan. Kadang-kadang saya perlu mengerjakan ini di situs dev / staging saya tetapi saya menyadari bahwa, karena mereka memiliki data langsung, kadang-kadang pengguna akan menerima email tambahan atau duplikat ketika saya sedang mengerjakan sesuatu.
Apakah ada cara mudah untuk mematikan semua kemampuan e-mail (lebih disukai secara otomatis untuk mencegah saya lupa) pada server dev / staging? Idealnya, saya ingin menonaktifkan e-mail melalui modul khusus, karena saya sudah memiliki langkah-langkah untuk memastikan modul khusus diaktifkan pada dev / staging.
git update-index --assume-unchanged sites/default/settings.php
untuk menjaga pengaturan.php dari didorong di lingkungan yang berbeda. Beberapa orang lebih suka beberapa logika kondisional yang memeriksa pengaturan lingkungan dan menyertakan file conf berbeda berdasarkan lingkungan (seperti hampir semua kerangka web lainnya yang ada, dalam bahasa apa pun). Satu-satunya batasan di sini adalah imajinasi seseorang, itu adalah hal-hal dasar PHP / git, tidak perlu ditambahkan ke jawabansites/default/settings.php
, lakukangit update-index --skip-worktree sites/default/settings.php
. Dengan--assume-unchanged
, Anda kehilangan perubahan yang Anda buat pada settings.php jika Anda melakukangit reset --hard
. Lihat stackoverflow.com/questions/13630849/…Jawaban:
Sebagai opsi lain yang lebih cepat, Anda dapat menambahkan baris berikut ke file settings.php situs Anda (jika Anda memiliki modul Devel yang diinstal, yang tentunya Anda harus lakukan jika ini adalah situs dev).
Itu akan menggantikan sistem surat default dengan sistem surat pengembangan Devel, yang menulis email ke file log daripada mengirimnya ke penerima. Secara default file disimpan
temporary://devel-mails
, tetapi Anda dapat mengubahnya dengan mengatur variabel lain, misalnya.sumber
Hanya catatan untuk menambahkan modul lain ke daftar "Ada modul untuk itu":
Saya setuju bahwa fungsi ini dapat dengan mudah diimplementasikan dengan beberapa baris kode, tetapi dengan menggunakan modul ini, Anda dapat terus menerima email ke alamat yang telah ditentukan, dengan perincian tentang penerima asli, fungsi yang bagus, imho.
sumber
Atau Anda dapat menggunakan hook_mail_alter untuk mengarahkan ulang atau mencegah surat drupal:
sumber
git commit .
atau sesuatu yang serupa.Drupal 8
Untuk Drupal 8, Anda dapat menghidupkan penangan surat modul Devel melalui sistem konfigurasi.
Dengan
drush
itu akan menjadi:sumber
settings.local.php
:$config['system.mail']['interface']['default'] = 'devel_mail_log';
$config['devel.settings']['debug_mail_directory'] = 'temporary://my-directory';
.Saya biasanya menggunakan modul Reroute Email untuk kasus ini. Itu dapat mengalihkan semua email dari dev ke email tertentu. Email yang dikirim juga menentukan ke mana email ini harus dikirim.
sumber
Ini akan bekerja tanpa devel dan aman di ketiga lingkungan.
Tambahkan ini di settings.php. Salin dan ubah lingkungan menjadi
test
untuk Test.Kemudian dalam modul saya:
Kredit untuk email dan ide berubah ke http://www.jaypan.com/tutorial/preventing-emails-being-sent-drupal-7-development-environment .
sumber
Saya pikir modul Redirect Mail sangat cocok untuk Anda :) Cara kotor lainnya adalah menginstal modul SMTP dan mengatur smtp yang salah;)
sumber
https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_mail_alter/7
sumber
Jadi Anda dapat meletakkan ini di settings.php atau settings.local.php Anda jika Anda memiliki yang spesifik untuk dev, staging & produksi.
sumber
Dengan asumsi bahwa Anda menggunakan modul Mailsystem , buka
admin/config/system/mailsystem
dan pilihDevelMailLog
.sumber
Siapkan SMTP Anda untuk
localhost
dan instal MailCatcher ( GitHub ) yang menangkap setiap pesan yang dikirim kepadanya untuk ditampilkan di antarmuka web.Instalasi
gem install mailcatcher
mailcatcher
Konfigurasikan
sendmail_path
di PHP untuk:atau dalam konfigurasi Apache :
Pergi ke
http://localhost:1080/
smtp://localhost:1025
Di Drush Anda dapat melakukan seperti:
sumber
jika Anda tidak ingin menyentuh konfigurasi Drupal, atur MailHog di server Anda untuk menangkap semua e-mail yang keluar dari aplikasi Anda.
sumber
Aktifkan modul Dukungan Otentikasi SMTP dan Anda dapat langsung mematikan Server Surat SMTP di
admin/config/system/smtp
.sumber