public function send(&$data) { if (empty($data) || !is_array($data)) { return; } $Setting = D('Setting'); $settings = $Setting->getSettings(); $from = $settings['EMAIL_from']; require_once 'class.phpmailer.php'; try { $mail = new PHPMailer(true); //New instance, with exceptions enabled $mail->CharSet = 'UTF-8'; //设置邮件的字符编码,这很重要,不然中文乱码 if ($settings['EMAIL_smtp_enable']) { $mail->IsSMTP(); $mail->SMTPAuth = $settings['EMAIL_smtp_auth'] == 1; $mail->Port = $settings['EMAIL_smtp_port']; $mail->Host = $settings['EMAIL_smtp_host']; $mail->Username = $settings['EMAIL_smtp_username']; $mail->Password = $settings['EMAIL_smtp_password']; $from = empty($from) ? $settings['EMAIL_smtp_username'] : $from; } $mail->AddReplyTo($from, "定位监控系统"); $mail->From = $from; $mail->FromName = "定位监控系统"; foreach ($data as $value) { if (is_email_well_form($value['email'])) { $mail->AddAddress($value['email']); } } $mail->Subject = $value['title']; $mail->AltBody = $value['content']; $mail->MsgHTML($value['content']); $mail->WordWrap = 80; // set word wrap $mail->IsHTML(true); // send as HTML $mail->Send(); foreach ($data as $key => $value) { $data[$key]['success'] = '1'; $data[$key]['error_msg'] = ''; } } catch (phpmailerException $e) { foreach ($data as $key => $value) { $data[$key]['success'] = '0'; $data[$key]['error_msg'] = $e->errorMessage(); } } $this->log($data); }
public function emailtest() { $email = $_POST['email']; if (empty($email)) { return_value_json(false, 'msg', '电子邮件地址不能为空'); } if (!is_email_well_form($email)) { return_value_json(false, 'msg', '电子邮件地址不正确'); } $user = session('user'); if (empty($user) || empty($user['userId'])) { return_value_json(false, 'msg', '测试电子邮件发送必须为登陆用户'); } $data = array(array('type' => '测试', 'related_id' => 0, 'user_id' => $user['userId'], 'email' => $email, 'title' => '邮件测试', 'content' => '这是一个用于测试邮件发送是否成功的邮件,不需要回复。', 'send_time' => date('Y-m-d H:i:s'))); $Email = D('Email'); check_error($Email); $Email->send($data); if ($data[0]['success']) { return_value_json(true); } else { return_value_json(false, 'msg', $data[0]['error_msg']); } }
/** * 根据$rule设置发送报警email给$receivers */ private function _send_alarm_email($alarm, $rule, $receivers) { $content = str_replace('{时间}', $alarm['start_time'], $rule['email_text']); $content = str_replace('{消息}', $alarm['msg'], $content); $email = array('type' => '报警', 'related_id' => $alarm['id'], 'content' => $content, 'title' => '报警邮件', 'send_time' => date('Y-m-d H:i:s')); $emails = array(); $emailData = array(); foreach ($receivers as $key => $receiver) { $rcv = array('user_id' => $receiver['receiver_id'], 'email' => $receiver['email']); if (is_email_well_form($receiver['email'])) { $emails[] = $receiver['email']; $emailData[] = array_merge($email, $rcv); } else { $emailData[] = array_merge($email, $rcv, array('success' => 0, 'result' => '电子邮件地址格式不正确,所以没有发送电子邮件')); } } $Email = D('Email'); check_error($Email); if (empty($emails)) { if (!empty($emailData)) { $Email->log($emailData); } return; } else { $Email->send($emailData); } }