2013-07-23 2 views
0

У меня проблема с отправкой писем с приложением. У меня есть эта функция:(решено) отправка письмо с приложением проблема

function mail_att($to, $subject, $message, $anhang) { 
    $absender = "Sender"; 
    $absender_mail = "[email protected]"; 
    $reply = "[email protected]"; 

    $path = $anhang; 
$uploadname = "Anhang.pdf"; 

$trenner = md5(time()); 
    // Mail Header 
    $mailheader = "Reply-To: " .$absender. "<" .$absender_mail. ">\r\n"; 
    $mailheader .= "Return-Path: ".$absender_mail."\r\n"; 
    $mailheader .= "Message-ID: <".$absender_mail.">\r\n"; 
    $mailheader .= "X-Mailer: PHP v" .phpversion(). "\r\n"; 
    $mailheader .= "From: ".$absender."<".$absender_mail.">\r\n"; 
    $mailheader .= "MIME-Version: 1.0\r\n"; 
    $mailheader .= "Content-Type: multipart/mixed;\r\n"; 
    $mailheader .= " boundary = " .$trenner; 
    $mailheader .= "\r\n\r\n"; 

    // Mailbody 
    $mailbody = "This is a multi-part message in MIME format\r\n"; 
    $mailbody .= "--" .$trenner. "\r\n"; 
    $mailbody .= "Content-Type: text/html; charset=UTF-8\r\n"; 
    $mailbody .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; 
    $mailbody .= $message. "\r\n\r\n"; 

    // Attachment 
    $mailbody .= "--" .$trenner. "\r\n"; 
    $mailbody .= "Content-Type: application/pdf; name=\"" .$uploadname. "\"\r\n"; 
    $mailbody .= "Content-Transfer-Encoding: base64\r\n"; 
    $mailbody .= "Content-Disposition: attachment; filename=\"" .$uploadname. "\"\r\n\r\n"; 
    $mailbody .= chunk_split(base64_encode(file_get_contents($path))); 
    $mailbody .= "\n"; 

    // Send 
    mail($to, htmlspecialchars($subject), $mailbody, $mailheader); 
} 

Но когда я хочу отправить письмо, я ничего не получаю. Где проблема? Я уверен, что я вхожу в правильный приемник EMail! И нет проблем с почтовым сервером, потому что обычные электронные письма работают нормально.

// Редактировать: О, я никогда не думал использовать phpmailer. Это делает все проще и работает. Вся моя работа ни за что. Но спасибо вообще!

+3

Простой ответ: не создавайте свои собственные сообщения электронной почты, особенно с вложениями. Используйте PHPMailer или Swiftmailer, оба из которых уменьшат весь фрагмент кода до примерно 4 или 5 строк. Кроме того, вы просто предполагаете, что 'mail()' работает. Вы проверили его возвращаемое значение? Он возвращает false при ошибке. Вы проверяли журнал сообщений исходящего сервера? Возможно, электронная почта была сброшена как спам. –

+0

Вы отправляете на учетную запись gmail? Google известен тем, что фильтрует электронные письма с вложениями, отправленными из того, что они воспринимают как «автоматизированные» источники. –

+0

** Вы ничего не получаете? ** Я вижу, что вы пытаетесь отправить >> '$ to' <<, но эта переменная ** не определена **. Это где-то в киберпространстве. ** Добавьте это ** '$ to =" [email protected] ";' ** ниже ** '$ reply =" [email protected] ";'. –

ответ

0

Для отправки сообщения используется встроенная функция mail() PHP.

Итак, PHP попытается отправить сообщение через локальный MTA, запущенный на том же сервере, на котором работает PHP, как указано sendmail_path в вашем файле php.ini. Ваше первое место для поиска будет в журналах этого локального MTA.
Они должны сказать вам

  1. ли не локальный MTA получил сообщение от вашего PHP скрипта, и если да, то
  2. Что произошло, когда местный MTA пытался доставить сообщение удаленного MTA.
Смежные вопросы