PHP简单实现发送邮件和防被当成垃圾邮件处理

PHP简单实现发送邮件和防被当成垃圾邮件处理

内容导读

收集整理的这篇技术教程文章主要介绍了PHP简单实现发送邮件和防被当成垃圾邮件处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含9144字,纯文字阅读大概需要14分钟

内容图文

这篇文章主要介绍了关于PHP简单实现发送邮件和防被当成垃圾邮件处理,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

邮件服务器使用的是163邮箱的
需要去163邮箱申请邮箱和设置客户端授权密码。

设置方法

登录163邮箱->设置->POP3/SMTP/IMAP->客户端授权密码

图片演示

设置好要记住!

下面就是代码了

表单

index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>

<title>PHP发邮件 - BY TANKING</title>



<style type="text/css">

*{margin:0px;padding: 0px;}





h3{









text-align: center;









margin-top: 50px;





}







 #form-p{











width: 300px;











margin:20px auto;







}







 #form-p .input_style{











width: 100%;











height: 35px;











font-size: 16px;











text-indent: 5px;











margin-bottom: 5px;







}







 #form-p .textarea_style{











width: 100%;











height: 65px;











font-size: 16px;











text-indent: 5px;











resize: none;







}







 #form-p .sendbtn{











width: 100%;











height: 35px;











font-size: 16px;











cursor: pointer;











margin-top: 5px;







}







 #result .yes{











position: fixed;











top: 0px;











background: #5cb85c;











width: 100%;











height: 35px;











line-height: 35px;











text-align: center;











color: #fff;











font-weight: bold;







}







 #result .no{











position: fixed;











top: 0px;











background: #c00;











width: 100%;











height: 35px;











line-height: 35px;











text-align: center;











color: #fff;











font-weight: bold;







}

 </style></head><body><h3>PHP发邮件-BY TANKING</h3><p id="form-p">

<form action="mail.php" method="POST">


 <input name="email" type="text" placeholder="接收邮箱" class="input_style"/><br/>


 <input name="title" type="text" placeholder="标题" class="input_style"/><br/>


 <input name="content" type="text" placeholder="内容" class="input_style"/><br/>


 <input type="submit" value="发送" class="sendbtn"/>

</form></p></body></html>

提交表单

发送邮件处理

mail.php

<?php//获取表单提交的邮件标题$title = $_POST["title"];//获取表单提交的内容$content = $_POST["content"];include_once("smtp.class.php");

$smtpserver = "smtp.163.com"; //SMTP服务器

$smtpserverport = 25; //SMTP服务器端口

//获取表单提交的邮件接收人邮箱号码

$email = $_POST["email"];

$smtpusermail = "你的163邮箱地址"; //SMTP服务器的用户邮箱

$smtpuser = "你的163邮箱地址"; //SMTP服务器的用户帐号

$smtppass = "授权密码"; //SMTP服务器的授权密码

$smtp = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass); //这里面的一个true是表示使用身份验证,否则不使用身份验证.

$emailtype = "HTML"; //信件类型,文本:text;网页:HTML

$smtpemailto = $email;

$smtpemailfrom = $smtpusermail;

$emailsubject = $title;

$emailbody = "<p>".$content."</p>";

 //开始发送邮件

$smtp->sendmail($smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype);

echo "发送成功!";?>

mail.php

里面只需设置你的163账号和授权密码即可

还有一个文件
smtp.class.php
这个不要动就行,拷贝到同一目录。

<?php //TANKING//2018-7-7 error_reporting(0);class Smtp {

/* Public Variables */

var $smtp_port;

var $time_out;

var $host_name;

var $log_file;

var $relay_host;

var $debug;

var $auth;

var $user;

var $pass;

/* Private Variables */

var $sock;

/* Constractor */

function smtp($relay_host = "", $smtp_port = 25, $auth = false, $user, $pass) {



$this->debug = false;



$this->smtp_port = $smtp_port;



$this->relay_host = $relay_host;



$this->time_out = 30; //is used in fsockopen()



$this->auth = $auth; //auth



$this->user = $user;



$this->pass = $pass;



$this->host_name = "localhost"; //is used in HELO command



$this->log_file = "";



$this->sock = false;

}

/* Main Function */

function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "") {



$mail_from = $this->get_address($this->strip_comment($from));



$body = ereg_replace("(^|(rn))(.)", "1.3", $body);



$header.= "MIME-Version:1.0rn";



if ($mailtype == "HTML") {





$header.= "Content-Type:text/htmlrn";



}



$header.= "To: " . $to . "rn";



if ($cc != "") {





$header.= "Cc: " . $cc . "rn";



}



$header.= "From: $from<" . $from . ">rn";



$header.= "Subject: " . $subject . "rn";



$header.= $additional_headers;



$header.= "Date: " . date("r") . "rn";



$header.= "X-Mailer:By Redhat (PHP/" . phpversion() . ")rn";



list($msec, $sec) = explode(" ", microtime());



$header.= "Message-ID: <" . date("YmdHis", $sec) . "." . ($msec * 1000000) . "." . $mail_from . ">rn";



$TO = explode(",", $this->strip_comment($to));



if ($cc != "") {





$TO = array_merge($TO, explode(",", $this->strip_comment($cc)));



}



if ($bcc != "") {





$TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));



}



$sent = true;



