Inhaltsverzeichnis
设置方法
图片演示
表单
PHP发邮件-BY TANKING
提交表单
发送邮件处理
尝试发邮件试试!
成功!不会进入垃圾箱!
Heim Backend-Entwicklung PHP-Tutorial PHP implementiert lediglich das Versenden von E-Mails und verhindert, dass diese als Spam behandelt werden

PHP implementiert lediglich das Versenden von E-Mails und verhindert, dass diese als Spam behandelt werden

Jul 09, 2018 am 10:17 AM
email php phpmailer 邮件系统 邮箱

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

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

设置方法

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

图片演示

PHP implementiert lediglich das Versenden von E-Mails und verhindert, dass diese als Spam behandelt werden

PHP implementiert lediglich das Versenden von E-Mails und verhindert, dass diese als Spam behandelt werden

设置好要记住!

下面就是代码了

表单

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 id="PHP发邮件-BY-nbsp-TANKING">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>
Nach dem Login kopieren

提交表单

PHP implementiert lediglich das Versenden von E-Mails und verhindert, dass diese als Spam behandelt werden

发送邮件处理

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 "发送成功!";
?>
Nach dem Login kopieren

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("(^|(\r\n))(\.)", "\1.\3", $body);
        $header.= "MIME-Version:1.0\r\n";
        if ($mailtype == "HTML") {
            $header.= "Content-Type:text/html\r\n";
        }
        $header.= "To: " . $to . "\r\n";
        if ($cc != "") {
            $header.= "Cc: " . $cc . "\r\n";
        }
        $header.= "From: $from<" . $from . ">\r\n";
        $header.= "Subject: " . $subject . "\r\n";
        $header.= $additional_headers;
        $header.= "Date: " . date("r") . "\r\n";
        $header.= "X-Mailer:By Redhat (PHP/" . phpversion() . ")\r\n";
        list($msec, $sec) = explode(" ", microtime());
        $header.= "Message-ID: <" . date("YmdHis", $sec) . "." . ($msec * 1000000) . "." . $mail_from . ">\r\n";
        $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 host\n");
        }
        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 . "\r\n" . $body);
        $this->smtp_debug("> " . str_replace("\r\n", "\n" . "> ", $header . "\n> " . $body . "\n> "));
        return true;
    }
    function smtp_eom() {
        fputs($this->sock, "\r\n.\r\n");
        $this->smtp_debug(". [EOM]\n");
        return $this->smtp_ok();
    }
    function smtp_ok() {
        $response = str_replace("\r\n", "", fgets($this->sock, 512));
        $this->smtp_debug($response . "\n");
        if (!ereg("^[23]", $response)) {
            fputs($this->sock, "QUIT\r\n");
            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 . "\r\n");
        $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("([ \t\r\n])+", "", $address);
        $address = ereg_replace("^.*<(.+)>.*$", "\1", $address);
        return $address;
    }
    function smtp_debug($message) {
        if ($this->debug) {
            echo $message . "
 
                        ;";
        }
    }
}
?>
Nach dem Login kopieren

尝试发邮件试试!

PHP implementiert lediglich das Versenden von E-Mails und verhindert, dass diese als Spam behandelt werden

PHP implementiert lediglich das Versenden von E-Mails und verhindert, dass diese als Spam behandelt werden

成功!不会进入垃圾箱!

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

相关推荐:

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

Das obige ist der detaillierte Inhalt vonPHP implementiert lediglich das Versenden von E-Mails und verhindert, dass diese als Spam behandelt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP und Python: Verschiedene Paradigmen erklärt PHP und Python: Verschiedene Paradigmen erklärt Apr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

Wählen Sie zwischen PHP und Python: Ein Leitfaden Wählen Sie zwischen PHP und Python: Ein Leitfaden Apr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP und Python: Ein tiefes Eintauchen in ihre Geschichte PHP und Python: Ein tiefes Eintauchen in ihre Geschichte Apr 18, 2025 am 12:25 AM

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

