问题
PHP Email form with attachment not working by PHPMailer help me what I'm missing. Without form and PHP code it's working in localhost but when i merge with the form it's totally not working..
<?php
require 'vendor/autoload.php';
require 'classes/config.php';
if(isset($_POST['submit'])){
$name = $_POST['name'];
$email = $_POST['email'];
$mobile = $_POST['mobile'];
$mat = $_POST['mat'];
$res = $_POST['res'];
$tech = $_POST['tech'];
$city = $_POST['city'];
$message = $_POST['message'];
$content='<br><br>Name: '.$name.'<br>'.'<br>Mobile: '.$mobile .'<br>Material: '.$mat.'<br>Res: '.$res.'<br>tech: '.$tech.'<br>City: '.$city .'<br>Message: '.$message.'<br>Email: '.$email;
$file_name = ($_FILES['image']['name']);
$file_tmp = ($_FILES['image']['tmp_name']);
$file_path = "upload";
if(move_uploaded_file($file_tmp, "uploads" . $file_name)){
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->isSMTP();
$mail->Host = Config::SMTP_HOST;
$mail->Username = Config::SMTP_USER;
$mail->Password = Config::SMTP_PASS;
$mail->Port = Config::SMTP_PORT;
$mail->SMTPSecure = 'tls';
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
$mail->isHTML(true);
$mail->CharSet = 'UTF-8';
$mail->setFrom('mail');
$mail->addAddress('mail');
$mail->Subject = 'Got a Enquiry';
$mail->Body = $content;
$mail->addAttachment($file_path, $file_name);
if($mail->send()){
echo 'Super';
} else {
echo 'nothing:' .$mail->ErrorInfo;
}
}
}
?>
<form class="montform" id="reused_form" enctype="multipart/form-data" >
<div class="col-lg-4 col-md-4 col-sm-12 col-xs-12 bzd-upload-1-1">
<div class="col-lg-12 frm-bg">
<img src="img/upload-icon.png" class="img-responsive">
<p>Drag and Drop Files<br/>
or Upload Here</p>
<p class="file">
<label for="file_attach">
<h6>Browse</h6>
</label>
<input name="image" type="file" id="file" class="feedback-input">
</p>
</div>
</div>
<div class="col-lg-8 col-md-8 col-sm-12 col-xs-12 bzd-form-1-1">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 form-group">
<label class="form-1-1">Name</label>
<p class="name">
<input name="name" type="text" class="feedback-input" required placeholder="Name" id="name" />
</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 form-group">
<label class="form-1-1">Email</label>
<p class="email">
<input name="email" type="email" required class="feedback-input" id="email" placeholder="Email" />
</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 form-group">
<label class="form-1-1">Mobile No</label>
<p class="name">
<input name="phone" type="tel" class="feedback-input" required placeholder="Phone" id="phone" />
</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 form-group">
<label class="form-1-1">Material</label>
<p class="name">
<input name="mat" type="tel" class="feedback-input" required placeholder="Material" id="mat" />
</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 form-group">
<label class="form-1-1">Resolution</label>
<p class="name">
<input name="res" type="tel" class="feedback-input" required placeholder="Resolution" id="res" />
</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 form-group">
<label class="form-1-1">Technology</label>
<p class="name">
<input name="tech" type="tel" class="feedback-input" required placeholder="Technology" id="tech" />
</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 form-group">
<label class="form-1-1">City</label>
<p class="name">
<input name="city" type="text" class="feedback-input" required placeholder="City" id="city" />
</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 form-group">
<label class="form-1-1">Message</label>
<p class="text">
<textarea name="message" class="feedback-input" id="comment" placeholder="Message"></textarea>
</p>
</div>
<div class="submit">
<button type="submit" class="button-blue">SUBMIT</button>
<div class="ease"></div>
</div>
</div>
</form>
When I click the submit button it's loading... No error displayed and also i'm not getting mail. I am also search some more articles but still it is not resolved.. kindly help me in this..
回答1:
You are checking this:
if(isset($_POST['submit'])){
but your form does not contain an input named submit
, so this condition will never be true and your sending code will not be run.
You have this submit button:
<button type="submit" class="button-blue">SUBMIT</button>
but it has no name or value attribute. Change it to this:
<button type="submit" name="submit" class="button-blue">SUBMIT</button>
回答2:
You should check your error_log
file it would show you whats going wrong.
Actualy $mail->SMTPDebug = 2;
would create troubleshoots of errors too, so maybe your emails going to spam box.
Here is the code working on my localhost :
require_once "vendor/autoload.php";
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
//Or $mail = new PHPMailer;
//Enable SMTP debugging.
$mail->SMTPDebug = 3;
//Set $mail->SMTPDebug = 0; on live sites.
//Set PHPMailer to use SMTP.
$mail->isSMTP();
//Set SMTP host name
$mail->Host = "smtp.gmail.com";
//Set this to true if SMTP host requires authentication to send email
$mail->SMTPAuth = true;
//Provide username and password
$mail->Username = "useremail@gmail.com";
$mail->Password = "password";
//If SMTP requires TLS encryption then set it
//$mail->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
//Set TCP port to connect to
$mail->Port = 587;
$mail->From = "name@gmail.com";
$mail->FromName = "Full Name";
$mail->smtpConnect(
array(
"ssl" => array(
"verify_peer" => true,
"verify_peer_name" => true,
"allow_self_signed" => false
)
)
);
//This won't require any server settings on your localhost.
$mail->addAddress("Recepient@email.com", "Recepient Name");
$mail->isHTML(true);
$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";
if(!$mail->send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent successfully";
}
Change credentials to yours, and see if your emails not going to spam box.
Change your form line to this : <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" class="montform" id="reused_form" enctype="multipart/form-data">
you dont have post method in your form, it doesnt post your values to php page.
NOTE : if your php codes are not in same page! change this <?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>
to your page.php
in action.
Change Your upload codes to :
$file_name = ($_FILES['image']['name']);
$file_tmp = ($_FILES['image']['tmp_name']);
$file_path = "upload/";
if(move_uploaded_file($file_tmp, $file_path.$file_name)){
来源:https://stackoverflow.com/questions/60501828/when-i-click-the-submit-button-its-loading-but-no-error-and-also-im-not-gettin