PHP Mailer 致命错误:找不到“SMTP”类

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19780378/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 20:01:29  来源:igfitidea点击:

PHP Mailer Fatal error: Class 'SMTP' not found

php

提问by foo

Not sure why I am getting this fatal php error because all my files and classes are setup correctly. Any help would be greatly appreciated.

不知道为什么我会收到这个致命的 php 错误,因为我的所有文件和类都设置正确。任何帮助将不胜感激。

contact.php is here:

contact.php 在这里:

  <?
        session_start();
        if (!isset($_SERVER['DOCUMENT_ROOT'])) {
            $_SERVER['DOCUMENT_ROOT'] = substr($_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF']));
        }

        if(strpos($_SERVER["SERVER_SOFTWARE"],"IIS") > 0) {
            define("PATH_SLASH","\");
            define("PATH_SEPARATOR",";");
        }
        else {
            define("PATH_SLASH","/");
            define("PATH_SEPARATOR",":");
        }

        define("CONFIG",$_SERVER['DOCUMENT_ROOT'] .  PATH_SLASH . "config" . PATH_SLASH . "config.xml");
        require "classes/clsconfig.inc.php";
        require "classes/class.phpmailer.php";

    $config = new gxconfig();

    $email = true;

    $callornot = "";
        if (isset($_POST["submit"])) {
            if(isset($_POST['callme'])){
                $callornot = "yes";
            }
            else{
                $callornot = "No";
            }

            $message_participant = "<h2>Comments from the website</h2>
            Name : {$_POST['name']}<br / >
            Company : {$_POST['company']}<br / >
            Industry : {$_POST['industry']}<br / >
            Email : {$_POST['email']}<br / >
            Telephone : {$_POST['phone']}<br / >
            Wants a call : ". $callornot ."<br / >
            Message : {$_POST['comment']}<br / >";
            $svrcourriel = new PHPMailer();
            $svrcourriel->Mailer = "smtp";
            $svrcourriel->Host = $config->smtp;
            $svrcourriel->From = $_POST['email'];
            $svrcourriel->Port = 25;
            $svrcourriel->IsHTML(true);
            $svrcourriel->FromName = $_POST['name'];
            $svrcourriel->Subject = "Comments";
            $svrcourriel->Body = $message_participant;

            $svrcourriel->AddAddress("[email protected]","Website");

            $svrcourriel->Send();

            if($svrcourriel->Send()){
                $message = "Message Sent<br />Thank you!<br />The Administration";
                $email = false;
            }
            else{
                $message = "connection error";
            }


        }

    ?>
    <meta name="gmapkey" content="ABQIAAAA1RcXJTFbfpMdioOkhlE_ZxTJuH3LtUz3ux7bUwdjaRGyO6SO_hQPu8VtGAAEQbfqN_dX85CzKFIVLg" />

    <script type="text/javascript" src="js/gmapez-2.5.js"></script>
    <table width="971" border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td align="right">
            <table width="971" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td width="11"><img src="images/misc/cnr-bcl2.jpg" width="11" height="41" alt="" /></td>
                <td align="left" style="background: url('images/backgrounds/bc.jpg') repeat-x top left;padding: 10px;">
                    <span style="color: #FFFFFF;font-family: arial; font-size: 15px;font-weight: bold;">
                        Home  <span style="color: #c0d3e9;">&gt;&gt;</span>   
                        Contact Us
                    </span> 
                </td>
                <td width="11"><img src="images/misc/cnr-bcr2.jpg" width="11" height="41" alt="" /></td>
            </tr>
            </table>
            <table width="971" border="0" cellspacing="0" cellpadding="0">
            <tr>
                <td width="11"><img src="images/misc/shad-botleft2.jpg" width="11" height="12" alt="" /></td>
                <td width="100%" style="background: url('images/misc/shad-bg2.jpg') repeat-x top left;"></td>
                <td width="11"><img src="images/misc/shad-botright2.jpg" width="11" height="12" alt="" /></td>
            </tr>
            </table>
        </td>
    </tr>
    <tr>
        <td width="971" align="center">

        </div>
            <div style="box-shadow: 7px 7px 7px #888;padding: 13px;width: 931px;background-color: #d8e1e9;color: #373737;font-family: arial;font-size: 12px;text-align: left;" class="with_corners">

                <p style="font-size: 16px;font-weight: bold;">Thank you for your interest in LCRISQ.</p><br />
                <a class="standard" href="mailto:[email protected]">[email protected]</a><br />

                            Tel: 310.406.5684 <br />
                            Fax: 310.988.2913 <br /> <br/>

                Aberdeen, United Kingdom ABIOITY office<br />
                Tel: +44 (0) 1583452246<br /> <br/>

                            Albuquerque, New Mexico 87123 Office <br/>
                            Tel: 1 (505) 301-6554 <br />


                <div id="theModal">
    <div class="GMapEZ" style="width: 570px; height: 470px;">
      <a href="https://maps.google.com/maps?q=abq+nm&hl=en&ll=35.110922,-106.609955&spn=0.452732,0.617294&sll=35.09864,-106.570284&sspn=0.452801,0.617294&hnear=Albuquerque,+Bernalillo,+New+Mexico&t=m&z=11">
      </a>
      <a href="https://maps.google.com/maps?client=ubuntu&amp;channel=cs&amp;q=aberdeen+uk&amp;ie=UTF8&amp;hq=&amp;hnear=Aberdeen,+Aberdeen+City,+United+Kingdom&amp;t=m&amp;z=12&amp;iwloc=A&amp;ll=57.149717,-2.094278&amp;source=embed">
      </a>
    </div>
        </div>



        <div class="colLeftOnly"><h2>E-mail us:</h2></div>
                    <form id='form' action='contact.php' method='post' name="form" onsubmit="javascript: return performCheck('form', rules, 'innerHtml');" >
                        <div id='errorsDiv'></div>
                        Name*<br />
                        <input class='input' name='name' type='text' value='' maxlength='40' />&#160;<br />&#160;<br />
                        Company<br />
                        <input class='input' name='company' type='text' value='' maxlength='40' />&#160;<br />&#160;<br />
                        Industry<br />
                        <select name='industry' size="1">
                            <option value="0">Select:</option>
                            <option value="Advertising">Advertising</option>
                            <option value="Aerospace">Aerospace</option>
                            <option value="Automotive">Automotive</option>
                            <option value="Aviation">Aviation</option>
                            <option value="Banking / Financial">Banking / Financial</option>
                            <option value="Building Materials">Building Materials</option>
                            <option value="Chemicals">Chemicals</option>
                            <option value="Communications">Communications</option>
                            <option value="Computers / Data / Software">Computers / Data / Software</option>
                            <option value="Construction">Construction</option>
                            <option value="Consumer Products">Consumer Products</option>
                            <option value="Defense">Defense</option>
                            <option value="Education">Education</option>
                            <option value="Electronics">Electronics</option>
                            <option value="Energy">Energy</option>
                            <option value="Engineering">Engineering</option>
                            <option value="Entertainment">Entertainment</option>
                            <option value="Finance">Finance</option>
                            <option value="Food &#38; Beverage">Food &#38; Beverage</option>
                            <option value="Fire &#38; Rescue Service">Fire &#38; Rescue Service</option>
                            <option value="Gas">Gas</option>
                            <option value="Government - Federal Civilian">Government - Federal Civilian</option>
                            <option value="Government - Federal Military">Government - Federal Military</option>
                            <option value="Government - State / Provincial">Government - State / Provincial</option>
                            <option value="Government - Local">Government - Local</option>
                            <option value="Healthcare">Healthcare</option>
                            <option value="Higher Education">Higher Education</option>
                            <option value="Hospitality &#38; Leisure">Hospitality &#38; Leisure</option>
                            <option value="Industrial Machinery">Industrial Machinery</option>
                            <option value="Insurance">Insurance</option>
                            <option value="IT">IT</option>
                            <option value="Legal">Legal</option>
                            <option value="Manufacturing">Manufacturing</option>
                            <option value="Media">Media</option>
                            <option value="Non Profit">Non Profit</option>
                            <option value="Oil">Oil</option>
                            <option value="Pharmaceuticals">Pharmaceuticals</option>
                            <option value="Postal Service">Postal Service</option>
                            <option value="Public Sector">Public Sector</option>
                            <option value="Professional Services">Professional Services</option>
                            <option value="Real Estate">Real Estate</option>
                            <option value="Research">Research</option>
                            <option value="Retail / Wholesale">Retail / Wholesale</option>
                            <option value="Services">Services</option>
                            <option value="Shipping">Shipping</option>
                            <option value="Telecommunications">Telecommunications</option>
                            <option value="Transportation">Transportation</option>
                            <option value="Travel">Travel</option>
                            <option value="Utilities">Utilities</option>
                            <option value="Waste">Waste</option>
                            <option value="Oil & Gas">Oil & Gas</option>
                            <option value="Other">Other</option>
                        </select>&#160;<br />&#160;<br />
                        Phone*<br />
                        <input class='input' name='phone' type='text' value='' maxlength='40' />&#160;<br />&#160;<br />
                        Email*<br />
                        <input class='input' name='email' type='text' value='' maxlength='40' />&#160;<br />&#160;<br />
                        Comment<br />
                        <textarea class='input' name='comment' rows='5' cols='1'></textarea>&#160;<br />&#160;<br />
                        <input name='callme' type='checkbox' value='' /> I would like to have someone call me.&#160;<br />&#160;<br />
                        <input name='submit' type='submit' value='submit' />&#160;<br />&#160;<br />
                        *Required information. All submitted information will be considered confidential.
                    </form>
            </div>
            <br />

here is the class.phpmailer is here: http://pastebin.com/KsAwgd1c

这是 class.phpmailer 在这里:http: //pastebin.com/KsAwgd1c

here is the clsconfig.inc.php:

这是 clsconfig.inc.php:

<?php
    class gxconfig {
        public $smtp;
        public $courriel;

        function __construct(){
            $config = new DOMDocument("1.0","utf-8");
            $config->load(CONFIG);
            $xmlPath = new DomXpath($config);

            $result = $xmlPath->query("/configuration/courriel/serveur");
            $this->smtp = $result->item(0)->nodeValue;

            $result = $xmlPath->query("/configuration/courriel/dossier");
            $this->courriel = $_SERVER['DOCUMENT_ROOT'] . str_replace( "/",PATH_SLASH,$result->item(0)->nodeValue);

        }
    }
?>

回答by Abbe

You should not require class.phpmailer.php.

你不应该要求class.phpmailer.php.

Replace: require "classes/class.phpmailer.php";with require "PHPMailerAutoload.php";and it will work just fine.

替换: require "classes/class.phpmailer.php";require "PHPMailerAutoload.php";它会工作得很好。

回答by Mary

You must have a copy of class.smtp.php in the folder.
You don't need to include it in your file with PHP include.
If you don't it will throw "fatal error: class 'smtp' not found in class.phpmailer.php on line 1168".
Make sure you do require these in your file:
require 'PHPMailerAutoload.php';
require 'class.phpmailer.php';

您必须在文件夹中有 class.smtp.php 的副本。
您不需要使用 PHP 包含将它包含在您的文件中。
如果你不这样做,它会抛出“致命错误:在第 1168 行的 class.phpmailer.php 中找不到类‘smtp’”。
确保您的文件中确实需要这些:
require 'PHPMailerAutoload.php';
需要'class.phpmailer.php';

回答by Felix Cruz

<?php 

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

require './vendors/phpmailer/phpmailer/src/PHPMailer.php';
require './vendors/phpmailer/phpmailer/src/Exception.php';
require './vendors/phpmailer/phpmailer/src/SMTP.php';

回答by David Hackro

you have the file class.smtp.phpin your folder?

你的文件夹中有文件class.smtp.php吗?

in my case this is my solucion!!

就我而言,这是我的解决方案!!

copy and paste this filein your folder.

将此文件复制并粘贴到您的文件夹中。

Good Luck

祝你好运

回答by Stuart Cardall

I needed a quick script to manually test a phpmailerenvironment in joomla & used the following:

我需要一个快速脚本来手动测试phpmailerjoomla 中的环境并使用以下内容:

<?php
include '/path/to/class.phpmailer.php';
include '/path/to/vendor/autoload.php';

the autoload.phpis from Composer& handles the phpdependencies.

autoload.php作曲家和手柄的php依赖关系。

I also used settings from the PHPMailer examples.

我还使用了PHPMailer 示例中的设置。

To show SSL Certificate / TLS errors use:

要显示 SSL 证书/TLS 错误,请使用:

$mail->SMTPDebug = 3;

$mail->SMTPDebug = 3;

回答by Dhaval

try this

尝试这个

include "class.smtp.php";