php发送邮件
本站整理编写了一个用纯php语言发送邮件的函数,不需要安装扩展或邮件服务器,通过smtp协议(端口25)发送。适合网页调用发送简单的邮件(不能发送附件)。可适应不同的网页编码,解决了邮件标题和内容的乱码问题。体积小巧。在PHP7.3下测试通过.
使用方法:
1、Php邮件发送函数sendmail(收件地址,标题,内容)
说明:
收件地址可以是多个邮箱,用分号(;)隔开。
使用前先设置你的发信服务器、邮箱、密码、编码。
在需要发信的文件中require这个文件,调用sendmail函数即可。
返回值:成功发送的邮件数。
调试:把文件内echo前面的注释去掉即可。
function sendmail($to, $subject, $body) { $smtp_host = "smtp.qq.com"; //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; }
版权声明:本文由“憨小猪”发布,如需转载请注明出处。