2013-04-20 94 views
0

我正在審閱網站的聯繫表單,但現在如果發件人姓名(如「John Smith」)有空間,它現在不想發送,它只會發送,如果它只是一個單詞(「約翰」)。問題在哪裏,我對.php一無所知,但我正在尋找解決辦法。如果名稱上有空格,聯繫表格不會發送

編輯:好吧,這裏是代碼

<?php 


function sendemail($toname, $toemail, $fromname, $fromemail, $subject, $message, $type = "plain", $cc = "", $bcc = "") { 

    require_once "class.phpmailer.php"; 

    $mail = new PHPMailer(); 


     $mail->IsMAIL(); 




    $mail->CharSet = "UTF-8"; 
    $mail->From = $fromemail; 
    $mail->FromName = $fromname; 
    $mail->AddAddress($toemail, $toname); 
    $mail->AddReplyTo($fromemail, $fromname); 
    if ($cc) { 
     $cc = explode(", ", $cc); 
     foreach ($cc as $ccaddress) { 
      $mail->AddCC($ccaddress); 
     } 
    } 
    if ($bcc) { 
     $bcc = explode(", ", $bcc); 
     foreach ($bcc as $bccaddress) { 
      $mail->AddBCC($bccaddress); 
     } 
    } 
    if ($type == "plain") { 
     $mail->IsHTML(false); 
    } else { 
     $mail->IsHTML(true); 

    $mail->Subject = $subject; 
    $mail->Body = $message; 

    if(!$mail->Send()) { 
     $mail->ErrorInfo; 
     $mail->ClearAllRecipients(); 
     $mail->ClearReplyTos(); 
     return false; 
    } else { 
     $mail->ClearAllRecipients(); 
     $mail->ClearReplyTos(); 
     return true; 
    } 

} 
} 


function descript($text, $striptags = true) { 
// Convert problematic ascii characters to their true values 
    $search = array("40","41","58","65","66","67","68","69","70", 
     "71","72","73","74","75","76","77","78","79","80","81", 
     "82","83","84","85","86","87","88","89","90","97","98", 
     "99","100","101","102","103","104","105","106","107", 
     "108","109","110","111","112","113","114","115","116", 
     "117","118","119","120","121","122" 
     ); 
    $replace = array("(",")",":","a","b","c","d","e","f","g","h", 
     "i","j","k","l","m","n","o","p","q","r","s","t","u", 
     "v","w","x","y","z","a","b","c","d","e","f","g","h", 
     "i","j","k","l","m","n","o","p","q","r","s","t","u", 
     "v","w","x","y","z" 
     ); 
    $entities = count($search); 
    for ($i=0; $i < $entities; $i++) { 
     $text = preg_replace("#(&\#)(0*".$search[$i]."+);*#si", $replace[$i], $text); 
    } 
    $text = preg_replace('#(&\#x)([0-9A-F]+);*#si', "", $text); 
    $text = preg_replace('#(<[^>]+[/\"\'\s])(onmouseover|onmousedown|onmouseup|onmouseout|onmousemove|ondblclick|onfocus|onload|xmlns)[^>]*>#iU', ">", $text); 
    $text = preg_replace('#([a-z]*)=([\`\'\"]*)script:#iU', '$1=$2nojscript...', $text); 
    $text = preg_replace('#([a-z]*)=([\`\'\"]*)javascript:#iU', '$1=$2nojavascript...', $text); 
    $text = preg_replace('#([a-z]*)=([\'\"]*)vbscript:#iU', '$1=$2novbscript...', $text); 
    $text = preg_replace('#(<[^>]+)style=([\`\'\"]*).*expression\([^>]*>#iU', "$1>", $text); 
    $text = preg_replace('#(<[^>]+)style=([\`\'\"]*).*behaviour\([^>]*>#iU', "$1>", $text); 
    if ($striptags) { 
     do { 
      $thistext = $text; 
      $text = preg_replace('#</*(applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>#i', "", $text); 
     } while ($thistext != $text); 
    } 
    return $text; 
} 

$name=0; 
$telefon=0; 
$sender=0; 
$syobshtenie=0; 
$ename=0; 
$etelefon=0; 
$esender=0; 
$esyobshtenie=0; 

if($_POST['name']){ 
$name = "Запитване от ".$_POST['name']; 
} 
else { $name=1; $ename=1; } 


