【问题标题】:Pear Mail sends email without attachmentPear Mail 发送不带附件的电子邮件
【发布时间】:2015-07-08 21:39:08
【问题描述】:

我正在尝试使用带有一些附件的PHP PEAR Mail 发送邮件。我正在阅读一个文本文件以获取filenames,然后使用它创建一个filePath,我可以根据PEAR addAttachment() 语法从中附加文件。但是当我收到邮件时,它没有附件。

我的代码

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' => 'you@yourdomain.com',
            '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 ( 'user@sippycup.co.uk', $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 我正在从具有我的 pdf 和 csv 文件的文件名的文本文件中获取内容。字符串是文件名!
  • 1 个文件名? 5个文件名? 20?您将获得文件的所有内容。贴一个文本文件的例子。
  • @Twisty 每个文本文件中的一个文件名我已经用 echo 验证了路径,它是一个有效的路径!
  • 对于文件名来说似乎需要做很多工作,但我想我明白了。其余部分从示例中看起来很教科书。 addAttachment() 确实会引发错误,因此您可以在附加时执行 try/catch 并查看是否引发错误:if (PEAR::isError ( $mime )){

标签: php email sendmail pear


【解决方案1】:

生成了一些空格,一个简单的trim() 解决了我的问题。

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

$mime->addAttachment ( $csv_trimed, 'text/csv' );
$mime->addAttachment ( $pdf_trimed, 'application/pdf' );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2014-09-04
    • 2014-04-23
    • 2014-10-03
    相关资源
    最近更新 更多