首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Zend_Mail发送附件?

如何使用Zend_Mail发送附件?
EN

Stack Overflow用户
提问于 2013-11-26 15:51:04
回答 3查看 3.7K关注 0票数 4
代码语言:javascript
运行
复制
<?php

$message=$_POST['feedback'];
$attachments=$_POST['file'];
$subject=$_POST['subject'];
$tosend=$_POST['to'];
$tocc=$_POST['cc'];

$mail = new Zend_Mail();

$mail->setFrom('user@example.com','Admin');
$mail->addTo($tosend, 'Some Recipient');
$mail->addCc($tocc);

$mail->setType(Zend_Mime::MULTIPART_RELATED);
$mail->setSubject($subject);
$mail->setBodyHtml($message);

$attachments = $mail->createAttachment(file_get_contents($attachments));

$attachments->type = '.txt';        
$attachments->filename = "";

$mail->send($transport);
?>

使用这段代码我不能打开文件,它只接受文件名而不是整个路径来打开附件,当我点击打开附件时,它给出的错误是无法打开流。

这段代码可以很好地与cc、Bcc等其他特性协同工作。

EN

回答 3

Stack Overflow用户

发布于 2013-11-26 19:47:09

代码语言:javascript
运行
复制
$mail = new Zend_Mail();
$mail->setBodyHtml("description");
$mail->setFrom('id', 'name');
$mail->addTo(email, name);
$mail->setSubject(subject);

$content = file_get_contents("path to pdf file"); // e.g. ("attachment/abc.pdf")
$attachment = new Zend_Mime_Part($content);
$attachment->type = 'application/pdf';
$attachment->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
$attachment->encoding = Zend_Mime::ENCODING_BASE64;
$attachment->filename = 'filename.pdf'; // name of file

$mail->addAttachment($attachment);                  

$mail->send(); 
票数 3
EN

Stack Overflow用户

发布于 2013-11-26 16:39:15

您需要使用$_FILES数组打开文件,而不是使用$_POST$_POST只包含文件名,$_FILES包含实际文件。

请参阅http://php.net/manual/en/reserved.variables.files.php

此外,Zend_Mime_Part::type需要MIME类型,即$attachments->type需要是MIME类型。对于文本文件,这是text/plain。我也不认为你可以设置一个空的文件名。

票数 1
EN

Stack Overflow用户

发布于 2013-11-27 20:45:12

请试试这个,它会起作用的。

代码语言:javascript
运行
复制
 $file = "path of file";

 $mail = new Zend_Mail();
 $mail->setFrom("test@test.com", "test");
 $mail->addTo("test1@test.com", "test user");
 $mail->setSubject("file mail");
 $mail->setBodyHtml("html");   
 $at = new Zend_Mime_Part(file_get_contents($file));
 $at->type        = mime_content_type($file);
 $at->disposition = Zend_Mime::DISPOSITION_INLINE;
 $at->encoding    = Zend_Mime::ENCODING_BASE64;
 $at->filename    = basename($file);

 $mail->addAttachment($at); 

 if($mail->send())
 {
          echo " sent";
 }
 else
 {
      echo "not sent";
 }

 ?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20211314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档