0

我是一名初级网页设计师/开发人员,目前正在尝试修复网站的联系表。该网站是不久前创建的,并且联系表格已损坏。我正在尽我最大的努力来修复联系表格,而不是更改任何其他内容,但我很难做到这一点。

所有我认为是 html 文件的文件都以 .asp 结尾,而不是 .html。所以,我听说你可以使用 PHP 发送邮件,所以我下载了一个教程(我实际上查看了大约 30 个不同的教程以找到一个很好的教程),并认为我得到了它的工作。我没有。

我的目标是将表单中的信息发送到 php 文件,发送到我的 gmail,然后发送给我的客户。这都是使用phpMailer。我在我的 php 文件和联系表单所在的服务器上的同一个文件夹中有 phpMailer;你知道,所以他们可以看到对方。但是,我无法让这件事发挥作用。我不断收到 500 服务器错误。

服务器上启用了 PHP,并且没有阻止 php 邮件。

我的代码有问题吗?或者它是我不知道的服务器问题。无论如何,我非常困惑和沮丧。

包含 html 表单的 .asp 文件

<form method="post" action="contact_form.php">
             <p>
                <label for="name">Name:</label>
                <input name="name" type="text" class="txt" id="name" size="30" />
            </p>
             <p>
                <label for="company">Company:</label>
                <input name="company" type="text" class="txt" id="company" size="30" />
             </p>
              <p>
                <label for="city">Email:</label>
                <input type="text" name="email" id="email" class="txt" />
              </p>
             <p>
                <label for="comments">Comments:</label>
                <textarea name="comments" cols="30" rows="5" class="txtarea" id="comments"></textarea>
             </p>
             <p>
                <label for="blank">&nbsp;</label>
                <input type="submit" name="btn_submit" id="btn_submit" class="btn" value="Send"/>
             </p>
    </form>

发送电子邮件的 php 文件的代码

<?php

$name = trim($_POST['name']);
$company = $_POST['company'];
$email = $_POST['email'];
$comments = $_POST['comments'];

$site_owners_email = 'support@macnx.com'; // Replace this with your own email address
$site_owners_name = 'Landin'; // replace with your name

if (strlen($name) < 2) {
    $error['name'] = "Please enter your name";  
}

if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
    $error['email'] = "Please enter a valid email address"; 
}

if (strlen($comments) < 3) {
    $error['comments'] = "Please leave a comment.";
}

if (!$error) {

    require_once('phpMailer/class.phpmailer.php');
    $mail = new PHPMailer();

    $mail->From = $email;
    $mail->FromName = $name;
    $mail->Subject = "Website Contact Form";
    $mail->AddAddress($site_owners_email, $site_owners_name);
    $mail->Body = $company, $comments;

    // GMAIL STUFF

    $mail->Mailer = "smtp";
    $mail->Host = "smtp.gmail.com";
    $mail->Port = 587;
    $mail->SMTPSecure = "tls"; 

    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->Username = "inquiry@getgearhead.com"; // SMTP username
    $mail->Password = "B******A"; // SMTP password

    $mail->Send();

    echo "<li class='success'> Congratulations, " . $name . ". We've received your email. We'll be in touch as soon as we possibly can! </li>";

} # end if no error
else {

    $response = (isset($error['name'])) ? "<li>" . $error['name'] . "</li> \n" : null;
    $response .= (isset($error['email'])) ? "<li>" . $error['email'] . "</li> \n" : null;
    $response .= (isset($error['comments'])) ? "<li>" . $error['comments'] . "</li>" : null;

    echo $response;
} # end if there was an error sending

?>

任何帮助是极大的赞赏!

编辑:
我收到了要发送的电子邮件,出现语法错误,已修复。
虽然,在电子邮件发送后它仍然给我一个 500 服务器错误,即使电子邮件发送正确。它与.php 底部的回声响应有关。

echo "<li class='success'> Congratulations, " . $name . ". We've received your email. We'll be in touch as soon as we possibly can! </li>";

} # end if no error
else {

    $response = (isset($error['name'])) ? "<li>" . $error['name'] . "</li> \n" : null;
    $response .= (isset($error['email'])) ? "<li>" . $error['email'] . "</li> \n" : null;
    $response .= (isset($error['comments'])) ? "<li>" . $error['comments'] . "</li>" : null;

    echo $response;
} # end if there was an error sending


就像我之前说的,我是从一个教程中得到这个的,而且那个人正在使用各种 javascript 和 css,我试图忽略其中的大部分,因此我的一些代码不准确。
有没有更好的方法告诉提交信息的人电子邮件已发送?我只需要它转到一个单独的页面,或者在某个地方显示它,它现在所做的就是给出一个 500 服务错误。

谢谢。

4

1 回答 1

0

这条线似乎被打破了:

$mail->Body = $company, $comments;

也许你想说

$mail->Body = $company . $comments;
于 2013-08-14T14:41:29.553 回答