예제 #1
0
 /**
  * ส่งอีเมล์ ตาม ID
  *
  * @param Request $request
  */
 public function save(Request $request)
 {
     if ($request->initSession() && $request->isReferer() && ($login = Login::isMember())) {
         // ค่าที่ส่งมา
         $subject = $request->post('mail_subject')->topic();
         $detail = nl2br($request->post('mail_detail')->textarea());
         // ตรวจสอบ ค่าที่ส่งมา
         $ret = array();
         $antispam = new Antispam($request->post('mail_antispamid')->toString());
         if (!$antispam->valid($request->post('mail_antispam')->toString())) {
             // Antispam ไม่ถูกต้อง
             $ret['ret_mail_antispam'] = 'this';
             $ret['input'] = 'mail_antispam';
         } else {
             // ตรวจสอบผู้รับ
             $reciever = array();
             foreach (self::getUser($request->post('mail_reciever')->filter('0-9a-z')) as $item) {
                 $reciever[] = $item['email'] . (empty($item['name']) ? '' : '<' . $item['name'] . '>');
             }
             $reciever = implode(',', $reciever);
             // ตรวจสอบค่าที่ส่งมา
             if ($reciever == '') {
                 $ret['alert'] = Language::get('Unable to send e-mail, Because you can not send e-mail to yourself or can not find the email address of the recipient.');
                 $ret['location'] = WEB_URL . 'index.php';
             } elseif ($subject == '') {
                 $ret['ret_mail_subject'] = 'this';
                 $ret['input'] = 'mail_subject';
             } elseif ($detail == '') {
                 $ret['ret_mail_detail'] = 'this';
                 $ret['input'] = 'mail_detail';
             } else {
                 // ส่งอีเมล์
                 $err = Email::send($reciever, $login['email'] . (empty($login['displayname']) ? '' : '<' . $login['displayname'] . '>'), $subject, $detail);
                 if (empty($err)) {
                     // เคลียร์ Antispam
                     $antispam->delete();
                     // ส่งอีเมล์สำเร็จ
                     $ret['alert'] = Language::get('Your message was sent successfully');
                     $ret['location'] = WEB_URL . 'index.php';
                 } else {
                     // ข้อผิดพลาดการส่งอีเมล์
                     echo $err;
                 }
             }
         }
         if (!empty($ret)) {
             // คืนค่าเป็น JSON
             echo json_encode($ret);
         }
     }
 }
예제 #2
0
 /**
  * ฟังก์ชั่นส่งเมล์จากแม่แบบจดหมาย
  *
  * @param int $id ID ของจดหมายที่ต้องการส่ง
  * @param string $module ชื่อโมดูลของจดหมายที่ต้องการส่ง
  * @param array $datas ข้อมูลที่จะถูกแทนที่ลงในจดหมาย ในรูป 'ตัวแปร'=>'ข้อความ'
  * @param string $to ที่อยู่อีเมล์ผู้รับ  คั่นแต่ละรายชื่อด้วย ,
  * @return string สำเร็จคืนค่าว่าง ไม่สำเร็จ คืนค่าข้อความผิดพลาด
  */
 public static function send($id, $module, $datas, $to)
 {
     $model = new static();
     $email = $model->db()->createQuery()->from('emailtemplate')->where(array(array('module', $module), array('email_id', (int) $id), array('language', array(Language::name(), ''))))->cacheOn()->toArray()->first('from_email', 'copy_to', 'subject', 'detail');
     if ($email === false) {
         return Language::get('email template not found');
     } else {
         // ผู้ส่ง
         $from = empty($email['from_email']) ? self::$cfg->noreply_email : $email['from_email'];
         // ข้อความในอีเมล์
         $replace = ArrayTool::replace(array('/%WEBTITLE%/' => strip_tags(self::$cfg->web_title), '/%WEBURL%/' => WEB_URL, '/%ADMINEMAIL%/' => $from, '/%TIME%/' => Date::format()), $datas);
         ArrayTool::extract($replace, $keys, $values);
         $msg = preg_replace($keys, $values, $email['detail']);
         $subject = preg_replace($keys, $values, $email['subject']);
         $to = explode(',', $to);
         if (!empty($email['copy_to'])) {
             $to[] = $email['copy_to'];
         }
         // ส่งอีเมล์
         return parent::send(implode(',', $to), $from, $subject, $msg);
     }
 }
예제 #3
0
 /**
  * ฟังก์ชั่นส่งอีเมล์
  */
 public function save()
 {
     $ret = array();
     // referer, session, member
     if (self::$request->initSession() && self::$request->isSafe() && ($login = Login::adminAccess())) {
         if ($login['email'] == 'demo') {
             $ret['alert'] = Language::get('Unable to complete the transaction');
         } else {
             // รับค่าจากการ POST
             $save = array('reciever' => self::$request->post('reciever')->toString(), 'from' => self::$request->post('from')->toString(), 'subject' => self::$request->post('subject')->topic(), 'detail' => self::$request->post('detail')->toString());
             // ตรวจสอบค่าที่ส่งมา
             $input = false;
             // reciever
             if (!empty($save['reciever'])) {
                 foreach (explode(',', $save['reciever']) as $item) {
                     if (!Validator::email($item)) {
                         if (!$input) {
                             $input = 'reciever';
                             break;
                         }
                     }
                 }
             } else {
                 $ret['reciever'] = '';
             }
             // subject
             if (empty($save['subject'])) {
                 $input = !$input ? 'subject' : $input;
             } else {
                 $ret['ret_subject'] = '';
             }
             // from
             if (Login::isAdmin()) {
                 if ($save['from'] == self::$cfg->noreply_email) {
                     $save['from'] = self::$cfg->noreply_email . '<' . strip_tags(self::$cfg->web_title) . '>';
                 } else {
                     $user = $this->db()->createQuery()->from('user')->where(array('email', $save['from']))->first('email', 'displayname');
                     if ($user) {
                         $save['from'] = $user->email . (empty($user->displayname) ? '' : '<' . $user->displayname . '>');
                     } else {
                         // ไม่พบผู้ส่ง ให้ส่งโดยตัวเอง
                         $save['from'] = $login['email'];
                     }
                 }
             } else {
                 // ไม่ใช่แอดมิน ผู้ส่งเป็นตัวเองเท่านั้น
                 $save['from'] = $login['email'];
             }
             // detail
             $patt = array('/^(&nbsp;|\\s){0,}<br[\\s\\/]+?>(&nbsp;|\\s){0,}$/iu' => '', '/<\\?(.*?)\\?>/su' => '', '@<script[^>]*?>.*?</script>@siu' => '');
             $save['detail'] = trim(preg_replace(array_keys($patt), array_values($patt), $save['detail']));
             if (!$input) {
                 $err = Email::send($save['reciever'], $save['from'], $save['subject'], $save['detail']);
                 if (empty($err)) {
                     // ส่งอีเมล์สำเร็จ
                     $ret['alert'] = Language::get('Your message was sent successfully');
                     $ret['location'] = self::$request->getUri()->postBack('index.php', array('id' => 0));
                 } else {
                     // ข้อผิดพลาดการส่งอีเมล์
                     $ret['alert'] = $err;
                 }
                 // clear
                 self::$request->removeToken();
             } else {
                 // คืนค่า input ตัวแรกที่ error
                 $ret['input'] = $input;
             }
         }
     } else {
         $ret['alert'] = Language::get('Unable to complete the transaction');
     }
     // คืนค่าเป็น JSON
     echo json_encode($ret);
 }