我正试图在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/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)
如何解决这个问题?
答案 0 :(得分: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');
}
答案 1 :(得分:0)
您是否有机会查看以下链接?主要问题似乎是导入SendGrid库的方式。
答案 2 :(得分:-1)
不应以这种方式使用SendGrid,您必须配置一个类或下载现有的扩展模块并将其设置为邮件程序组件,然后才能轻松发送电子邮件。
不要重新发明轮子:)