Я пытаюсь отправить почту с помощью 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();
Почему это не работает? Несмотря на то, что я подтвердил, что оба файла существуют на сервере.
'file_get_contents()' не имеет никакого смысла. Вы не получаете имя файла, вы получаете строку со всем содержимым. Итак, когда вы делаете '$ csv_file = '/ tmp/uploads/csv /'. $ csv_filename; 'это не будет путь к файлу. – Twisty
@Twisty Я получаю содержимое из текстовых файлов, которые имеют имена файлов для моих файлов pdf и csv. Строка - это имя файла! – b0w3rb0w3r
1 имя файла? 5 имен файлов? 20? Вы получите все содержимое файла. Отправьте пример текстового файла. – Twisty