PHP Mail 在我不编辑代码的情况下停止工作

Posted

技术标签:

【中文标题】PHP Mail 在我不编辑代码的情况下停止工作【英文标题】:PHP Mail stops working without me editing the code 【发布时间】:2012-03-04 18:01:29 【问题描述】:

我的 php 邮件有问题。它不时停止工作,我什至没有接触代码。我有一个脚本可以检查所需表格是否为空。该脚本有效。但是,如果我填写了所有必填字段,我应该会收到一条文本,上面写着“您的邮件已成功发送”,但我没有。但是,如果我通过将一些文本向下移动一些行并再次回到原始位置来编辑我的代码,它会工作一段时间。它经常在晚上停止工作。可能是服务器造成了问题,还是我在下面发布的代码?

<?php

if(isset($_POST['submit']))

$namn = strip_tags($_POST['namn']);
$foretag = strip_tags($_POST['foretag']);
$adress = strip_tags($_POST['adress']);
$postnr = strip_tags($_POST['postnr']);
$ort = strip_tags($_POST['ort']);
$telefon = strip_tags($_POST['telefon']);
$epost = strip_tags($_POST['epost']);
$meddelande = strip_tags($_POST['meddelande']);

function check_required_fields($required_array)
    $field_errors = array();
    foreach($required_array as $fieldname)
        if ((!isset($_POST[$fieldname])) || (empty($_POST[$fieldname]))) 
            if($_POST[$fieldname] != '0')
                $field_errors[] = $fieldname; 
            
        
    
    return $field_errors;


$errors = array();
$required_fields = array('namn', 'telefon', 'meddelande');
$errors = array_merge($errors, check_required_fields($required_fields));

if(empty($errors))

$meddelande=nl2br($meddelande);

if(empty($foretag)) $foretag='-'; 
if(empty($adress)) $adress='-'; 
if(empty($postnr)) $postnr='-'; 
if(empty($ort)) $ort='-'; 
if(empty($epost)) $epost='-'; 

$body = 
"
Namn: <b>". $namn ."</b><br />
Företag: <b>". $foretag ."</b><br />
Adress: <b>". $adress ."</b><br />
Postnr: <b>". $postnr ."</b><br />
Ort: <b>". $ort ."</b><br />
Telefon: <b>". $telefon ."</b><br />
E-post: <b>". $epost ."</b><br /><br />
Meddelande: <b><br />". $meddelande
;

$headers = "From: $namn <webmaster@allflytt.com>\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "X-Mailer: PHP v".phpversion();

$success = mail('info@allflytt.com', 'Meddelande', $body, $headers);





