首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送邮件表单,但邮件不发送

发送邮件表单,但邮件不发送
EN

Stack Overflow用户
提问于 2014-06-06 11:59:07
回答 3查看 123关注 0票数 0

通常我是用ASP.NET编写代码的,所以PHP对我来说有点新。当我填写表格并按“发送”键时,我没有收到邮件。

有人能看到这里出了什么问题吗?

验证工作正常,但是如果您可以看到一些我不需要的代码,那么请说出来。

代码语言:javascript
复制
<?php

/************************
* Variables 
*************************/

$cc = "";
$bcc = "";
$headermail = 'xxx@xyz.com';
$toaddress = "xxx@xyz.com";
$to = "my@mail.dk";
$name = "Thomas Petersen";
$email = "my@mail.dk";

if($_SERVER["REQUEST_METHOD"] == "POST")
    { 
    if(strlen($_POST['companyname']) < 1  || strlen($_POST['navn']) < 1  || strlen($_POST['beskrivelse']) < 1  || strlen($_POST['kommentar']) < 1 || validateEmail($email) == FALSE)
        {

        if(empty($_POST['navn'])){
            $emailerror .= '<li>Venligst indtast dit navn</li>';
        }

        else if(empty($_POST['telefon'])){
            $emailerror .= '<li>Venligst indtast dit telefon nummer</li>';
        }

        else if(!is_numeric($_POST['telefon'])){
            $emailerror .= '<li>OPMÆRKSOM! Telefon nummer, kan kun indholde tal-cifre.</li>';
        }

        else if(empty($_POST['beskrivelse'])){
            $emailerror .= '<li>Venligst indtast en beskrivelse</li>';
        }

        else if(empty($_POST['mvalue'])){
            $emailerror .= '<li>Venligst indtast ordre mængde</li>';
        }

        else if(empty($_POST['kommentar'])){
            $emailerror .= '<li>Venligst indtast en kommentar</li>';
        }
    }

    else
    {

        $emailerror .= "<h1 style='color:#00ff00;'>Mail Send!</h1>";

        $message = '<!DOCTYPE HTML>
            <html>
            <head></head>
            <body>
            <table>
                <tr><td colspan="2">' . $_POST['navn'] . ' har sendt denne foresp&oslash;rgsel.</td></tr>
                <tr><td>Telefon nr.:</td><td>' . $_POST['telefon'] . '</td></tr>
                <tr><td>Beskrivelse:</td><td>' . $_POST['beskrivelse'] . '</td></tr>
                <tr><td>M&aelig;ngde:</td><td>' . $_POST['mvalue'] . '</td></tr>
                <tr><td>Kommentar:</td><td>' . $_POST['kommentar'] . '</td></tr>
            </table>
            </body>
            </html>';

        $message = trim(stripslashes($message));

        $e_subject = 'Moseg&aring;rden Foresp&oslash;rgsel fra ' . $_POST['navn'] . '.';

        $headers = "Fra: " . $_POST['navn'] . PHP_EOL;
        $headers .= "Reply-To: $email" . PHP_EOL;
        $headers .= "MIME-Version: 1.0" . PHP_EOL;
        $headers .= "Content-type: text/html; charset=utf-8" . PHP_EOL;
        $headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;
        $headers .= 'To: Thomas <my@mail.dk>' . PHP_EOL;
        $headers .= 'From: Salg af hus my@mail.dk>' . PHP_EOL;
        $headers .= 'Cc: my@mail.dk' . PHP_EOL;
        $headers .= 'Bcc: my@mail.dk' . PHP_EOL;

        mail($toaddress, $e_subject, $message, $headers);
    }
}
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
        input[type=text] {
            padding:5px; border:2px solid #ccc; 
            -webkit-border-radius: 5px;
            border-radius: 5px;
        }
        input[type=text]:focus {
            border-color:#333; 
        }
        input[type=submit] {
            padding:5px 15px; 
            background:#ccc; 
            border:0 none;
            cursor:pointer;
            -webkit-border-radius: 5px;
            border-radius: 5px; 
        }
        textarea{
            padding:5px; border:2px solid #ccc; 
            -webkit-border-radius: 5px;
            border-radius: 5px;
        }
        </style>
    </head>
    <body>
        <h1>Foresp&oslash;rgsel</h1> 
        <div id='emailerror'>
            <ul>
                <p><?php echo $emailerror; ?></p>
            </ul>
        </div>
        <form method="post" action="">
            <div> 
                <div class="input_label user"> 
                    <label>Navn:</label>
                </div> 
                <input type="text" name="navn" />
            </div> 
            <br />
            <div> 
                <div class="input_label user"> 
                    <label>Telefon nr.:</label>
                </div> 
                <input type='text' name="telefon" />
            </div> 
            <br />
            <div> 
                <div class="input_label user"> 
                    <label>Beskrivelse:</label>
                </div> 
                <textarea name="beskrivelse"></textarea>
            </div> 
            <br />
            <div> 
                <div class="input_label user"> 
                    <label>M&aelig;ngde:</label>
                </div> 
                <input type="text" name="mvalue" />
            </div> 
            <br />
            <div> 
                <div class="input_label user"> 
                    <label>Kommentar:</label>
                </div> 
                <textarea name="kommentar"></textarea>
            </div> 
            <br />
            <input type="submit" value=" Send " />
        </form>
    </body>
