当我在Yii php中使用我的助手时,发送电子邮件不起作用

时间:2014-09-29 18:37:14

标签: php yii

我正在使用Yii框架,而我的问题可能是针对PHP专家的。 我已经创建了一个控制器来从我的Web应用程序发送电子邮件,它工作正常。

考虑到这一点,我打算在我的应用程序中的几个声控器中使用电子邮件,我想创建一个帮助程序,但这不起作用。电子邮件未发送。 (我正在使用swiftmailer)

工作控制器的代码如下:

<?php

class MailController extends Controller
{
    /**
     * Declares class-based actions.
     */
    public function actionSendemail() {

    // Plain text content
    $plainTextContent = "This is my first line ;-)\nThis is my second row of text";

    // Get mailer
    $SM = Yii::app()->swiftMailer;

    // New transport      mailHost= localhost,    mailPort = 25
    $Transport = $SM->smtpTransport(Yii::app()->params['mailHost'], Yii::app()->params['mailPort']);

    // Mailer
    $Mailer = $SM->mailer($Transport);

    // New message
    $Message = $SM
        ->newMessage('My subject')
        ->setFrom(array('test1@localhost.localdomain' => 'Example Name'))
        ->setTo(array('myemail@domain.com' => 'Recipient Name'))
     //   ->addPart($content, 'text/html')
        ->setBody($plainTextContent);

    // Send mail
    $result = $Mailer->send($Message);

}
}

帮助程序代码如下

<?php
// protected/components/Email.php

class Email {
    public static function sendEmail($subject, $from, $to, $body)
    {
        // Get mailer
        $SM = Yii::app()->swiftMailer;
        // New transport
        $Transport = $SM->smtpTransport(Yii::app()->params['mailHost'], Yii::app()->params['mailPort']);
        // Mailer
        $Mailer = $SM->mailer($Transport);
        // New message
        $Message = $SM
            ->newMessage($subject)
            ->setFrom(array($from => 'Example Name'))
            ->setTo(array($to => 'Recipient Name'))
         //   ->addPart($content, 'text/html')
            ->setBody($body);

        // Send mail
        $result = $Mailer->send($Message);
    }
}

我称之为以下

的方式
$subject= 'My subject';
$from = Yii::app()->params['adminEmail'];   // adminEmai is a globalparam like above controller
$to='xxxx@xxx.com';
$body='my body';
Email::sendEmail($subject, $from, $to, $body);

当我运行此代码时,我没有错误,但我没有收到该电子邮件。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我发现了我的错误。

我在config.php中的全局参数设置不正确。

因此我的hmail服务器无法识别我放入from字段的内容,目前配置内容为test1@localhost.localdomain

抱歉,感谢