Files
OMS/app/desktop/controller/email.php
2025-12-28 23:13:25 +08:00

114 lines
5.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
class desktop_ctl_email extends desktop_controller{
var $workground = 'desktop_ctl_system';
/**
* __construct
* @param mixed $app app
* @return mixed 返回值
*/
public function __construct($app)
{
parent::__construct($app);
header("cache-control: no-store, no-cache, must-revalidate");
}
function setting(){
#print_r($this->app->getConf('email.config.sendway'));exit;
$this->pagedata['options'] = $this->getOptions();
$this->pagedata['messengername'] = "messenger";
$this->display('email/config.html');
}
function getOptions(){
return array(
'sendway'=>array('label'=>app::get('desktop')->_('发送方式'),'type'=>'radio','options'=>array('mail'=>app::get('desktop')->_("使用本服务器发送"),'smtp'=>app::get('desktop')->_("使用外部SMTP发送")),'value'=>$this->app->getConf('email.config.sendway')?$this->app->getConf('email.config.sendway'):"mail"),
'usermail'=>array('label'=>app::get('desktop')->_('发信人邮箱'),'type'=>'input','value'=>$this->app->getConf('email.config.sendway')?$this->app->getConf('email.config.usermail'):'yourname@domain.com'),
'smtpserver'=>array('label'=>app::get('desktop')->_('smtp服务器地址'),'type'=>'input','value'=>$this->app->getConf('email.config.smtpserver')?$this->app->getConf('email.config.smtpserver'):'mail.domain.com'),
'smtpport'=>array('label'=>app::get('desktop')->_('smtp服务器端口'),'type'=>'input','value'=>$this->app->getConf('email.config.smtpport')?$this->app->getConf('email.config.smtpport'):'25'),
'smtpuname'=>array('label'=>app::get('desktop')->_('smtp用户名'),'type'=>'input','value'=>$this->app->getConf('email.config.smtpuname')?$this->app->getConf('email.config.smtpuname'):''),
'smtppasswd'=>array('label'=>app::get('desktop')->_('smtp密码'),'type'=>'password','value'=>$this->app->getConf('email.config.smtppasswd')?$this->app->getConf('email.config.smtppasswd'):'')
);
}
function saveCfg(){
# $this->begin('index.php?app=desktop&ctl=email&act=setting');
$this->begin();
foreach($_POST['config'] as $key=>$value){
$this->app->setConf('email.config.'.$key,$value);
}
$this->end(true,app::get('desktop')->_('配置保存成功'));
}
function testEmail(){
$this->pagedata['options'] = $_GET['config'];
if ($_GET['config']['sendway']=="mail")
$this->pagedata['acceptor']=$_GET['config']['usermail'];
$this->display('email/testemail.html');
}
function doTestemail(){
$usermail = $_POST['usermail']; //发件账户
$smtpport = $_POST['smtpport']; //端口号
$smtpserver = $_POST['smtpserver']; //邮件服务器
$smtpuname = $_POST['smtpuname']; //账户名称
$smtppasswd = $_POST['smtppasswd'];//账户密码
$acceptor = $_POST['acceptor']; //收件人邮箱
$subject = app::get('desktop')->_("来自[").app::get('site')->getConf('site.name').app::get('desktop')->_("]网店的测试邮件");
$body = app::get('desktop')->_("这是一封测试邮箱配置的邮件,您的网店能正常发送邮件。");
switch ($_POST['sendway']){
case 'smtp':
$email = kernel::single('desktop_email_email');
$loginfo = app::get('desktop')->_("无法发送测试邮件,下面是出错信息:");
if ($email->ready($_POST)){
$res = $email->send($acceptor,$subject,$body,$_POST);
if ($res)
$loginfo = app::get('desktop')->_("已成功发送一封测试邮件,请查看接收邮箱。");
if ($email->errorinfo){
$err=$email->errorinfo;
$loginfo .= "<br>".$err['error'];
}
}
else{
$loginfo .= "<br>".var_export($email->smtp->error,true);
}
echo $loginfo;
break;
case 'mail':
ini_set('SMTP',$smtpserver);
ini_set('smtp_port',$smtpport);
ini_set('sendmail_from',$usermail);
$email = kernel::single('desktop_email_email');
$subject=$email->inlineCode($subject);
$header = array(
'Return-path'=>'<'.$usermail.'>',
'Date'=>date('r'),
'From'=>$email->inlineCode($this->app->getConf('system.shopname')).'<'.$usermail.'>',
'MIME-Version'=>'1.0',
//'Subject'=>$subject,
//'To'=>$acceptor,
'Content-Type'=>'text/html; charset=UTF-8; format=flowed',
'Content-Transfer-Encoding'=>'base64'
);
$body=chunk_split(base64_encode($body));
$header=$email->buildHeader($header);
if(mail($acceptor, $subject, $body, $header)){
echo app::get('desktop')->_("发送成功!");
}
else{
echo app::get('desktop')->_("发送失败,请检查邮箱配置!");
}
break;
}
}
}
?>