ก่อนอื่นทำความรู้จักร
PHP Mail library สำหรับส่งเมล swiftmailer
กันก่อนครับ สิ่งที่จะแนะนำในบทความนี้คือการใช้งาน swiftmailer ในฐานะของ extensions ของ Yii Framework ซึ่งนอกจาก swiftmailer แล้ว Extension ที่ช่วยในในการส่งเมล แทนฟังก์ชั่น mail ของ php แล้ว Yii Framework ยังมี extensions yii-dkim (ใช้ library PHP-DKIM) , mailer (ใช้ library PHPMailer) สำหรับในบทความนี้ผมเลือก swiftmailer เพราะเป็น extensions ที่ใช้งานงาน มีระบบ Log การ config ง่าย วิํธีคือ ให้ดาวน์โหลด Yii swiftmailer extensions จากที่
1. https://code.google.com/p/yii-mail/
2. unzip ไปไว้ที่ protected/extensions/
3. ในไฟล์ config ของ yii Framework เพิ่ม
'application.extensions.yii-mail.*'ในส่วนของ autoloading model และ component classes
จะได้ ตามตัวอย่าง
// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
'application.extensions.yii-mail.*'
),
และเพิ่ม
'mail' => array(
'class' => 'application.extensions.yii-mail.YiiMail',
'transportType'=>'smtp', /// case sensitive!
'transportOptions'=>array(
'host'=>'mail server',
'username'=>'ชื่อผู้ใช้',
'password'=>'รหัส,
'port'=>'25',
// 'encryption'=>'ssl',
),
'viewPath' => 'application.views.mail',
'logging' => true,
'dryRun' => false
),
ในส่วนของ components
4. ตัวอย่างโค้ดส่งเมลในส่วนของ Model
$addto = 'E-mail ของผู้รับ';
$msg = 'ข้อความที่ต้องการส่ง';
$message = new YiiMailMessage;
$message->subject = 'หัวข้อมูลที่ต้องส่ง';
$message->setBody($msg, 'text/html');
$message->addTo($addTo);
$message->from = Yii::app()->params['adminEmail'];
Yii::app()->mail->send($message);
เท่านี้เราก็ส่งเมล ออกแทนการใช้ function mail() ของ php ได้แล้วครับ
ถ้าต้องการ เอาข้อมูลจาก View มาเป็นข้อความในการส่งเมลก็ทำได้ไม่ยากครับ โดยเรา renderPartial มาใช้ได้เลย