YII -使用sendGrid发送邮件

y4ekin9u  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(192)

我正在尝试在yii php框架中使用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/受保护的/lib/发送网格-php/发送网格/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)

如何解决这一问题?

q9rjltbz

q9rjltbz1#

明白了:

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');
    }
xoshrz7s

xoshrz7s3#

你不应该以那种方式使用SendGrid,你必须配置一个类或下载一个现有的扩展,并设置为一个邮件组件,然后你就可以轻松地发送电子邮件。
不要重复发明轮子:)

相关问题