?>

    <form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
    
            <?php
                if(!empty($errors))
                    echo "<p class=\"field_error\">De rödmarkerade fälten måste fyllas i.</p>";
                
            ?>
            
            <?php
                if(empty($errors) && $success)
                    echo "<p class=\"p_success\">Tack för ditt meddelande! Vi kommer att besvara det inom kort.</p>";
                
            ?>
    
    <p>
        <label for="namn">
        <?php if(!empty($errors))if(in_array("namn", $errors))echo "<span class=\"field_error\">";?>Namn: *<?php if(!empty($errors))if(in_array("namn", $errors))echo "</span>"; ?>
        </label><br />
        <input type="text" name="namn" id="namn" class="text" tabindex="15" value="<?php if(!empty($errors)) echo $namn;  ?>" />
            <br />
        <label for="foretag">Företag:</label><br />
        <input type="text" name="foretag" id="foretag" class="text" tabindex="20" value="<?php if(!empty($errors)) echo $foretag; ?>" />
            <br />
        <label for="adress">Adress:</label><br />
        <input type="text" name="adress" id="adress" class="text" tabindex="30" value="<?php if(!empty($errors)) echo $adress;  ?>" />
            <br />
        <label for="postnr">Postnummer:</label><br />
        <input type="text" name="postnr" id="postnr" class="text_medium" tabindex="40" value="<?php if(!empty($errors)) echo $postnr;  ?>" />
            <br />
        <label for="ort">Ort:</label><br />
        <input type="text" name="ort" id="ort" class="text" tabindex="50" value="<?php if(!empty($errors)) echo $ort;  ?>" />
            <br />
        <label for="telefon">
        <?php if(!empty($errors))if(in_array("telefon", $errors))echo "<span class=\"field_error\">";?>Telefon: *<?php if(!empty($errors))if(in_array("telefon", $errors))echo "</span>"; ?>
        </label><br />              
        <input type="text" name="telefon" id="telefon" class="text" tabindex="60" value="<?php if(!empty($errors)) echo $telefon;  ?>" />
            <br />
        <label for="epost">E-post:</label><br />                
        <input type="text" name="epost" id="epost" class="text" tabindex="70" value="<?php if(!empty($errors)) echo $epost;  ?>" />
            <br />
        <label for="meddelande">
        <?php if(!empty($errors))if(in_array("meddelande", $errors))echo "<span class=\"field_error\">";?>Meddelande: *<?php if(!empty($errors))if(in_array("meddelande", $errors))echo "</span>"; ?>
        </label><br />              
        <textarea name="meddelande" id="meddelande" class="textarea" tabindex="80"><?php if(!empty($errors)) echo $meddelande;  ?></textarea>
            <br />  
        <input type="submit" name="submit" value="Skicka" class="submit" />
    </p>

    </form>

【问题讨论】:

【参考方案1】:

问题解决了。更改为新的服务器主机。没有问题了!

【讨论】:

【参考方案2】:

找不到您的代码是否有任何问题。 检查您的服务器中是否启用了 APC 缓存。 有时它会在更新代码时产生问题。

如果您使用 SMTP 服务器,则 mail() 函数可能无法正常工作。 您可以为此使用 PEARS。

【讨论】:

与我的网络托管公司交谈,APC 缓存已启用。他正在进一步研究这个问题。但它必须与服务器有关吗?如果没有,我一无所知。 好的,您使用的是 SMTP 服务器吗?如果是,那么邮件可能无法正常工作。使用梨来发送邮件。你可以参考这个。 email.about.com/od/emailprogrammingtips/qt/… 我想是的。我问了我的服务器主机,他说邮件服务器上配置了 SMTP。我现在尝试使用 pear 发送邮件但没有成功。点击提交时我只是得到一个空白窗口。但这真的是问题吗?为什么它偶尔会发送我的邮件? 我的服务器主机说我不需要使用梨来与他的服务器发送邮件。经过几天的调查,我还没有找到解决方案。我肯定注意到的一件事是它在晚上停止工作。然后它开始工作,我只需上传一个已经在服务器上的随机 html/php 文件。我什至不必对文件进行更改,只需上传完全相同的文件即可使其再次工作。已经多次查看我的代码,也找不到我的代码有什么问题。到目前为止,我非常感谢您的帮助。希望你能进一步帮助我:)【参考方案3】:

我遇到过类似的问题。结果浏览器错误地有时会重复发布您的表单;一次有内容,另一次没有内容。

如果没有内容提交到您的脚本,显然没有什么可操作的。有很多方法可以检查这一点,但我发现这是一个绝望的最后手段,每次运行脚本时我都会向自己发送电子邮件。而且我表明我经常收到两封脚本只运行一次的邮件。

值得一试:)

【讨论】:

问题是邮件根本没有发送。正如我提到的,错误检查有效,但如果我填写所有必填字段,它不会显示成功消息,甚至不会发送邮件。

以上是关于PHP Mail 在我不编辑代码的情况下停止工作的主要内容,如果未能解决你的问题,请参考以下文章

PHP Mail停止工作[重复]

PHP mail() 函数已停止工作

在我让 iPhone 闲置后 Siri Custom Intent 停止工作

OSX / postfix:无法使用PHP mail()发送邮件[关闭]

d3 地理动画不会停止

动态更改PHP变量(在执行时)