php使用pear_smtp发送邮件
PHP自带的mail函数比较蛋疼,在win下配置了sendmail还是无法发送邮件。而使用第三方的pear/mail可以直接通过smtp连接邮件发送服务器。如(smtp.163.com)。从而没有必要在本机上安装sendmail等类似软件。
确保PEARMail包已经安装。
<?php require_once"vendor/autoload.php"; $from="test<test@163.com>"; $to="test<test@outlook.com>"; $subject="Hi!"; $body="Hi,\n\nHowareyou?"; $host="smtp.163.com"; $port="25"; $username="test@163.com"; $password="test123"; $headers=array('From'=>$from, 'To'=>$to, 'Subject'=>$subject); $smtp=Mail::factory('smtp', array('host'=>$host, 'port'=>$port, 'auth'=>true, //'debug'=>true, 'username'=>$username, 'password'=>$password)); $mail=$smtp->send($to,$headers,$body); if(PEAR::isError($mail)){ echo("<p>".$mail->getMessage()."</p>"); }else{ echo("<p>Messagesuccessfullysent!</p>"); } ?>
这是非加密方式。
PHPer多数使用mail函数来发送邮件,但我们可以使用其他的SMTP服务器来发送,这里推荐使用PEAR'smailpackage来发送邮件。
$subject="ThismailissentfromSMTP."; $mail_body="ThisisthebodyofthemailwhichissentusingSMTP."; $from="From:FromName<fromaddress@xpertdeveloper.com>"; $to="To:ToName<toaddress@xpertdeveloper.com>"; $receiver="toaddress@xpertdeveloper.com"; //Settinguptheheaders $headers["From"]=$from; $headers["To"]=$to; $headers["Subject"]=$subject; $headers["Reply-To"]="reply@address.com"; $headers["Content-Type"]="text/plain;charset=ISO-2022-JP"; $headers["Return-path"]="returnpath@address.com"; //SettinguptheSMTPsetting $smtp_info["host"]="smtp.server.com"; $smtp_info["port"]="25"; $smtp_info["auth"]=true; $smtp_info["username"]="smtp_user"; $smtp_info["password"]="smtp_password"; //CreatingthePEARmailobject: $mail_obj=&Mail::factory("smtp",$smtp_info); //Sendingthemailnow $mail_sent=$mail_obj->send($receiver,$headers,$mail_body); //Ifanyerrortheseeforthathere: if(PEAR::isError($mail_sent)){print($mail_sent->getMessage());}
第三个案例:
在使用以下源代码前,请配置好pear的路径,下载net_smtp包
在php.ini文件中根据你的操作系统选择不同的设置方法
;UNIX:"/path1:/path2" include_path=".:./php/pear" ; ;Windows:"\path1;\path2" ;include_path=".;c:\php\pear" require'Net/SMTP.php'; $host='126.com';//smtp服务器的ip或域名 $username='arcow';//登陆smtp服务器的用户名 $password='secret';//登陆smtp服务器的密码 $from='arcow@126.com';//谁发的邮件 $rcpt=array('test@test.com','arcow@126.com');//可设多个接收者 $subj="Subject:你是谁\n";//主题 $body="testit";//邮件内容 /*建立一个类*/ if(!($smtp=newNet_SMTP($host))){ die("无法初始化类Net_SMTP!\n"); } /*开始连接SMTP服务器*/ if(PEAR::isError($e=$smtp->connect())){ die($e->getMessage()."\n"); } /*smtp需要身份验证*/ $smtp->auth($username,$password,"PLAIN"); /*设置发送者邮箱*/ if(PEAR::isError($smtp->mailFrom($from))){ die("无法设置发送者邮箱为<$from>\n"); } /*设置接收邮件者*/ foreach($rcptas$to){ if(PEAR::isError($res=$smtp->rcptTo($to))){ die("邮件无法投递到<$to>:".$res->getMessage()."\n"); } } /*开始发送邮件内容*/ if(PEAR::isError($smtp->data($subj."\r\n".$body))){ die("Unabletosenddata\n"); } /*断开连接*/ $smtp->disconnect(); echo"发送成功!"; ?>
以上就是本文的全部内容,php利用pear_smtp发送邮件的三个案例,希望对大家学习php程序设计有所帮助。