if($_POST['sender']){ 
$sender = $_POST['sender']; 
if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $sender)) 
{ 
$sender="Email"; 
} 
} 

else { $sender=1; $esender=1; } 

if($_POST['telefon']){ 
$telefon = $_POST['telefon']; 
} 


if($_POST['zapitvane']){ 
$zapitvane = $_POST['zapitvane']; 
$syobshtenie = "<p>Запитване от ".$_POST['name']." 
<br />Email: ".$sender." 
<br />Телефон: ".$telefon."</p>".$zapitvane; 
} 

    else { $syobshtenie=1; $esyobshtenie=1; } 


if($name=="Име"){ $ename=1; } 
if($telefon=="Телефон"){ $etelefon=1; } 
if($sender=="Email"){ $esender=1; } 
if($syobshtenie=="Моля, въведете съобщение до нас"){ $esyobshtenie=1; } 


if($ename==0 && $esender==0 && $esyobshtenie==0 && $etelefon==0){ 

sendemail("VillaDes", "[email protected]", "", $sender, $name, $syobshtenie, "", "", ""); 

echo ' 
<div class="active-error"" style="margin-top:5px;">Съобщението Ви беше изпратено.<br /><br />Приятен ден!</div> 
<script> 
document.getElementById("contact").reset(); 
</script>'; 
} 


else { 
echo ' 
<div class="border-15"></div><div class="active-error"><b>Моля, въведете:</b></div><div class="border-8"></div>'; 

if($ename==1) { echo '<div class="active-error">Име</div><div class="border-8"></div>'; } 
if($esender==1) { echo '<div class="active-error">Е-поща</div><div class="border-8"></div>'; } 
if($etelefon==1) { echo '<div class="active-error">Телефон</div><div class="border-8"></div>'; } 
if($esyobshtenie==1) { echo '<div class="active-error">Запитване</div>'; } 
} 

       echo '<script type="text/javascript"> 
       $(document).ready(function() { 
       $("#close-email").click(function() { $("#mailresult").hide("fast"); }); 
       }); 
       </script>'; 

?> 
+0

郵編即使它不是英語,這不是我們需要看到反正話。 – smerny 2013-04-20 20:37:20

+0

對我而言,這段代碼與你的問題沒有多大關係。如果您的發件人名稱中有空格,則提到未發送的電子郵件。這段代碼根本沒有將一個名字傳入發送者變量(我假設這是'$ fromname')。這是原始代碼還是你嘗試了一些東西? – Kaiwa 2013-04-20 20:48:00

+0

是的,這是原始代碼,儘管我不是那個人寫的。我想找到問題。所以問題是,如果你輸入一個單獨的名字,比如John,那麼管理員或者其他人會收到郵件。但是,如果名稱中有空格,網站會告訴您郵件已發送,但管理員沒有收到任何郵件 – 2013-04-20 20:52:34

回答

0

在你的代碼後你撥打:

sendemail("VillaDes", "[email protected]ator.com", "", $sender, $name, $syobshtenie, "", "", ""); 

你sendemail函數接受:

sendemail($toname, $toemail, $fromname, $fromemail, $subject, $message 

所以$fromname會用作電子郵件和表單名稱的主題將爲空。 class.phpmailer.php應該用空格處理主題,所以我不認爲這會是問題。 當您使用$name作爲$fromemail空間可能會有問題。 (沒有空格的名字可以是本地郵箱??)。

除了這一切,你不需要class.phpmailer.php發送你的電子郵件。 使用默認的郵件功能:http://php.net/manual/en/function.mail.php

$headers = 'From: "'.$fromemail.'" <'.$fromname.'>' . "\r\n" . 
'Reply-To: "'.$fromname.'" <'.$fromemail.'>' . "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 

mail('"VillaDes" <[email protected]>',$syobshtenie, "", $headers); 
+0

,所以我應該更改哪些內容才能發送郵件?我不知道任何關於php – 2013-04-21 16:43:04

+0

的人嗎? – 2013-04-21 20:13:27

+0

將'sendemail($ toname ...')替換爲php郵件函數的代碼,現在你可以發送名字空間了,如果你還沒有php知識,可以考慮使用http:// green-beast.com/ – 2013-04-21 20:41:13