Opencart Error需要修复

时间:2018-01-08 07:56:41

标签: php opencart opencart2.x

我无法理解这个错误。任何人都可以帮助我。

PHP Fatal error:  Uncaught exception 'Exception' with message 'Error: E-Mail to required!' in /home/projects/public_html/system/storage/modification/system/library/mail.php:94
Stack trace:
#0 /home/projects/public_html/vqmod/vqcache/vq2-system_storage_modification_catalog_model_checkout_order.php(1619): Mail->send()
#1 [internal function]: ModelCheckoutOrder->addOrderHistory(145031, 2440, '<p>Hi ,</p>\r\n\r\n...', true, true)
#2 /home/projects/public_html/vqmod/vqcache/vq2-system_storage_modification_system_engine_loader.php(150): call_user_func_array(Array, Array)
#3 [internal function]: Loader->{closure}(Array)
#4 /home/projects/public_html/system/engine/proxy.php(13): call_user_func(Object(Closure), Array)
#5 /home/projects/public_html/vqmod/vqcache/vq2-catalog_controller_api_order.php(841): Proxy->__call('addOrderHistory', Array)
#6 /home/projects/public_html/vqmod/vqcache/vq2-catalog_controller_api_order.php(841): Proxy->addOrderHistory(145031, 2440, '<p>Hi ,</p>\r\n\r\n...', true, true)
#7 [internal function]: Controller in /home/projects/public_html/system/storage/modification/system/library/mail.php on line 94

2 个答案:

答案 0 :(得分:0)

似乎在新的OC版本中,有人忘记将mail_smtp_host更改为ALL文件中的mail_smtp_hostname! 但我并不感到惊讶,OC中的SMTP邮件传输从一开始就没有好转:P

您有两个选项可以查找config_mail_smtp_host并将其更改为所有文件中的config_mail_smtp_hostname(大约30个)或等到2.0.2.1版本,因为它似乎已在那里修复。 还有第三种方法,临时将admin设置文件中的config_mail_smtp_hostname恢复为config_mail_smtp_host(只需编辑2个文件)。

我在这里发布了最后一个解决方案,因为它是最简单的解决方案。

编辑此文件admin / controller / setting / setting.php并找到以下代码:

`if (isset($this->request->post['config_mail_smtp_hostname'])) {                                                                                                                                                              
$data['config_mail_smtp_hostname'] = $this->request->post['config_mail_smtp_hostname'];                                                                                                                              
else {                                                                                                                                                                                                                     
$data['config_mail_smtp_hostname'] = $this->config->get('config_mail_smtp_hostname');                                                                                                                                
} `if (isset($this->request->post['config_mail_smtp_host'])) {                                                                                                                                                              
$data['config_mail_smtp_host'] = $this->request->post['config_mail_smtp_host'];                                                                                                                              
else {                                                                                                                                                                                                                     
$data['config_mail_smtp_host'] = $this->config->get('config_mail_smtp_host');                                                                                                                                
} 

现在将所有config_mail_smtp_hostname更改为config_mail_smtp_host,因此代码如下所示: 代码:

    if (isset($this->request->post['config_mail_smtp_host'])) {                                                                                                                                                              
$data['config_mail_smtp_host'] = $this->request->post['config_mail_smtp_host'];                                                                                                                              
else {                                                                                                                                                                                                                     
$data['config_mail_smtp_host'] = $this->config->get('config_mail_smtp_host');                                                                                                                                
} 

现在编辑此文件: 管理员/视图/模板/设置/ setting.tpl 找到这段代码:

<label class="col-sm-2 control-label" for="input-mail-smtp-hostname"><span data-toggle="tooltip" title="<?php echo $help_mail_smtp_hostname; ?>"><?php echo $entry_mail_smtp_hostname; ?></span></label>                     
            <div class="col-sm-10">                                                                                                                                                                                                      
              <input type="text" name="config_mail_smtp_hostname" value="<?php echo $config_mail_smtp_hostname; ?>" placeholder="<?php echo $entry_mail_smtp_hostname; ?>" id="input-mail-smtp-hostname" class="form-control" />  

并将其更改为:

<label class="col-sm-2 control-label" for="input-mail-smtp-host"><span data-toggle="tooltip" title="<?php echo $help_mail_smtp_hostname; ?>"><?php echo $entry_mail_smtp_hostname; ?></span></label>                         
            <div class="col-sm-10">                                                                                                                                                                                                      
              <input type="text" name="config_mail_smtp_host" value="<?php echo $config_mail_smtp_host; ?>" placeholder="<?php echo $entry_mail_smtp_hostname; ?>" id="input-mail-smtp-host" class="form-control" /> 

这应该可以解决问题。 啊,你需要再次在管理员中设置SMTP主机名!

OC 1.5.x and 2.x SMTP email from field error fix

答案 1 :(得分:0)

一个或多个修改正在影响此文件:

catalog_model_checkout_order.php

你有:

Mail->send()

但似乎在这个档案上遗漏了这样的东西:

$mail->setTo($order_info['email']);

您可以编辑以下文件:

vqmod/vqcache/vq2-system_storage_modification_catalog_model_checkout_order.php

搜索Mail->send()的所有出现,特别是1619行附近的出现。

必须$mail->setTo附近,如果它不存在,请添加自己:$mail->setTo('your-email@example.com');

如果这解决了您的问题,您必须检查修改以找出导致此问题的修改。

请注意,上面的文件是一个临时文件,当您清除缓存时会丢失。