4

yiiphpフレームワークでSendGridを使用してメールを送信しようとしています。

メールを送信するためのアクションコードは次のとおりです。

public function actionSendmail()
{
    Yii::setPathOfAlias('Libs', Yii::app()->basePath.'/lib');
    Yii::setPathOfAlias('SendGrid', Yii::app()->basePath.'/lib/sendgrid-php/SendGrid');
    Yii::import('SendGrid.*');
    Yii::import('Libs.sendgrid-php.SendGrid', true);
    $sendgrid = new SendGrid('uname', 'pwd');
    $mail = new SendGrid\Mail();
    $mail->addTo('to-email')->
        setFrom('from-email')->
        setSubject('Subject goes here')->
        setText('Hello World!')->
        setHtml('<strong>Hello World!</strong>');
    $sendgrid->smtp->send($mail);
    $this->render('mail');
}

これはエラーを示しています:

未定義の定数ROOT_DIRの使用-想定される「ROOT_DIR」

/var/www/apsiap/protected/lib/sendgrid-php/SendGrid/Smtp.php(18)

06 {
07   //the available ports
08   const TLS = 587;
09   const TLS_ALTERNATIVE = 25;
10   const SSL = 465;
11 
12   //the list of port instances, to be recycled
13   private $swift_instances = array();
14   protected $port;
15 
16   public function __construct($username, $password)
17   {
18     require_once ROOT_DIR . 'lib/swift/swift_required.php';
19     call_user_func_array("parent::__construct", func_get_args());
20 
21     //set the default port
22     $this->port = Smtp::TLS;
23   }
24 
25   /* setPort
26    * set the SMTP outgoing port number
27    * @param Int $port - the port number to use
28    * @return the SMTP object
29    */
30   public function setPort($port)

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

3

とった:

    public function actionSendmail()
    {
        define('ROOT_DIR', Yii::app()->basePath . '/lib/sendgrid-php/');
        define('SWIFT_REQUIRED_LOADED', true);
        Yii::import('application.lib.sendgrid-php.SendGrid');
        Yii::import('application.lib.sendgrid-php.lib.swift.classes.Swift', true);
        Yii::registerAutoloader(array('Swift', 'autoload'));
        Yii::import('application.lib.sendgrid-php.lib.swift.swift_init', true);
        Yii::setPathOfAlias('SendGrid', Yii::app()->basePath . '/lib/sendgrid-php/SendGrid/');

        $sendgrid = new SendGrid('uname', 'pwd');
        $mail = new SendGrid\Mail();
        $mail->addTo('to-email')->
            setFrom('from-email')->
                    setSubject('Subject goes here')->
            setText('Hello World!')->
            setHtml('<strong>Hello World!</strong>');
        $sendgrid->smtp->send($mail);
        $this->render('mail');
    }
于 2012-11-03T08:22:24.927 に答える
0

次のリンクを見る機会がありましたか?主な問題は、SendGridライブラリをインポートする方法にあるようです。

于 2012-11-03T06:32:44.577 に答える
-1

SendGridをそのように使用しないでください。クラスを構成するか、既存の拡張機能をダウンロードしてメーラーコンポーネントとして設定する必要があります。そうすれば、簡単にメールを送信できます。

車輪の再発明をしないでください:)

于 2020-02-24T12:33:47.137 に答える