PHP自带的mail函数比较蛋疼,在win下配置了sendmail还是无法发送邮件。而使用第三方的pear/mail可以直接通过smtp连接邮件发送服务器。如(smtp.163.com)。从而没有必要在本机上安装sendmail等类似软件。
确保PEAR Mail包已经安装。
<?php require_once \"vendor/autoload.php\"; $from = \"test<test@163.com>\"; $to = \"test <test@outlook.com>\"; $subject = \"Hi!\"; $body = \"Hi,\\n\\nHow are you?\"; $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>Message successfully sent!</p>\"); } ?>
这是非加密方式。
PHPer 多数使用 mail 函数来发送邮件,但我们可以使用其他的 SMTP 服务器来发送,这里推荐使用 PEAR\'s mail package 来发送邮件。
$subject = \"This mail is sent from SMTP.\"; $mail_body = \"This is the body of the mail which is sent using SMTP.\"; $from = \"From: From Name <fromaddress@xpertdeveloper.com>\"; $to = \"To: To Name <toaddress@xpertdeveloper.com>\"; $receiver = \"toaddress@xpertdeveloper.com\"; // Setting up the headers $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\"; // Setting up the SMTP setting $smtp_info[\"host\"] = \"smtp.server.com\"; $smtp_info[\"port\"] = \"25\"; $smtp_info[\"auth\"] = true; $smtp_info[\"username\"] = \"smtp_user\"; $smtp_info[\"password\"] = \"smtp_password\"; // Creating the PEAR mail object : $mail_obj =& Mail::factory(\"smtp\", $smtp_info); // Sending the mail now $mail_sent = $mail_obj->send($receiver, $headers, $mail_body); // If any error the see for that here: 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 = \"test it\";//邮件内容 /* 建立一个类 */ if (! ($smtp = new Net_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 ($rcpt as $to) { if (PEAR::isError($res = $smtp->rcptTo($to))) { die(\"邮件无法投递到 <$to>: \" . $res->getMessage() . \"\\n\"); } } /* 开始发送邮件内容 */ if (PEAR::isError($smtp->data($subj . \"\\r\\n\" . $body))) { die(\"Unable to send data\\n\"); } /* 断开连接 */ $smtp->disconnect(); echo \"发送成功!\"; ?>
以上就是本文的全部内容,php利用pear_smtp发送邮件的三个案例,希望对大家学习php程序设计有所帮助。
本文地址:https://www.stayed.cn/item/5841
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我