`

Yii中使用Yii-mail扩展发送邮件

 
阅读更多
本文参考 http://www.yiiframework.com/extension/mail/ 做成


yii-mail下载地址:http://code.google.com/p/yii-mail/downloads/list
下载完成之后,将解压后的文件夹放在:项目文件夹\protected\extensions\下面

-------------------------------------------------------
main.php文件的配置
'import'=>array(
	'application.extensions.yii-mail.*',   
),

'components'=>array(
        'mail'=>array(
            'class' => 'application.extensions.yii-mail.YiiMail',
            'viewPath' => 'application.views.mail',
            'logging' => true,
            'dryRun' => false,
            'transportType'=>'smtp',     // case sensitive!
            'transportOptions'=>array(
                'host'=>'mail.kai.jp',   // smtp服务器
                'username'=>'*******'    // 验证用户
                'password'=>'*******',   // 验证密码
                'port'=>'587',           // 端口号
                //'encryption'=>'ssl', 
                ),
        ),
),



Model: MailForm.php
-------------------------------------------------------
<?php
class MailForm extends CFormModel {

    public $from;
    public $to;
    public $subject;
    public $body;

    public function rules() {
        return array(
            array('from, to, subject, body', 'required'),
            array('from, to, subject, body ','safe'),
        );
    }

    public function attributeLabels() {
        return array(
            'from' => '送信人',
            'to' => '收信人',
            'subject' => '标题',
            'body' => '邮件内容',
        );
    }
}

?>



View: index.php
-------------------------------------------------------
<?php
$this->pageTitle=Yii::app()->name . ' - 送信';
$this->breadcrumbs=array('送信',);
?>

<h1>邮件送信</h1>

<!-- ▼显示提示信息▼ -->
<?php if(Yii::app()->user->hasFlash('success')){ ?>
<div class="flash-success">
	<?php echo Yii::app()->user->getFlash('success'); ?>
</div>
<?php } ?>

<?php if(Yii::app()->user->hasFlash('failed')){ ?>
<div class="flash-error">
	<?php echo Yii::app()->user->getFlash('failed'); ?>
</div>
<?php } ?>
<!-- ▲显示提示信息▲ -->

<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'mail-form',
    'method'=>'post',
    'enableClientValidation'=>true,
    'clientOptions'=>array(),
)); ?>
    
    <?php //echo $form->errorSummary($model); ?>
    
    <!-- 送信元 -->
    <div class="row">
        <?php echo $form->labelEx($model,'from'); ?>
        <?php echo $form->textField($model,'from'); ?>
        <?php echo $form->error($model,'from'); ?>
    </div>
    <!-- 送信先 -->
    <div class="row">
        <?php echo $form->labelEx($model,'to'); ?>
        <?php echo $form->textField($model,'to'); ?>
        <?php echo $form->error($model,'to'); ?>
    </div>
    <!-- 件名 -->
    <div class="row">
        <?php echo $form->labelEx($model,'subject'); ?>
        <?php echo $form->textField($model,'subject'); ?>
        <?php echo $form->error($model,'subject'); ?>
    </div>
    <!-- 内容 -->
    <div class="row">
        <?php echo $form->labelEx($model,'body'); ?>
        <?php echo $form->textArea($model,'body', array('cols'=>'80', 'rows'=>'10',)); ?>
        <?php echo $form->error($model,'body'); ?>
    </div>
        
    <div class="row">
            <?php echo CHtml::Button('送信', 
                    array(
                            'submit'=>array(),
                            'params'=>array('YII_CSRF_TOKEN' => Yii::app()->request->csrfToken),
                        ));
            ?>
    </div>

<?php $this->endWidget(); ?>
</div>


Controller: MailController.php
-------------------------------------------------------

<?php

class MailController extends Controller {

    public function actionIndex() {
        
        $model = new MailForm();
        
        if (isset($_POST["MailForm"])){
            $model->attributes=$_POST['MailForm'];
            
            if($model->validate()) {   
                $message = new YiiMailMessage();
                
                $message->setFrom(array($model->from => '送信人'));
                $message->setTo(array($model->to => '收信人'));
                $message->setSubject($model->subject);
                $message->setBody($model->body);

                $sendmail = Yii::app()->mail->send($message) ;
                
                if ($sendmail) {
                    Yii::app()->user->setFlash("success", "Emails sent: OK \n" );
                    $this->refresh();
                } else {
                    Yii::app()->user->setFlash("failed", "Emails sent: NG \n");
                }
			}
        }
        
        $this->render('index', 
                array(
                    'model' => $model, 
                ));
    }
}






分享到:
评论
2 楼 kantian 2013-05-29  
4654kgdyniv13 写道
请问验证用户和密码写什么用户和密码?

我是在本地做的测试,可以成功发送邮件的
前提是如果没有邮件发送服务器的话,需要在本地搭建一个邮件发送服务器,我是windows平台下选用hmailserver  这个来搭建的,具体搭建过程可以google一下
	// application components
	'components'=>array(
		'user'=>array(
			// enable cookie-based authentication
			'allowAutoLogin'=>true,
		),
		'mail' =>array(
			'class' => 'application.extensions.yii-mail.YiiMail',
			'viewPath' => 'application.views.mail',
			'logging' => true,
			'dryRun' => false,
			'transportType' => 'smtp',
			'transportOptions' => array(
				'host' => 'localhost',
				'username' => 'administrator',
				'password' => '123456',
				'port' => '25',
			),
		),

上面的host username  password  port 跟hmailserver里面设置的
1 楼 4654kgdyniv13 2012-10-26  
请问验证用户和密码写什么用户和密码?

相关推荐

    PHP YII 发送邮件扩展

    PHP YII 发送邮件扩展 使用方法: $mail = new YiiMailer(); //$mail-&gt;clearLayout();//if layout is already set in config $mail-&gt;setFrom('from@example.com', 'John Doe'); $mail-&gt;setTo(Yii::app()-&gt;params['...

    yii2-mailqueue, 用于 yii2 swiftmailer https的yii2的电子邮件队列组件.zip

    yii2-mailqueue, 用于 yii2 swiftmailer https的yii2的电子邮件队列组件 yii2-mailqueue适用于 yii2-swiftmailer的yii2的电子邮件队列组件安装安装这个扩展的首选方法是通过 composer插件。运行...

    yii2-mailgun:Yii2 Mailgun扩展

    Maili Extension for Yii 2 该扩展为提供了邮件解决方案。安装安装此扩展的首选方法是通过 。 composer require boundstate/yii2-mailgun与Guzzle,Buzz或其他发送HTTP消息的库并非硬耦合。 您还必须安装要使用的。 ...

    yii2-notifications:Yii2 模块提供通知管理系统

    yii2-通知该模块提供了一种通过各种交付渠道发送通知的方法,包括邮件、屏幕、SMS(通过 Nexmo)等。通知也可以存储在数据库中,以便它们可以显示在您的 Web 界面中。 通知是通知用户应用程序中发生的事情的短消息。...

    yii2-swiftmailer:Yii 2 swiftmailer扩展

    该扩展为提供了邮件解决方案。 有关许可证信息,请检查文件。 安装 安装此扩展的首选方法是通过 。 无论运行 php composer.phar require --prefer-dist yiisoft/yii2-swiftmailer 或添加 " yiisoft/yii2-...

    PHPMailer扩展使用demo

    通过以上步骤,你就能够成功地在Yii框架中集成并使用PHPMailer扩展发送邮件。这个过程不仅简化了邮件发送的代码,还提供了更好的可维护性和灵活性。在实际项目中,你可能需要根据需求调整邮件内容、添加附件、处理...

    yii2-mailbox:Yii 2.0的简单邮箱

    yii2-邮箱Yii 2.0的简单邮箱安装安装此扩展的首选方法是通过 。 无论运行php composer.phar require --prefer-dist hscstudio/yii2-mailbox "1.0"或添加"hscstudio/yii2-mailbox": "1.0"到composer.json文件的...

    yii2-api-mongo:API项目的Yii2简单模板

    该模板在modules \ v1 \ controllers下包含两个控制器,这些控制器演示了您可以自定义的简单控制器,以及一个基于\ yii \ rest \ ActiveController的控制器,该控制器通过使用web.php config中配置的UrlRule通过API...

    yii2.0.chm版手册

    7. **Mailer**:发送电子邮件的组件,支持 SMTP 和 PHP 的 mail() 函数。 **三、数据库操作** 1. **Active Record**:提供对象化的数据库操作,如 find(), save(), delete() 方法,支持链式操作。 2. **Query ...

    yii2-demo:Yii 2.0 框架扩展的演示

    Yii 2 基础应用模板Yii 2 Basic Application Template 是一个骨架 Yii 2 应用程序,最适合快速创建小项目。 该模板包含基本功能,包括用户登录/注销和联系页面。 它包括所有常用配置,使您可以专注于向应用程序添加...

    PHP部分面试题

    - SMTP (Simple Mail Transfer Protocol) 用于发送电子邮件。 - POP3 (Post Office Protocol Version 3) 和 IMAP (Internet Message Access Protocol) 用于接收电子邮件。 4. **WebSocket**: - WebSocket 协议...

    QQmail.rar_模仿qq邮箱

    5. **邮件协议**:发送和接收邮件涉及SMTP(Simple Mail Transfer Protocol)和POP3/IMAP(Post Office Protocol/Internet Message Access Protocol)。开发者需要理解这些协议的工作原理,并用PHP的`phpmailer`库或...

    基于PHP的188商城系统源码.zip

    12. 邮件服务:用户注册、订单确认等场景可能需要用到邮件发送功能,PHP的mail()函数或者第三方SMTP库如PHPMailer可能会被使用。 通过深入学习和分析这个基于PHP的188商城系统源码,开发者不仅可以提升PHP技能,还...

    PHP网络编程典型模块与实例源码

    10. **邮件发送**:通过`mail()`函数发送电子邮件,或者使用PHPMailer库发送更复杂的邮件,包括附件和HTML内容。 11. **验证码**:生成和验证图像验证码,防止机器人自动操作。 12. **缓存技术**:了解APC、...

    php手册2014

    5. `mail()`发送电子邮件; 6. `date()`和`strtotime()`处理日期和时间。 三、面向对象编程 PHP5引入了完整的面向对象编程(OOP)支持,包括类、对象、继承、封装和多态性。手册详细解释了如何定义类、创建对象、...

    PHP动态Web开发技术_PPT课件.zip

    5. **邮件发送**:使用PHP的mail()函数或第三方库发送电子邮件。 6. **缓存机制**:通过缓存技术如APC、Memcached或Redis提高网站性能。 7. **API开发**:构建RESTful API,使其他应用或服务能与PHP应用进行数据交换...

    PHP5 权威教程 PDF

    8. **邮件发送**:使用mail()函数可以方便地发送邮件,支持添加附件和设置邮件头信息。 9. **模板引擎**:PHP5常常与模板引擎如Smarty结合使用,将业务逻辑与显示逻辑分离,提高代码可维护性。 10. **Web框架**:...

    PHP学习手册(CHM格式电子书)

    2. **邮件发送**:使用PHP的mail函数发送电子邮件,或使用第三方库如PHPMailer。 3. **模板引擎**:了解如何使用Smarty等模板引擎分离业务逻辑和视图。 4. **缓存技术**:使用PHP的APC、Memcached或Redis进行数据...

    php编程一百例-适合初学者的

    14. **邮件发送**:使用PHP的mail函数或第三方库如PHPMailer发送电子邮件。 15. **Cookie使用**:设置和读取Cookie,用于实现简单的用户跟踪或登录状态保存。 每个例子都可能包含上述的一个或多个知识点,通过实践...

Global site tag (gtag.js) - Google Analytics