来自 php 表单的问题/错误,用于使用 php-mailer 库通过本地主机 Xampp 发送电子邮件

Posted

技术标签:

【中文标题】来自 php 表单的问题/错误,用于使用 php-mailer 库通过本地主机 Xampp 发送电子邮件【英文标题】:issues/errors with from php form for sending email via local host Xampp using php-mailer library 【发布时间】:2019-07-08 17:20:39 【问题描述】:

我正在尝试填写我网站上的 php 表单,并在提交表单时将表单内容发送到我的电子邮件。我正在使用 Xampp 本地主机。所以在“htdocs”文件夹中,我有我的“网站”文件夹以及我从 GitHub 下载的“phpmailer”文件夹。

当我在本地主机上填写表格时,我收到如下所示的警告和错误消息:

警告:需要(phpmailer/PHPMailerAutoload.php):无法打开流:第 5 行的 /Applications/XAMPP/xamppfiles/htdocs/websiteproject/booking.php 中没有这样的文件或目录

致命错误:require():在 /Applications/XAMPP/xamppfiles/htdocs/websiteproject/ 中打开所需的 'phpmailer/PHPMailerAutoload.php' (include_path='.:/Applications/XAMPP/xamppfiles/lib/php') 失败第 5 行的 booking.php

即使我将 phpmailer 文件夹放在网站文件夹中,它也不起作用。我将不胜感激任何帮助,使这项工作。非常感谢

这是我的代码:

<?php 

$result="";
if (isset($_POST['submit'])) 
	require 'phpmailer/PHPMailerAutoload.php';
	$mail = new PHPMailer;
	
	$mail->Host='smtp.gmail.com';
	$smail->port=587;
	$smail->SMTPAuth=true;
	$mail->SMTPSecure='tls';
	$mail->Username='myemail@gmail.com';
	$mail->Password= 'mypassword';
	
	$mail->setFrom($_POST['email'],$_POST['name']);
	$mail->addAddress('myemail');
	$mail->addReplyTo($_POST['email'],$_POST['name']);
	
	$mail->ishtml(true);
	$mail->Body= '<h1 align=center> Name :' .$_POST['name'].'<br> Email: '.$_POST['email'].'<br> 
	Contact: '.$_POST['contactnumber'].'<br> Date: '.$_POST['date'].'<br> Services: '.$_POST['service'].'<br>
	Stylist: '.$_POST['stylist'].'</h1>';
	
	
	if(!$mail->send())
		echo "Something went wrong, Please try again.";
		echo 'Mailer Error: ' . $mail->ErrorInfo;
	 else 
           echo "Thanks".$_POST['name']." for your booking";
		


?>



<!doctype html>

<html lang="en"><head>
    <!-- Required meta tags -->
	<title>Clypsdra Barber</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css">
	
	<link href="css/style.css" rel="stylesheet" type="text/css"> 
	<!-- awesome-font CSS -->
	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
	<link href="css/font-awesome.css" rel="stylesheet" type="text/css">

  </head>
<body>


	<div class="bookingform">
				<h5 "class=text-center text-success"> <?=$result; ?></h5>
				<form class="testform" action="" method="post" >   
	<h1>Make your booking</h1>
	     <div class="form-group">
	      <label for="name">Your Name</label>
	      <input type="text" class="form-control" name="name" placeholder="full name">
	   </div>
	    <div class="form-group">
	      <label for="email">Email address</label>
	      <input type="email" class="form-control" name="email" placeholder="your e-mail">
	     </div>
	     <div class="form-group">
	      <label for="contactnumber">Contact Number</label>
	      <input type="number" class="form-control" name="contactnumber" placeholder="Mobile number">
	   </div>
	
	  <div class="form-group">
	      <label for="date">Book your date</label>
	      <input type="date" name="date" class="form-control" placeholder="">
	   </div>
	
		<div class="serv">
			<p>Select services:</p>
		<select name="services">
	  <option value="s"> Please Select</option>
	  <option value="hc">Haircut --- £13</option>
	  <option value="cw">Wash &#43; Cut £20 Clipper cut</option>
	  <option value="su">Shape Up --- £7</option>
	  <option value="bt">Beard trim --- £8</option>
      <option value="cb">Cut + Beard ---  £23 </option>
	  <option value="cc">Clipper Cut --- £10</option>
	  <option value="hts">Hot Towel Shave --- £12</option>
		</select>
		</div>
	     
	    
	    <div class="styl">
			<p>Choose Stylist:</p>
		<select name="stylist">
	  <option value="Kocher">Kocher</option>
	  <option value="Dyako">Dyako</option>
	  <option value="Omeed">Omeed</option>
      <option value="Omeed">Burhan</option>
		</select>
		</div>
	
	    <div class="formsubmit">
	      <input type="checkbox" class="form-check-input" id="exampleCheck1">
	      <label class="form-check-label" for="exampleCheck1">Check me out</label>
	    <button type="submit" name="submit" class="btn btn-primary">Submit</button>
			</div>
			</form>
	</div>



    <!-- Optional javascript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
	 
	  <script>
	$(document).ready(function () 

  $('.first-button').on('click', function () 

    $('.animated-icon1').toggleClass('open');
  );
);
	  
	  </script>
	 
	
</body>
</html>

【问题讨论】:

【参考方案1】:

如果您下载了latest PHPMailer from github,它将无法使用旧代码,因为您尝试加载的文件不再存在。将您的代码基于the gmail example code provided with PHPMailer。如果遇到麻烦,请阅读自述文件和其他文档。

【讨论】:

我下载了 5.2 稳定版。当我在这个 youtube 视频youtube.com/watch?v=hLuPFzHQ8Xo&t=6s 之后使用 index.php 文件进行测试时,我成功地向自己发送了电子邮件。但我无法为我网站上的表格实施它。不知道为什么。 您不应该将旧版本用于任何新开发,尤其是当您完全控制 XAMPP 中的运行时环境时。您看到的错误只是意味着您的文件路径错误,或者是因为您使用了错误的相对路径,或者因为您没有在 php.ini include_path 指令中设置正确的搜索位置,或者因为您当前的工作目录不在您认为的位置。尝试将 __DIR__ 添加到您的相对路径。 我是 Web 开发的新手,很遗憾,我不确定如何更改路径。但是我的“网站”文件夹和“phpmailer”文件夹都在 Xampp 文件夹的 htdocs 中,即使我将 phpmailer 移动到网站文件夹中,它仍然无法正常工作。所以我不知道该怎么做:(顺便说一句,您提供的其他 phpmailer 示例是否有任何 youtube 视频? 我所知道的没有其他视频——不过可能是其他人制作的。如果您的 phpmailer 文件夹与此脚本位于同一位置,请尝试将您的 require 命令更改为:require __DIR__ . '/phpmailer/PHPMailerAutoload.php';;这将使它忽略您当前的工作目录。 omg 多么神奇 :D 我的代码丢失了 $mail->isSMTP(); 我添加了它,现在我收到了所有电子邮件给自己发电子邮件庆祝。我要感谢您的所有帮助 :) 非常感谢

以上是关于来自 php 表单的问题/错误,用于使用 php-mailer 库通过本地主机 Xampp 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

来自表单的数据未使用 php 添加到数据库表中

PHP表单- PHP $_GET 变量

PHP表单-PHP $_POST 变量

PHP + Mysql:来自第一个查询的动态表名,用于执行第二个查询

20php表单的使用

php 表单 (转)