【问题标题】:Opencart send email in custom ScriptOpencart 在自定义脚本中发送电子邮件
【发布时间】:2013-04-09 02:24:12
【问题描述】:

我的 opencart 中有一个脚本,是我自己制作的,想让它发送一封电子邮件,但我认为当我尝试获取电子邮件参数时,它们会返回 null

这是我的代码:

    $email_to = "somewhere@example.com";
    $config = new Config();
    $mail = new Mail();


    $mail->protocol = $config->get('config_mail_protocol');
    $mail->parameter = $config->get('config_mail_parameter');
    $mail->hostname = $config->get('config_smtp_host');
    $mail->username = $config->get('config_smtp_username');
    $mail->password = $config->get('config_smtp_password');
    $mail->port = $config->get('config_smtp_port');
    $mail->timeout = $config->get('config_smtp_timeout');            
    $mail->setTo($email_to);
    $mail->setFrom("nuno@[mydomain].com");
    $mail->setSender("nuno@[mydomain].com");
    $mail->setSubject("test send mail");
    $mail->setText("test message body text");
    $mail->send();

当我尝试调用:echo $config->get('config_mail_protocol'); 时,它会返回 null

【问题讨论】:

    标签: php scripting opencart


    【解决方案1】:

    不要创建Config 的新实例,而只是简单地调用

    $email_to = "somewhere@example.com";
    $mail = new Mail();
    
    $mail->protocol = $this->config->get('config_mail_protocol');
    $mail->parameter = $this->config->get('config_mail_parameter');
    $mail->hostname = $this->config->get('config_smtp_host');
    $mail->username = $this->config->get('config_smtp_username');
    $mail->password = $this->config->get('config_smtp_password');
    $mail->port = $this->config->get('config_smtp_port');
    $mail->timeout = $this->config->get('config_smtp_timeout');            
    $mail->setTo($email_to);
    $mail->setFrom("somewhere@example.com");
    $mail->setSender("somewhere@example.com");
    $mail->setSubject("test send mail");
    $mail->setText("test message body text");
    
    $mail->send();
    

    【讨论】:

    • 哇,先生,这救了我的命:D 在这里,我的有用和问题解决了:D
    • 顺便说一句,是否可以在我制作的自定义类中调用 $mail 和配置?
    • @nunong21 $mail 被创建为 Mail 类的新实例,所以是的。虽然您的课程扩展了Controller,但它也可以通过$this->config 属性访问Config。如果它不扩展Controller,那么您必须将$registry 传递给它的构造函数,并实现与Controller 类相同的魔术__get()__set() 方法。
    【解决方案2】:

    我在使用前面提到的代码发送邮件时遇到了问题。自 opencart 2 以来,Opencart 邮件变量已更改。

    这是 opencart 2.3 的代码

    $mail = new Mail();
    $mail->protocol = $this->config->get('config_mail_protocol');
    $mail->parameter = $this->config->get('config_mail_parameter');
    $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
    $mail->smtp_username = $this->config->get('config_mail_smtp_username');
    $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
    $mail->smtp_port = $this->config->get('config_mail_smtp_port');
    $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');
    
    $mail->setTo($order_info['email']);
    $mail->setFrom($this->config->get('config_email'));
    $mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
    $mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
    $mail->setHtml($this->load->view('mail/order', $data));
    $mail->setText($text);
    $mail->send();
    

    直接从catalog/model/checkout/order.php复制的代码块

    我希望有人会觉得这很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-16
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      相关资源
      最近更新 更多