ZF2中发送email有2种方式,一是通过系统的邮件程序发送email,二是通过smtp协议使用远程的smtp服务器发送email。
相关的类有:
use Zend\Mail\Message;//email消息类
use Zend\Mail\Transport\Sendmail;//通过系统邮件程序的发送类
use Zend\Mail\Transport\Smtp;//通过smtp协议使用远程smtp服务器的发送类
use Zend\Mail\Transport\SmtpOptions;//设置smtp类的参数类
使用也比较简单,以下以mail.qq.com的smtp服务器为例,不多的代码就能实现发送email的功能:
use Zend\Mail\Message;
use Zend\Mail\Transport\Sendmail;
use Zend\Mail\Transport\Smtp;
use Zend\Mail\Transport\SmtpOptions;
class TestController extends AbstractActionController {
//通过smtp发送邮件
public function sendsmtpmailAction(){
$msg = new Message();
$msg->setFrom("[email protected]", "xxxxx")
->setTo("[email protected]", "yyyyy")
->setSubject("Email Title")
->setBody('This is an email !');
$smtpOpt = new SmtpOptions(array(
'name' => 'smtp.qq.com',
'host' => 'smtp.qq.com',//qq的免费邮箱服务器
'port' => 25,
'connection_class' => 'login',
'connection_config' => array(
'username' => 'xxxxx',//qq账号,或者申请了字符邮箱名的字符邮箱名
'password' => '1234567890',//邮箱登陆密码
),
));
$trans = new Smtp();
$trans->setOptions($smtpOpt);
$trans->send($msg);
return new JsonModel();
}
//通过系统的邮件程序发送邮件
public function sendmailAction(){
$msg = new Message();
$msg->setFrom("[email protected]", "xxxxx")
->setTo("[email protected]", "yyyyy")
->setSubject("Email Title")
->setBody('This is an email !');
$trans = new Sendmail();
$trans->send($msg);
return new JsonModel();
}
}
以上仅仅是发送文本email,如果要发送html格式的email,则需要用到以下2个类:
use Zend\Mime\Message;
use Zend\Mime\Part;
示例如下:
use Zend\Mail\Message;
use Zend\Mail\Transport\Sendmail;
use Zend\Mail\Transport\Smtp;
use Zend\Mail\Transport\SmtpOptions;
use Zend\Mime\Message as MimeMessage;
use Zend\Mime\Part as MimePart;
class TestController extends AbstractActionController {
public function sendsmtphtmlmailAction(){
$msg = new Message();
$msg->setFrom("[email protected]", "xxxxx")
->setTo("[email protected]", "yyyyy")
->setSubject("Email Title");
$html = new MimePart('访问百度网站');
$html->type = "text/html";
$body = new MimeMessage();
$body->setParts(array($html));
$msg->setBody($body);
$smtpOpt = new SmtpOptions(array(
'name' => 'smtp.qq.com',
'host' => 'smtp.qq.com',//qq的免费邮箱服务器
'port' => 25,
'connection_class' => 'login',
'connection_config' => array(
'username' => 'xxxxx',//qq账号,或者申请了字符邮箱名的字符邮箱名
'password' => '1234567890',//邮箱登陆密码
),
));
$trans = new Smtp();
$trans->setOptions($smtpOpt);
$trans->send($msg);
return new JsonModel();
}
}