Milyen is lenne egy modern weboldal HTML email küldés nélkül, ezért nézzük meg hogyan is kell csinálni ezt Codeigniter-ben.
Tapasztaltam már olyan megoldásokat, hogy a controller-ben hardkódolva voltak ezek a levelek, de ez nem a helyes út. Ahelyett, hogy mindenféle hekkel érnénk el a HTML levelünk küldését, egyszerűen hívjuk meg egy view-ból.
Mielőtt email küldenénk tanulmányozzuk át az Email Class lehetőségeit.
Gyakorlatban
HTML email küldéséhez át kell állítanunk a default mailtype configját text-ről html-re.
$config['mailtype'] = 'html';
A karakterkészletet is érdemes beállítani, habár alapértelmezett értéke is UTF-8. Ha mást használunk mint például ISO-8859-2, akkor adjuk meg azt az értéket neki.
$config['charset'] = 'utf-8';
A configot persze az alábbi módokon engedélyeznünk kell.
$this->load->library('email', $config);
vagy
$this->email->initialize($config);
Most következik a lényeg, hívjuk meg view-ból az elmentett levelünket. Bármilyen változót továbbadhatunk neki az alábbi módokon.
// betöltjük a viewt egy változóba
$uzenet=$this->load->view('email',$adat,true);
// a változót illesszük be az email helyére
$this->email->message($uzenet);
Vagy a rövidebb megoldás.
$this->email->message($this->load->view('email',$adat,true));
// ahol az $adat tartalmazza a view-hoz tartozó értékeket
Megfigyelhetitek, hogy a harmadik paramétert TRUE
értékre állítottam. Ilyenkor a nézet betöltése nem a böngésző felé (az output class-nak) küldi a view-t, hanem csak a benne lévő adatokat töltjük be.
Ha problémába ütköznénk, akkor használjuk a beépített debuggert a hiba megkeresésére.
echo $this->email->print_debugger();
Persze el ne felejtsük eltávolítani levelünkből a relatív hivatkozásokat és optimalizálni a használt megjelenést, de ezt persze már egyéni preferenciáink szerint alakíthatjuk.