资讯专栏INFORMATION COLUMN

Magento模块示例发送邮件

joy968 / 2873人阅读

摘要:今天写一个模块,主要的功能是实现前台用户利用表单给管理员发送邮件的一个功能,功能很简单,但在这个模块中,可以了解到一些有关的一些细节,比如,如何获取系统标签,如何使用默认的提示信息,如何使用服务等等。

今天写一个magento模块,主要的功能是实现前台用户利用表单给管理员发送邮件的一个功能,功能很简单,但在这个模块中,可以了解到一些有关magento的一些细节,比如,如何获取系统标签id,如何使用magento默认的提示信息,如何使用smtp服务等等。
新建模块Inchoo
目录结构如下:

Inchoo
 |--_SimpleContact
          |----controllers
                |--IndexController.php
          |----etc
                |--config.xml

首先需要让magento识别写的扩展:
app/etc/modules/Inchoo_SimpleContact.xml



    
        
            true
            local
        
        

其次再在模块的配置文件config.xml中添加:



    
        
            0.1.0
        
       
    
        
            
                standard
                
                    Inchoo_SimpleContact
                    simplecontact
                
            
        
        

在控制中IndexController.php代码如下,在代码中解释器含义:

loadLayout();
        //使用mganeto默认的提示信息,需要在控制器添加$this->_initLayoutMessages("core/session");
        $this->_initLayoutMessages("core/session");
        //在控制器中创建一个block
        $block = $this->getLayout()->createBlock(
                "Mage_Core_Block_Template",
                "inchoo.simple_contact",
                array(
                        "template" => "inchoo/simple_contact.phtml"
                )
        );
        $this->getLayout()->getBlock("content")->append($block);
        //$this->getLayout()->getBlock("right")->insert($block, "catalog.compare.sidebar", true);

        $this->_initLayoutMessages("core/session");
        $this->renderLayout();
    }
    //发送邮件
    public function sendemailAction()
    {
            $params = $this->getRequest()->getParams();
            //print_r($params);
            //这里获取后台设置的smtp的host和port
            //$my_smtp_host = Mage::getStoreConfig("system/smtp/host");
            //$my_smtp_port = Mage::getStoreConfig("system/smtp/port");
            //以下代码,需要提前安装好smtp的一个扩展插件SMTPPro            $general_email=Mage::getStoreConfig("trans_email/ident_general/email");
            $sales_email = Mage::getStoreConfig("trans_email/ident_sales/email");
            $support_email = Mage::getStoreConfig("trans_email/ident_support/email");
            //smtppro
            $smtppro_host = Mage::getStoreConfig("smtppro/general/smtp_host");
            $smtppro_port = Mage::getStoreConfig("smtppro/general/smtp_port");
            $smtppro_username = Mage::getStoreConfig("smtppro/general/smtp_username");
            $smtppro_password = Mage::getStoreConfig("smtppro/general/smtp_password");
            $email=Mage::getStoreConfig("contacts/email/recipient_email");

             $config = array(
                    "port" => $smtppro_port,
                     "auth" => "login",
                     "username" => $smtppro_username,
                     "password" => $smtppro_password
            );
            $transport = new Zend_Mail_Transport_Smtp($smtppro_host, $config);
            Zend_Mail::setDefaultTransport($transport);
            
            $mail =  new Zend_Mail("utf-8");
            print_r($transport);
            //exit();
            $mail->setBodyText($params["comment"]);
//             $mail->setFrom($config["username"]);
//             $mail->addTo($params["email"], $params["name"]);
            $mail->setFrom($params["email"]);
            $mail->setSubject("test");
            $mail->addTo($email);
           
            try {
                $mail->send();
                $this->_redirect("*/*");
                Mage::getSingleton("core/session")->addSuccess("Your request has been sent!");
            }
            catch(Exception $ex) {
                print_r($ex->getMessage());
                Mage::getSingleton("core/session")->addError("Unable to send!");
                $this->_redirect( $this->getBaseUrl());
               
            }
        }
        
}

备注:代码中提到的SMTP Pro插件,可以在Magento Connect上下载源文件,然后安装到自己的项目中即可,安装成功后,可以看到在systerm->Configuration左侧看到ASCHRODER EXTENSIONS/SMTP Pro,点击看到如下界面:

提示:如果安装好后,打开报错,应先清理缓存,然后logout注销,重新登录后台即可。
控制器中有

$my_smtp_host = Mage::getStoreConfig("system/smtp/host");
$my_smtp_port = Mage::getStoreConfig("system/smtp/port");

这里是获取magento自己的input值,如图所示:

同理可得port的input值。
前台页面代码如下:

路径如下:
app/design/frontend/rwd/default/template/inchoo/simple_contact.phtml

simple_contact.phtml内容如下:

" method="post">

Inchoo_SimpleContact module sample



  •  

* Required Fields

页面效果如图:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21343.html

相关文章

  • 一个简单的Magento1.9模块示例

    摘要:本次要做的就是,撰写一个模块,让该模块跑完整个的流程。创建模型,需要启用模型,启用资源模型,在资源模型中添加实体,再为资源模型设置读写适配器。 很多时候,不知道Magento模块到底该怎么写,比如ThinkPHP,YII框架,它是直接将控制器Controller中的所取得相关数据直接传递到视图层View,而Magento虽然也是MVC三层,但是在中间多了布局对象Layout与区块Blo...

    Pikachu 评论0 收藏0
  • [译]Magento2 高级路由

    摘要:以上是的的目录路由器配置。考虑重写模块以上文件文件使用的操作字符串。例如,如果你想回到第一个模块在这个系列和添加前端端点,所有你需要做的就是添加以下配置和以下控制器文件。默认操作字符串段我们从先进的路由移动之前,有一些最后要提。 今天,我们要介绍的几个Magento的路由系统的高级功能,并讨论一些看似急性锐边的历史。虽然所有在这篇文章中提供的技术可能不是最好的方式来实现自己的目标,作为...

    PumpkinDylan 评论0 收藏0
  • magento 2模块开发实例helloworld模块

    1、在app/etc/config.php中添加自定义的模块(magento1声明模块是在app/etc/modules): Silk_Helloworld =>1, 值为1,开启模块,类似true,0关闭模块2、创建module.xml:app/code/Silk/Helloworld/etc/module.xml 3、创建前段控制器:app/code/Silk/Hellowo...

    DirtyMind 评论0 收藏0
  • Magento2.x 如何创建一个Module?

    摘要:今天记录下如何创建一个,直接进入正题。创建好我们的和之后,接下来就需要创建一系列的文件,我们依次来说每个文件如何创建。 Magento2.x版本已经发布一段时间了,到现在为止已经到2.2了,最新版本可以关注Magento在github上的更新。今天记录下Magento2.1如何创建一个module,直接进入正题。 安装Magento2后,进入项目的根目录后,进入/app目录,只有app...

    bbbbbb 评论0 收藏0
  • Magento如何重写控制器?

    摘要:重写控制器重写前端控制器对于以重写的为例。首先,对控制器的复写,需要分清是对还是的复写 Magento重写控制器 重写--前端控制器 对于以重写 Mage_Checkout_CartController的indexAction()为例。找到Mage/Checkout/CartController.php代码中的indexAction: public function indexActi...

    tracy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<