2017-06-12 117 views
-1

我是网络开发的新手。我写了一个php代码来发送表单中的电子邮件,并将其托管在云端。每当我点击提交按钮时,我都会收到HTTP ERROR 500。phpmailer在尝试在云端上测试电子邮件时出现HTTP ERROR 500

<?php 

    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    # code... 
     $name = trim($_POST["fullname"]); 
     $email = trim($_POST["email"]); 
     $phone_no = trim($_POST["phone_num"]); 
     $partner_type = $_POST["Partner_type"]; 

    if ($name == "" || $email == "" || $phone_no == " ") { 
     echo "please fill the required fields name , email , phone number"; 
     } 

     if ($_POST["adds"] != "") { 
     echo "Bad form input"; 
     exit; 
     } 

     require 'class.phpmailer.php'; 

     $mail = new PHPMailer(); 

     if (!$mail->ValidateAddress($email)) { 
     # code... 
     echo "Invalid Email Address"; 
     exit; 
     } 


     $email_body = ""; 
     $email_body .= "Name " . $name . "\n"; 
     $email_body .= "Email " . $email . "\n"; 
     $email_body .= "Phone Number " . $phone_no . "\n"; 
     $email_body .= "Partner Type " . $partner_type . "\n"; 


     $mail->setFrom($email, $name); 
     $mail->addAddress('[email protected]', 'gbubemi');  // Add a recipient 

    /**$mail->addAttachment('/var/tmp/file.tar.gz');   // Add attachments 
     $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name 
     **/ 

     $mail->isHTML(false);         // Set email format to HTML 

     $mail->Subject = 'Become a Partner ' . $name ; 
     $mail->Body = $email_body; 
     $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

     if(!$mail->send()) { 
      echo 'Message could not be sent.'; 
      echo 'Mailer Error: ' . $mail->ErrorInfo; 
      exit; 
     } else { 
      echo 'Message has been sent'; 
     } 

    header("location:index.php?status=thanks"); 
} 

?> 

请真的很沮丧,我需要帮助。谢谢。

+1

检查你的PHP错误日志。 –

+0

...请注册https://codereview.stackexchange.com/ - 您的代码不好。 – symcbean

回答

0

你应该使用包中的函数PHPMailerAutoload ..它很简单,工作得很好。我自己在一个项目上使用它。另外,它很容易被吸收。

function sendMail($destinaire, $code, $prename){ 

require 'phpmailer/PHPMailerAutoload.php'; 

$userMail = $destinataire; //Recipient 
$mail = new PHPMailer(); 
$mail->Host = "smtp.gmail.com"; 
$mail->isSMTP(); 
$success_send = " Le code de reservation a éte envoyé à ".$userMail; 
$failed_send = "Echec: le mail in not send verifier votre email"; 
//On ouvre l'authentification 
$mail->SMTPAuth = true; 

//Les creditentials 
$mail->Username = "[email protected]"; 
$mail->Password = "Senderpass"; 
//set the type of protection 
$mail->SMTPSecure ="ssl"; //tls 
//Definissons un port 
$mail->Port ="465"; //587 pour tls 
//L'objet du message 
$mail->Subject ="Reservation enregistré"; 
//Le message en lui meme, afin le contenu quoi 
$mail->Body ="Bonjour '.$prename.' Nous avons enregistré votre reservation. 
Veuillez presenter le Code suivant le jour du voyage ".$code; 

//Bref, qui envoi? 
$mail->setFrom('[email protected]', 'Indiza - Travel Dimension'); 
//set where we are sending this email(à qui) 
$mail->addAddress($userMail); 
//Envoyer l'email 

if($mail->send()) 
    return $success_send; 
else 
    return $failed_send;   
} 

实用

要启动(如果您使用Gmail),你应该降低发送账号的安全级别的信息

https://support.google.com/accounts/answer/6010255?hl=en

Github Php Mailer

而且如果有必要,这个链接将非常有用Codingpassive/PHPMailer

就这样调用

$idz = sendMail("$receiverMail","anyCode","receiverName"); 

的功能是不是真的电脑?没有绅士,我们做工艺品。

Est-ceréellementde l'informatique?非moni ami,在fait juste du bricolage上。

1

首先,您需要调试应用程序天气电子邮件是否正在发送或可能是卡在队列中。你可以通过在终端上运行“mailq”来检查它。接下来的第一次尝试发送简单的电子邮件上Cloudways这样的:

<?php 
require_once "vendor/autoload.php"; //PHPMailer Object 
$mail = new PHPMailer; //From email address and name 
$mail->From = "[email protected]"; 
$mail->FromName = "Full Name"; //To address and name 
$mail->addAddress("[email protected]", "Recepient Name");//Recipient name is optional 
$mail->addAddress("[email protected]"); //Address to which recipient will reply 
$mail->addReplyTo("[email protected]", "Reply"); //CC and BCC 
$mail->addCC("[email protected]"); 
$mail->addBCC("[email protected]"); //Send HTML or Plain Text email 
$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"; 
} 
if(!$mail->send()) 
{ 
echo "Mailer Error: " . $mail->ErrorInfo; 
} 
else 
{ 
echo "Message has been sent successfully"; 
} 

如果它的工作原理,然后电子邮件发送尝试通过应用SMTP凭证这样的发送:

<?php 
require_once "vendor/autoload.php"; 

$mail = new PHPMailer; 

//Enable SMTP debugging. 

$mail->SMTPDebug = 3;                            

//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 = "[email protected]";              

$mail->Password = "super_secret_password";                        

//If SMTP requires TLS encryption then set it 

$mail->SMTPSecure = "tls";                        

//Set TCP port to connect to 

$mail->Port = 587;                     

$mail->From = "[email protected]"; 

$mail->FromName = "Full Name"; 

$mail->addAddress("[email protected]", "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"; 

} 
?> 

您还可以设置SMTP上Cloudways平台的服务器设置: SMTP settings for cloudways

这里阅读完整的文章:https://www.cloudways.com/blog/send-emails-in-php-using-phpmailer/

+0

好的谢谢你的工作 –

+0

@gbubemismith很高兴为你工作。将其标记为正确答案plz :) –