foreach ($TO as $rcpt_to) {





$rcpt_to = $this->get_address($rcpt_to);





if (!$this->smtp_sockopen($rcpt_to)) {







$this->log_write("Error: Cannot send email to " . $rcpt_to . "n");







$sent = false;







continue;





}





if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {







$this->log_write("E-mail has been sent to <" . $rcpt_to . ">n");





} else {







$this->log_write("Error: Cannot send email to <" . $rcpt_to . ">n");







$sent = false;





}





fclose($this->sock);





$this->log_write("Disconnected from remote hostn");



}



return $sent;

}

/* Private Functions */

function smtp_send($helo, $from, $to, $header, $body = "") {



if (!$this->smtp_putcmd("HELO", $helo)) {





return $this->smtp_error("sending HELO command");



}



// auth



if ($this->auth) {





if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) {







return $this->smtp_error("sending HELO command");





}





if (!$this->smtp_putcmd("", base64_encode($this->pass))) {







return $this->smtp_error("sending HELO command");





}



}



if (!$this->smtp_putcmd("MAIL", "FROM:<" . $from . ">")) {





return $this->smtp_error("sending MAIL FROM command");



}



if (!$this->smtp_putcmd("RCPT", "TO:<" . $to . ">")) {





return $this->smtp_error("sending RCPT TO command");



}



if (!$this->smtp_putcmd("DATA")) {





return $this->smtp_error("sending DATA command");



}



if (!$this->smtp_message($header, $body)) {





return $this->smtp_error("sending message");



}



if (!$this->smtp_eom()) {





return $this->smtp_error("sending <CR><LF>.<CR><LF> [EOM]");



}



if (!$this->smtp_putcmd("QUIT")) {





return $this->smtp_error("sending QUIT command");



}



return true;

}

function smtp_sockopen($address) {



if ($this->relay_host == "") {





return $this->smtp_sockopen_mx($address);



} else {





return $this->smtp_sockopen_relay();



}

}

function smtp_sockopen_relay() {



$this->log_write("Trying to " . $this->relay_host . ":" . $this->smtp_port . "n");



$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);



if (!($this->sock && $this->smtp_ok())) {





$this->log_write("Error: Cannot connenct to relay host " . $this->relay_host . "n");





$this->log_write("Error: " . $errstr . " (" . $errno . ")n");





return false;



}



$this->log_write("Connected to relay host " . $this->relay_host . "n");



return true;;

}

function smtp_sockopen_mx($address) {



$domain = ereg_replace("^.+@([^@]+)$", "1", $address);



if (!@getmxrr($domain, $MXHOSTS)) {





$this->log_write("Error: Cannot resolve MX "" . $domain . ""n");





return false;



}



foreach ($MXHOSTS as $host) {





$this->log_write("Trying to " . $host . ":" . $this->smtp_port . "n");





$this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);





if (!($this->sock && $this->smtp_ok())) {







$this->log_write("Warning: Cannot connect to mx host " . $host . "n");







$this->log_write("Error: " . $errstr . " (" . $errno . ")n");







continue;





}





$this->log_write("Connected to mx host " . $host . "n");





return true;



}



$this->log_write("Error: Cannot connect to any mx hosts (" . implode(", ", $MXHOSTS) . ")n");



return false;

}

function smtp_message($header, $body) {



fputs($this->sock, $header . "rn" . $body);



$this->smtp_debug("> " . str_replace("rn", "n" . "> ", $header . "n> " . $body . "n> "));



return true;

}

function smtp_eom() {



fputs($this->sock, "rn.rn");



$this->smtp_debug(". [EOM]n");



return $this->smtp_ok();

}

function smtp_ok() {



$response = str_replace("rn", "", fgets($this->sock, 512));



$this->smtp_debug($response . "n");



if (!ereg("^[23]", $response)) {





fputs($this->sock, "QUITrn");





fgets($this->sock, 512);





$this->log_write("Error: Remote host returned "" . $response . ""n");





return false;



}



return true;

}

function smtp_putcmd($cmd, $arg = "") {



if ($arg != "") {





if ($cmd == "") $cmd = $arg;





else $cmd = $cmd . " " . $arg;



}



fputs($this->sock, $cmd . "rn");



$this->smtp_debug("> " . $cmd . "n");



return $this->smtp_ok();

}

function smtp_error($string) {



$this->log_write("Error: Error occurred while " . $string . ".n");



return false;

}

function log_write($message) {



$this->smtp_debug($message);



if ($this->log_file == "") {





return true;



}



$message = date("M d H:i:s ") . get_current_user() . "[" . getmypid() . "]: " . $message;



if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) {





$this->smtp_debug("Warning: Cannot open log file "" . $this->log_file . ""n");





return false;;



}



flock($fp, LOCK_EX);



fputs($fp, $message);



fclose($fp);



return true;

}

function strip_comment($address) {



$comment = "([^()]*)";



while (ereg($comment, $address)) {





$address = ereg_replace($comment, "", $address);



}



return $address;

}

function get_address($address) {



$address = ereg_replace("([ trn])+", "", $address);



$address = ereg_replace("^.*<(.+)>.*$", "1", $address);



return $address;

}

function smtp_debug($message) {



if ($this->debug) {





echo $message . "











 ;";



}

}}?>

尝试发邮件试试!

成功!不会进入垃圾箱!

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

PHP获取客户端真实IP地址的方法

以上就是PHP简单实现发送邮件和防被当成垃圾邮件处理的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP简单实现发送邮件和防被当成垃圾邮件处理全部内容,希望文章能够帮你解决PHP简单实现发送邮件和防被当成垃圾邮件处理所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com