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程序设计有所帮助。