</html> 

编辑

这段代码在没有验证的情况下运行良好,可以发送邮件。

代码语言:javascript
复制
<?php
    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        $name = "Thomas Petersen";
        $email = "my@mail.dk";
        $message = $_POST['navn'] . " har sendt denne foresp&oslash;rgsel." . \r\n . "Telefon nr.: ". $_POST['telefon'] . "\r\n" . "Beskrivelse: ". $_POST['beskrivelse'] . "\r\n" . "M&aelig;ngde: ". $_POST['mvalue'] . "\r\n" . "Kommentar: ". $_POST['kommentar'] . "\r\n";
        $to = "thomas@pahm.dk";
        $subject = "Moseg&aring;rden Foresp&oslash;rgsel fra " . $_POST['navn'];
        $headers = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
        $headers .= 'To: Thomas <my@mail.dk>' . "\r\n";
        $headers .= 'From: Salg af hus my@mail.dk>' . "\r\n";
        $headers .= 'Cc: my@mail.dk' . "\r\n";
        $headers .= 'Bcc: my@mail.dk' . "\r\n";
        if (!mail($to, $subject, $message, $headers)) {
            echo "<h1 style='color:rgb(0,0,255);'>Mail ikke send!</h1>";
        } else {
            echo "<h1 style='color:#00ff00;'>Mail Send!</h1>";
        }
    }
?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-06 12:15:04

正如我在注释中指出的那样,您的表单中没有设置$_POST["companyname"]。因此,它总是小于1

代码语言:javascript
复制
//change this
if(strlen($_POST['companyname']) < 1  || strlen($_POST['navn']) < 1  || strlen($_POST['beskrivelse']) < 1  || strlen($_POST['kommentar']) < 1 || validateEmail($email) == FALSE)

//to this
if(strlen($_POST['navn']) < 1  || strlen($_POST['beskrivelse']) < 1  || strlen($_POST['kommentar']) < 1 || validateEmail($email) == FALSE)
票数 0
EN

Stack Overflow用户

发布于 2014-06-06 12:18:03

在您的表单中,我找不到名称为"companyname“的输入文本字段。

如果strlen($_POST['companyname']) < 1的计算结果为true,则不会发送电子邮件。

因此,也许可以将它从您的if状态中去掉,这样它看起来就像这样:

代码语言:javascript
复制
if(strlen($_POST['navn']) < 1  || strlen($_POST['beskrivelse']) < 1  || strlen($_POST['kommentar']) < 1 || validateEmail($email) == FALSE)
票数 0
EN

Stack Overflow用户

发布于 2014-06-06 12:26:07

不要使用$_POST,尝试filter_input/filter_input_array,电子邮件发送:http://swiftmailer.org/。不是strlen,而是isset,空的,filter_input有电子邮件验证过滤器。http://pl1.php.net/manual/en/function.filter-input-array.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24081327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档