通过PHP服务器发送电子邮件

时间:2017-07-09 20:42:50

标签: php email

直截了当。我正在尝试在我的网站上设置联系表单,但努力使其工作。此外,还在SO上阅读了许多相关主题。我遵循了教程,因此我对这个主题非常熟悉。我确信我的php.ini文件配置得很好,因为直到最近才发送电子邮件(尽管它总是以垃圾邮件结束)。直到我对代码进行了更改。我迟早需要做出的改变。奇怪的是,当我使用没有变量的硬编码细节运行时发送电子邮件。但是当我实现变量时,它就停止了工作。显然我需要PHP来通过变量处理用户的输入。如何让PHP读取用户的输入?我认为最重要的部分是在输入标记中使用属性name="something"

分享相关代码:

PHP:

<?php

$fullName = $errorMsg = $sucMsg = "";
$errMsg = $email = $subject = $emailErr = $message = "";

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;   
}

if (isset($_POST['submit'])) {
    $fullName = test_input($_POST['fullName']);

    if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
        $emailErr = "Your email address is not valid !";        
    } else {
    $email = $_POST['email'];  
    }
    $subject = test_input($_POST['subject']);
    $message = test_input($_POST['message']);   

if($emailErr == "") {
        $emailTo = "mark.alexa.uk@gmail.com";
        $headers = "From ".$fullName." ".$email." via contact form";
        $headers .= "Reply-To: ".$email;
        $headers .= "Return-Path: webmaster@ubuntuserver\r\n";
        $headers .= "CC: alexa.mark@mail.com\r\n";
        $headers .= "BCC: alexa.mark@mail.com\r\n";

        if (mail($emailTo, $subject, $message, $headers)) {
            $sucMsg = "<p>The email was sent successfully !</p>";   
        } else {
            $errMsg = "<p>The email could not be sent !</p>";
        }
}

}   
?>

HTML:

<div class="container" id="form">

<div id="successMsg" class="alert alert-success" role="alert"><?php 
 echo $sucMsg; ?></div>
<div id="errMsg" class="alert alert-danger" role="alert"><?php echo 
 $errMsg; ?></div>
 <form method="POST" action="contact.php">
<fieldset class="form-group">
    <label for="fullName">Full name</label>
    <input type="text" class="form-control" name="fullName" 
id="fullName" placeholder="full name" required>
</fieldset>
<fieldset class="form-group">
    <label for="email">Email</label>
    <input type="email" id="email" placeholder="email" class="form-
 control" required>
    <small id="emailHelp" name="email" class="form-text text-muted">I 
 won't share your email with anyone</small>
</fieldset>
<fieldset class="form-group">
    <label for="subject">Subject</label>
    <input type="text" class="form-control" name="subject" id="subject" placeholder="subject" required> 
</fieldset>
<fieldset class="form-group">
    <label for="message">Your message</label>
    <input type="text" class="form-control" name="message" id="message" placeholder="message" required>

<input type="submit" id="submit" class="btn btn-success" value="Submit">

</fieldset>
</form>
</div>

更新:

我应该如何修改PHP代码,使其不会以垃圾邮件结束?

1 个答案:

答案 0 :(得分:1)

添加姓名=&#34;提交&#34;到你的提交按钮。表单将name属性传递给post数组。所以你的代码测试:

$_POST['submit']

..因为<input type="submit" id="submit" name="submit" class="btn btn-success" value="Submit"> 未设置而无效。

.my-container div.sibling:last-of-type{...}