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
PHP Mailer Fatal error: Class 'SMTP' not found
提问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;">>></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&channel=cs&q=aberdeen+uk&ie=UTF8&hq=&hnear=Aberdeen,+Aberdeen+City,+United+Kingdom&t=m&z=12&iwloc=A&ll=57.149717,-2.094278&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' /> <br /> <br />
Company<br />
<input class='input' name='company' type='text' value='' maxlength='40' /> <br /> <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 & Beverage">Food & Beverage</option>
<option value="Fire & Rescue Service">Fire & 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 & Leisure">Hospitality & 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> <br /> <br />
Phone*<br />
<input class='input' name='phone' type='text' value='' maxlength='40' /> <br /> <br />
Email*<br />
<input class='input' name='email' type='text' value='' maxlength='40' /> <br /> <br />
Comment<br />
<textarea class='input' name='comment' rows='5' cols='1'></textarea> <br /> <br />
<input name='callme' type='checkbox' value='' /> I would like to have someone call me. <br /> <br />
<input name='submit' type='submit' value='submit' /> <br /> <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 phpmailer
environment in joomla & used the following:
我需要一个快速脚本来手动测试phpmailer
joomla 中的环境并使用以下内容:
<?php
include '/path/to/class.phpmailer.php';
include '/path/to/vendor/autoload.php';
the autoload.php
is from Composer& handles the php
dependencies.
的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";