我正在使用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);
当我运行此代码时,我没有错误,但我没有收到该电子邮件。
感谢您的帮助。
答案 0 :(得分:0)
我发现了我的错误。
我在config.php中的全局参数设置不正确。
因此我的hmail服务器无法识别我放入from字段的内容,目前配置内容为test1@localhost.localdomain
抱歉,感谢