2015-04-29 2 views
1

Я пытаюсь отправить почту с помощью PHP PEAR Mail с некоторыми прикрепленными файлами. Я читаю текстовый файл, чтобы получить filenames, а затем с помощью этого создать filePath, из которого я могу прикрепить файл в соответствии с синтаксисом PEAR addAttachment(). Но когда я получаю почту, у нее нет вложений.Pear Mail отправляет электронную почту без приложения

Мой код

function sendMail() { 
    $pdf_filename = file_get_contents("/tmp/uploads/filelog/pdfFiles.txt"); 
    $csv_filename = file_get_contents("/tmp/uploads/filelog/csvFiles.txt"); 

    $text = 'Text version of email'; 
    $html = '<html><body>HTML version of email</body></html>'; 
    $csv_file = '/tmp/uploads/csv/' . $csv_filename; 
    $pdf_file = '/tmp/uploads/pdf/' . $pdf_filename; 
    $crlf = "\n"; 
    $hdrs = array (
      'From' => '[email protected]', 
      'Subject' => 'Test mime message' 
    ); 

    $mime = new Mail_mime (array (
      'eol' => $crlf 
    )); 
    $mime->setTXTBody ($text); 
    $mime->setHTMLBody ($html); 
    $mime->addAttachment ($csv_file, 'text/csv'); 
    $mime->addAttachment ($pdf_file, 'application/pdf'); 
    $body = $mime->get(); 
    $hdrs = $mime->headers ($hdrs); 
    $mail = & Mail::factory ('mail'); 
    $mail->send ('[email protected]', $hdrs, $body); 
    if (PEAR::isError ($mail)) { 
     echo ("<p>" . $mail->getMessage() . "</p>"); 
    } else { 
     echo ("<p>Message successfully sent!</p>"); 
    } 
} 
sendMail(); 

Почему это не работает? Несмотря на то, что я подтвердил, что оба файла существуют на сервере.

+0

'file_get_contents()' не имеет никакого смысла. Вы не получаете имя файла, вы получаете строку со всем содержимым. Итак, когда вы делаете '$ csv_file = '/ tmp/uploads/csv /'. $ csv_filename; 'это не будет путь к файлу. – Twisty

+0

@Twisty Я получаю содержимое из текстовых файлов, которые имеют имена файлов для моих файлов pdf и csv. Строка - это имя файла! – b0w3rb0w3r

+0

1 имя файла? 5 имен файлов? 20? Вы получите все содержимое файла. Отправьте пример текстового файла. – Twisty

ответ

0

Были произведены некоторые пробелы, простая проблема trim().

$csv_trimed = trim($csv_file); 
$pdf_trimed = trim($pdf_file); 
. 
. 
. 
. 
. 

$mime->addAttachment ($csv_trimed, 'text/csv'); 
$mime->addAttachment ($pdf_trimed, 'application/pdf'); 
Смежные вопросы