So vereinfachen Sie das E -Mail -Marketing mit Composer: Anwendungspraktiken von Duwa.io. So vereinfachen Sie das E -Mail -Marketing mit Composer: Anwendungspraktiken von Duwa.io. Apr 18, 2025 am 11:27 AM

Ich habe ein schwieriges Problem bei einer Mail -Marketing -Kampagne: So erstellen und senden Sie E -Mails im HTML -Format effizient. Der traditionelle Ansatz besteht darin, Code manuell zu schreiben und E-Mails mit einem SMTP-Server zu senden. Dies ist jedoch nicht nur zeitaufwändig, sondern auch fehleranfällige. Nachdem ich mehrere Lösungen ausprobiert hatte, entdeckte ich Duwa.io, eine einfache und benutzerfreundliche Wiederherstellung, die mir hilft, HTML-Mail schnell zu erstellen und zu senden. Um den Entwicklungsprozess weiter zu vereinfachen, habe ich beschlossen, Composer für die Installation und Verwaltung von Duwa.ios PHP -Bibliothek - Captaindoe/Duwa zu verwalten.

Die fortgesetzte Verwendung von PHP: Gründe für seine Ausdauer Die fortgesetzte Verwendung von PHP: Gründe für seine Ausdauer Apr 19, 2025 am 12:23 AM

Was noch beliebt ist, ist die Benutzerfreundlichkeit, die Flexibilität und ein starkes Ökosystem. 1) Benutzerfreundliche und einfache Syntax machen es zur ersten Wahl für Anfänger. 2) eng integriert in die Webentwicklung, eine hervorragende Interaktion mit HTTP -Anforderungen und Datenbank. 3) Das riesige Ökosystem bietet eine Fülle von Werkzeugen und Bibliotheken. 4) Active Community und Open Source Nature passen sie an neue Bedürfnisse und Technologietrends an.

Bitget Neues Benutzerregistrierungshandbuch 2025 Bitget Neues Benutzerregistrierungshandbuch 2025 Apr 21, 2025 pm 10:09 PM

Die Schritte zur Registrierung für Bitget im Jahr 2025 sind: 1. Erstellen Sie eine gültige E -Mail- oder Mobiltelefonnummer und ein stabiles Netzwerk; 2. Besuchen Sie die offizielle Website des Bitgets. 3. Geben Sie die Registrierungsseite ein; 4. Wählen Sie die Registrierungsmethode aus; 5. Füllen Sie die Registrierungsinformationen ein; 6. der Benutzervereinbarung zustimmen; 7. Vollständige Überprüfung; 8. den Verifizierungscode einholen und ausfüllen; 9. Vollständige Registrierung. Nach der Registrierung wird empfohlen, sich beim Konto anzumelden, die KYC -Identitätsprüfung durchzuführen und Sicherheitsmaßnahmen einzurichten, um die Sicherheit des Kontos sicherzustellen.

Verwenden von Laravel: Staffelung der Webentwicklung mit PHP Verwenden von Laravel: Staffelung der Webentwicklung mit PHP Apr 19, 2025 am 12:18 AM

Laravel optimiert den Webentwicklungsprozess, einschließlich: 1. Verwenden Sie das Routing -System, um die URL -Struktur zu verwalten; 2. Verwenden Sie die Blade Template Engine, um die Ansichtsentwicklung zu vereinfachen. 3.. Tätigen Sie zeitaufwändige Aufgaben durch Warteschlangen; V. 5. Befolgen Sie die Best Practices, um die Codequalität und -wartbarkeit zu verbessern.

Wie kann man den Zugang zu bestimmten Schnittstellen verschachtelter H5 -Seiten durch den Umfangsmechanismus von OAuth2.0 einschränken? Wie kann man den Zugang zu bestimmten Schnittstellen verschachtelter H5 -Seiten durch den Umfangsmechanismus von OAuth2.0 einschränken? Apr 19, 2025 pm 02:30 PM

Wie Verwenden Sie den Occess_Token von OAuth2.0, um die Steuerung der Schnittstellenzugriffsberechtigungen zu erhalten? Wie können Sie bei der Anwendung von OAuth2.0 sicherstellen, dass die ...

See all articles