Concrete5.7.5.2 - 在何处放置表单文件附件标题?

时间:2015-10-14 09:29:20

标签: email email-attachments concrete5-5.7

我构建了这样的电子邮件标题:

$txt_message .= $this->txt_message;
$html_message .= $this->html_message;
$mh = Core::make('helper/mail');
$mh->to($this->email_to, $this->site_name);
$mh->from($this->email, $this->name);
$mh->replyto($this->email, $this->name);
$mh->setSubject($this->subject);
$mh->setBody($txt_message);
$mh->setBodyHtml($html_message);
@$mh->sendMail();

有些帖子说可以添加附件

$mh->addAttachment($file);

但$ file必须是文件对象。如何将上传的文件设为文件对象?

我还发现了这篇文章:http://www.adrikodde.nl/blog/2012/mail-attachments-concrete5/

但是我收到所有Zend的错误。 Zend Mail仍然可以在C5.7中使用吗?

我在哪里放置文件附件的标头?我在哪里可以找到更多关于真正发送消息的内容(它仍然是Zend Mail吗?)以及可用的方法?

谢谢。

[解决]
感谢Nicolai,这是一个附加文件的工作示例:

$file = $_FILES['image']['tmp_name'];
$filename = $_FILES['image']['name'];
$importer = new \Concrete\Core\File\Importer();
$file_version = $importer->import($file, $filename);
$attachment = $file_version->getFile();
$mh->addAttachment($attachment);

//Delete the file if not wanted on server
$attachment->delete();

PS。在尝试发送之前,不要忘记检查真正选择/存在/上传的文件!

if (!empty($this->image)) {
    $importer = new \Concrete\Core\File\Importer();
    $image_version = $importer->import($this->image, $file_name);
    if ($image_version instanceof \Concrete\Core\File\Version) {
        $attachment = $image_version->getFile();
        $mh->addAttachment($attachment);
    }
}
@$mh->sendMail();

1 个答案:

答案 0 :(得分:1)

要将文件添加到文件系统,您应该看看这个

http://concrete5.org/api/class-Concrete.Core.File.Importer.html

在返回的对象(成功时为FileVersion)上,您应该可以调用getFile( )来获取实际的Concrete5 File对象