www.adminn.cn
站长正能量分享网!

php发送邮件的源码(简易版)

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

本站整理编写了一个用纯php语言发送邮件的函数,不需要安装扩展,也不需要安装邮件服务器。适合网页调用发送简单的邮件(不能发送附件)。可适应不同的网页编码,解决了邮件标题和内容的乱码问题。体积小巧。在php7.3下测试通过。

使用方法:
1、源码

<?php
/*
php邮件发送函数sendmail(收件地址,标题,内容)说明:
收件地址可以是多个邮箱,用分号(;)隔开。
使用前先设置你的发信服务器、邮箱、密码、编码。
在需要发信的文件中require这个文件,调用sendmail函数即可。
返回值:成功发送的邮件数。
调试:把本文件内echo前面的注释去掉即可。
整理编写:http://bjtime.cn
*/


function sendmail($to, $subject,$body)
{
$smtp_host="你的smtp服务器";
$user="你的发信邮箱";
$pass="你的邮箱密码";
$charset="utf-8"; //可改成你的网页编码

$header= "MIME-Version:1.0\r\n";
$header.= "Content-Type:text/html; charset=".$charset."\r\n";
$header.= "To: ".$to."\r\n";
$header.= "From: ".$user."\r\n";
$header.= "Subject: "."=?".strtoupper($charset)."?B?".base64_encode($subject)."?="."\r\n";
$header.= "Date: ".date("r")."\r\n";
$header.= "X-Mailer:By PHP(".phpversion().")\r\n";
list($msec, $sec) = explode(" ", microtime());
$header.= "Message-ID: ".date("YmdHis", $sec).".".$msec."\r\n";

$sent = 0;
$to_arr = explode(";", $to);
foreach ($to_arr as $rcpt_to)
{
$sock = @fsockopen($smtp_host, 25, $errno, $errstr, 10);
  
if ($sock && smtp_ok($sock)) {
if (smtp_cmd($sock,"HELO localhost"))
if (smtp_cmd($sock,"AUTH LOGIN ".base64_encode($user))) 
if (smtp_cmd($sock,base64_encode($pass)))
if (smtp_cmd($sock,"MAIL FROM: ".$user)) 
if (smtp_cmd($sock,"RCPT TO: ".$to))
if (smtp_cmd($sock,"DATA")) 
if (smtp_data($sock,$header,$body)) 
if (smtp_cmd($sock,"QUIT")) 
$sent++;

fclose($sock);
}
}
return $sent;
}


function smtp_cmd($sock,$cmd)
{
fputs($sock, $cmd."\r\n");
//echo htmlspecialchars($cmd);
return smtp_ok($sock);
}


function smtp_data($sock,$header,$body)
{
fputs($sock,$header."\r\n");    
fputs($sock,$body."\r\n.\r\n");
return smtp_ok($sock);
}


function smtp_ok($sock)
{
$response = fgets($sock, 512);
if (!preg_match("/^[23]/", $response))
{
fputs($sock, "QUIT\r\n");
fgets($sock, 512);
return FALSE;
}
//echo("<br>".$response."<br><br>");
return TRUE;
}


?>

2、php邮件发送函数sendmail(收件地址,标题,内容)说明:
收件地址可以是多个邮箱,用分号(;)隔开。
使用前先设置你的发信服务器、邮箱、密码、编码。
在需要发信的文件中require这个文件,调用sendmail函数即可。
返回值:成功发送的邮件数。
调试:把文件内echo前面的注释去掉即可。

另外,某些云主机(比如阿里云新申请的云主机),禁止向目标25端口发送邮件,这时候发送就会失败。可以尝试在云主机管理后台申请开通25端口。

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php发送邮件的源码(简易版)》
文章链接:https://www.adminn.cn/news/1634.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

本站源码仅供本地环境下学习借鉴研究使用!

源码请勿用于任何涉灰站点!净化网络,站长更有责!

支付宝扫一扫打赏