2013-09-19 2 views
3

Я использую следующий код для отправки вложений в сообщениях электронной почты ... но я не могу получить электронную почту ..Электронная почта не отправляет с помощью PHP

Я могу получить сообщение для успешной отправки почты как «сообщение отправлено», но электронная почта не будет соответствующий почтовый идентификатор ..

я не там, где я сделал не так ....

Вот PHP файл ...

   <?php 

    if(isset ($_POST["send"])) 
    { 
     $upload_name=$_FILES["upload"]["name"]; 
     $upload_type=$_FILES["upload"]["type"]; 
     $upload_size=$_FILES["upload"]["size"]; 
     $upload_temp=$_FILES["upload"]["tmp_name"]; 
     $message=$_POST["msg"]; 
     $subject = $_POST["subject"]; 
     $to=$_POST["to"]; 


    if($message==""||$subject==""||$to=="") 
    { 
     echo '<font style="font-family:Verdana, Arial; font-size:11px; color:#F3363F; font-weight:bold">Please fill all fields</font>'; 
    } 
    else 
    { 
    $fp = fopen($upload_temp, "rb"); 
    $file = fread($fp, $upload_size); 

    $file = chunk_split(base64_encode($file)); 
    $num = md5(time()); 

// Нормальный hea Ders

 $headers = "From: Info Mail<[email protected]>\r\n"; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: multipart/mixed; "; 
    $headers .= "boundary=".$num."\r\n"; 
    $headers .= "--$num\r\n"; 

// Эти два шага, чтобы помочь избежать спама

 $headers .= "Message-ID: <".gettimeofday()."  [email protected]".$_SERVER['SERVER_NAME'].">\r\n"; 
     $headers .= "X-Mailer: PHP v".phpversion()."\r\n"; 

// С сообщением

$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n"; 
    $headers .= "Content-Transfer-Encoding: 8bit\r\n"; 
    $headers .= "".$message."\n"; 
    $headers .= "--".$num."\n"; 

// Attachment заголовки

$headers .= "Content-Type:".$upload_type." "; 
    $headers .= "name=\"".$upload_name."\"r\n"; 
    $headers .= "Content-Transfer-Encoding: base64\r\n"; 
    $headers .= "Content-Disposition: attachment; "; 
    $headers .= "filename=\"".$upload_name."\"\r\n\n"; 
    $headers .= "".$file."\r\n"; 
    $headers .= "--".$num."--"; 

// SEND MAIL

mail($to, $subject, $message, $headers); 


fclose($fp); 

echo '<font style="color:#333333">Mail sent please check inbox and spam both <br /></font>'; 
    } 
    } 

?> 

// HTML код детали формы и добавление вложений ..

  <form id="attach" name="attach" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>" enctype="multipart/form-data"> 
      //Html code for mail details 
      </form> 

Я получаю «предупреждение: почта() [function.mail]: функция Вредные параметры по почте(), почта не отправлено .... », а также показывает« Mail отправлен, пожалуйста, проверьте входящие и спам ». В чем проблема?

Помоги мне решить эту проблему ...

+0

Имейте в виду, что вам нужен SMTP-сервер, работающий на том же сервере, на котором вы выполняете свой PHP, чтобы отправлять электронные письма. – Joren

+2

Почему вы отключили предупреждения для вызова «mail»? Удалите это @ и узнайте, какие предупреждения вы получите. –

+0

сохраните себе мир боли и прекратите использовать mail(), используйте одну из библиотек, которые все мы используем: phpmailer, swiftmailer. обучение css, вероятно, поможет :-) –

ответ

1

можно передать плохие данные функции почты. Перейдите к http://php.net/manual/en/function.mail.php и прочитайте документацию, в которой рассказывается, как ее использовать.

отметить также, что она возвращает логическое значение, которое говорит вам, была ли ваша попытка почте успешной, поэтому по крайней мере:

.... 
$success = mail(...); 
if ($success) { 
    echo "<p>mail sent</p>"; 
} else { 
    echo "<p>error: mail was not sent.</p>"; 
} 

так, что ваш код не валяется, передается ли это по почте или не.

Что касается вашего огромного количества данных: прокомментируйте все это. Затем прогрессивные разблокированные биты до тех пор, пока они не сломаются. Теперь вы нашли проблему и можете решить ее, посмотрев, что вы предоставляете функции mail(), которой она не нравится.

Смежные вопросы