各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

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

管理员 2023-09-05
PHP
161

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简单实现发送邮件和防被当成垃圾邮件处理所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

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

扫码关注

qrcode

QQ交谈

回顶部