发送带有Cakephp2的电子邮件

问题描述 投票:1回答:3

我在使用cakephp2发送邮件时遇到问题,我知道我可以发送电子邮件,因为我已配置了我的后缀,并且可以使用命令行或php发送电子邮件。因此,请给我发送一个Cakephp2发送电子邮件的示例。

这是错误消息

无效的电子邮件:“ you @ localhost”错误:发生内部错误。

我也尝试通过gmail使用ssl,但它也不起作用,这给了我很大的麻烦。

谢谢你们

顺便说一下,我正在尝试此URL http://book.cakephp.org/2.0/en/core-utility-libraries/email.html的确切示例

email cakephp-2.0
3个回答
0
投票

您的应用程序/配置/电子邮件。

class EmailConfig { public $gmail = array( 'port' => '465', 'timeout' => '300', 'host' => 'ssl://smtp.gmail.com', 'username' => '<your_email>@gmail.com', 'password' => '<you_password>', 'transport' => 'Smtp' ); }

您的文件= app / controller / appController.php插入此功能

public function sendEmail($type, $options){
    try {
        $Email = new CakeEmail($type);
        $Email->config($options);
        $Email->template = "email_confirmation";
        $Email->emailFormat('html');
        //$this->idCrudRash = $options;
        $Email->send();
    } catch (SocketException $e) {
        die('Erro ao enviar email:'. $e->getMessage());
        $this->log(sprintf('Erro ao enviar email: %s', $e->getMessage()));

    }
}

对于用户:app / controller / contato.php

$options = array( 'emailFormat' => 'html', 'from' => array( $config['email_noanswer'] => $config['site_name'] ), 'subject' => 'Confirmação de Cadastro', 'to' => $this->request->data['User']['email'], //'template' => 'default', 'template' => 'email_confirmation', 'viewVars' => array( 'title_for_layout' => 'Confirmação de Email ' . $config['site_name'], 'name' => $this->request->data['User']['name'], 'email' => $this->request->data['User']['email'], //'cpf' => base64_encode($this->request->data['User']['cpf']), 'site_name' => $config['site_name'], ), ); $this->sendEmail('gmail', $options);


0
投票

在您的email.php文件中,请删除默认的'from'值,它将覆盖您传递的参数。

public $default = array(
    'transport' => 'Mail',
    'from' => 'you@localhost', // remove this line
    ...
);

0
投票
In app/config/Email 

public $smtp = array(
        'transport' => 'Smtp',
        'from' => array('[email protected]' => '[email protected]'),
        'host' => 'ssl://smtp.abc.com',
        'port' => 465,
        'timeout' => 30,
        'username' => 'username',
        'password' => 'password',
        'client' => null,
        'log' => false,
    );

In Your Controller

App::uses('AppController', 'Controller');
App::uses('CakeEmail', 'Network/Email');

public function index()
    {
        $this->layout = 'layout';
        $this->set('title', "Title");
        if ($this->request->is('Post')) {
            if (!empty($this->request->data)) {
                if ($this->Modal->Save($this->request->data)) {
                    $to = '[email protected]';
                    $subject = 'Your_subject';
                    $message = $this->request->data;
                    if ($this->sendmail($to, $subject, $message)) {

                        echo"sent";die;
                    }
                } else {
                    echo"wrong";die;
                }
            }
        }
    }
    public function sendmail($to = null, $subject = '', $messages = null, $ccParam = null, $from = null, $reply = null, $path = null, $file_name = null)
    {
        $this->layout = false;
        $this->render(false);
        $name = $messages['Modalname']['name'];
        $email = $messages['Modalname']['email'];
        $Email = new CakeEmail();
        $Email->config('smtp');
        $Email->viewVars(array('name' => $name, 'email' => $email));
        $Email->template('comman_email_template', 'comman_email_template');
        return $Email->emailFormat('html')
            ->from(array('[email protected]' => '[email protected]'))
            ->to($to)
            ->subject($subject)
            ->send();
    }

创建电子邮件模板的布局和视图。并添加已发送的数据值。

© www.soinside.com 2019 - 2024. All rights reserved.