PHP邮件程序 - 内部服务器错误

时间:2015-01-20 01:31:27

标签: php forms phpmailer

我一直试图让我的网站上的联系表格起作用,我花了几周的时间试图解决这个问题,但事实并非如此。

这就是问题 - 我购买了一个网页模板,它附带了PHPMailer。我现在已经完成了将我的内容插入模板,但联系表格一直很痛苦。我已经按照PHP文件中的最佳说明进行了操作,但是当我测试联系表单时,它会给我一个“内部服务器错误”。

以下是我购买的代码:

$name = trim($_POST['name']);
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];

$site_owners_email = 'name@mydomain.com'; // Replace this with your own email address
$site_owners_name = 'My Name'; // Replace with your name

try {
    require_once('/Beta-BRC/php/PHPMailer/class.phpmailer.php');
    $mail = new PHPMailer();
    $mail->CharSet = 'UTF-8';

    $mail->From = $email;
    $mail->FromName = $name;
    $mail->Subject = "[WEB Form] ".$subject;
    $mail->AddAddress($site_owners_email, $site_owners_name);
    $mail->Body = $message;

    $mail->Mailer = "smtp";
    $mail->Host = "smtp.gmail.com"; // Replace with your SMTP server address
    $mail->Port = 465;
    $mail->SMTPSecure = "SSL"; 

    $mail->SMTPAuth = true; // Turn on SMTP authentication
    $mail->Username = "name@mydomain.com"; // SMTP username
    $mail->Password = "mypassword"; // SMTP password

    //echo "true";
    if($mail->Send()) {
        echo "true";
    } else {
        echo "Error sending: " . $mail->ErrorInfo;
    }

} catch (Exception $e) {
    echo $e;
} 

快速注意 - 我已尝试在此部分使用GMAIL帐户,但它仍然无效。

$mail->Username = "name@mydomain.com"; // SMTP username
$mail->Password = "mypassword"; // SMTP password

2 个答案:

答案 0 :(得分:1)

无需使用phpmailer登录Gmail。下面是我使用默认设置的phpmailer函数的示例。

public function sendEmail($toaddress,$toname,$subject,$message){
        if($template = file_get_contents('/home/username/domains/mydomain.com/public_html/html/email-template.html')){
            $template = str_replace("[SUBJECT]",$subject,$template);
            $template = str_replace("[CONTENT]",nl2br($message),$template);
            $mailer = new PHPMailer;
            $mailer->XMailer = "Organization Name 4.0.0";
            if($this->is_logged_in()){
                $mailer->AddCustomHeader("X-Originating-User-ID",$this->acct['id']);
                }
                $mailer->AddCustomHeader("X-Originating-IP",$_SERVER['REMOTE_ADDR']);
                $mailer->setFrom("outbound@mydomain.com","From Name");
                $mailer->AddAddress($toaddress,$toname);
                $mailer->Subject = $subject;
                $mailer->MsgHTML($template);
                $mailer->AltBody = $message;
                return $mailer->Send();
            }else{
                return false;
            }
        }

列出的电子邮件地址实际上并不存在。电子邮件只是从我的服务器和phpmailer发送,只是它来自该电子邮件地址。

尝试修改我的功能以满足您的需求,并让我知道它是如何工作的。

注意: 您需要确保打开邮件服务器才能使其正常工作

虽然您根本不必使用我的功能。尝试通过检查服务器上的一些错误日志来调试代码。通常在apache错误日志中(如果你正在运行apache)。检查错误日志是对代码进行故障排除的重要部分,通常可以帮助您变得更加主动。

我希望这有助于一点点!

答案 1 :(得分:0)

Internal Server Error的具体原因是您提供给加载PHPMailer类的require_once语句的错误路径。

您提供的路径为/Beta-BRC/php/PHPMailer/class.phpmailer.php,其中正确的陈述应为

    require_once('/home/trsta/public_html/Beta-BRC/php/PHPMailer/class.phpmailer.php');

或者更一般地说:

    require_once($_SERVER['DOCUMENT_ROOT'].'/home/trsta/public_html/Beta-BRC/php/PHPMailer/class.phpmailer.php');

您提供了有效的URL,但PHP需要服务器文件系统中的路径,这是不一样的。

那应该让你超越这个错误。可能还有其他人。