【问题标题】:php form sending email, but not in correct way [closed]php表单发送电子邮件,但方式不正确[关闭]
【发布时间】:2018-01-21 18:01:48
【问题描述】:

我网页上的联系表格终于发送了电子邮件,但它没有以正确的格式发送。以下是我收到的电子邮件。出于隐私原因,我模糊了电子邮件和组织。

无论如何,从图片中可以看出,此人在联系表单中填写的姓名、电子邮件和消息内容都在主题行中,而不是实际的邮箱中——我写下 jibberjabber 时我正在填写表格来测试它。有没有一种方法可以格式化我的代码,以便他们写下的消息和名称在消息框中而不是主题框中,并且电子邮件是从将电子邮件放入表单的人发送的。非常感谢任何帮助,并在此先感谢!

到目前为止,这是我的代码:

HTML

      <form id="main-contact-form" name="contact-form" method="post" action="sendemail.php" accept-charset="UTF-8">
    <div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
        <div class="col-md-6">
            <div class="form-group">
                <input type="text" name="name" class="form-control" placeholder="Name" required="required" style="color: #ffffff"/>
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <input type="email" name="email" class="form-control" placeholder="Email Address" required="required" style="color: #ffffff"/>
            </div>
        </div>
    </div>
    <div class="form-group">
        <textarea name="message" id="message" class="form-control" rows="4" placeholder="Enter your message" required="required" style="color: #ffffff"></textarea>
    </div>
    <div class="form-group">
        <button type="submit" class="btn-submit">Send Now</button>
    </div>
</form>

CSS——我把它放在这里以防万一。

#contact {
  background-image: url(../images/contact-bg.jpg);
  padding-bottom: 0;
  height: auto;
  background-attachment: fixed;
}

#contact .heading {
  padding-top: 95px;
}

#main-contact-form {
  text-align: center;
}

.contact-info {
  text-align: left;
}

form {
  align: center;
  margin: 0 auto;
}

.form-control {
  background-color: transparent;
  border-color: rgba(255, 255, 255, .8);
  height: 50px;
  border-radius: 1;
  box-shadow: none;
}

textarea.form-control {
  min-height: 180px;
  resize: none;
}

.form-group {
  margin-bottom: 30px;
}


ul.address {
  margin-top: 30px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.contact-info ul li {
  margin-bottom: 8px;
}

.contact-info ul li a {
  color: #fff;
}

.btn-submit {
  display: block;
  padding: 12px;
  width: 100%;
  color: #fff;
  border: 0;
  margin-top: 40px;
}

Java 脚本

        (function ($) {
        var messages = {
            'progress': '<p><i class="fa fa-spinner fa-spin"></i> Sending email...</p>',
            'success': '<p class="text-success">Thank you for contacting us. We will contact you as early as possible.</p>',
            'error': '<p class="text-danger">Aw snap! Something didn\'t go right!</p>'
        };
        var $form = $('form#main-contact-form');
        var formStatus = $('<div class="form_status"/>');
        $form.submit(function (e) {
            e.preventDefault();
            $.ajax({
                type: 'POST',
                url: $form.attr('action'),
                data: $form.serialize(),
                dataType: 'json',
                beforeSend: function () {
                    formStatus.html(messages.progress).fadeIn().prependTo($form);
                },
                success: function (data) {
                    if (data.success === true) {
                        formStatus.html(messages.success);
                    } else {
                        formStatus.html(messages.error);
                    }
                    formStatus.fadeIn().delay(3000).fadeOut();
                },
                error: function () {
                    formStatus.html(messages.error).fadeIn().delay(3000).fadeOut();
                }
            });
        })
    })(jQuery);

PHP

    <?php
$to = 'changedfor@privacyreasons.xyz';
$name = !empty($_POST['name']) ? filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING) : '';
$from = !empty($_POST['email']) ? filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL) : $to;
$message = !empty($_POST['message']) ? filter_var(trim($_POST['message']), FILTER_SANITIZE_STRING) : '';

$body = "Name: {$name}\r\nEmail: {$from}\r\nMessage: {$message}";

$body = wordwrap($body, 70, "\r\n");

$headers = [
    'MIME-Version: 1.0',
    'Content-type: text/plain; charset=iso-8859-1',
    "From: $name <$from>",
    "Reply-To: <$from>",
    'X-Mailer: PHP/' .phpversion()
];
    $subject = 'some subject';
$success = mail($to, $body, implode("\r\n", $headers));

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {
    die(json_encode(['success' => $success]));
}

echo $success ? 'Sent Successfully.' : 'An error occurred';

ini_set('display_errors', 1); error_reporting(E_ALL);

?>

【问题讨论】:

    标签: javascript php html css email


    【解决方案1】:

    您缺少主题参数,请阅读the docs

    另外,'\r\n'"\r\n" 不一样

    $subject = 'some subject';
    $success = mail($to, $subject, $body, implode("\r\n", $headers));
    

    【讨论】:

    • 我将您的建议添加到我的代码中,而这一次,我什至没有收到电子邮件。另外,我编辑了我的问题以显示您的代码。
    • 过了一会儿,我再次检查了一下,认为网站可能需要一段时间才能正常工作,这次我收到了一封电子邮件。如果你看我的问题,我更新了图片。我仍然得到相同的结果,但至少消息的内容是某种格式。不过,该消息仍在标题中。
    • 也显示更新的 PHP 代码。我建议您尝试一些更简单的方法,只需在某个地方设置一个不做任何花哨但发送电子邮件的页面,并确保您遵循文档
    猜你喜欢
    • 1970-01-01
    • 2012-06-14
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多