SilverStripe 4.1 电子邮件->addAttachment()?
SilverStripe 4.1 Email->addAttachment()?
我有一个接受文件输入的联系表单,我想将该文件附加到从表单发送的电子邮件中。
查看 API 参考并没有真正帮助,它指出该函数需要一个文件路径,除此之外没有任何说明。
提交操作会将 的记录保存到数据库中,这可以正常工作,例如:
$submission = MyDataObject::create();
$form->saveInto($submission);
$submission->write();
然后创建并发送电子邮件对象。这两个都按预期运行和工作。
正在尝试附加我试过的文件:
$email->addAttachemnt($submission->MyFile()->Link());
这是我最接近获取文档文件路径的方法。转储并粘贴该调用输出的结果文件路径将下载表单,但该行会引发错误并且似乎无法找到该文件。
我怀疑我误解了应该赋予函数的内容,非常感谢澄清。
P.S。我目前无法访问代码,我正在寻找有关函数本身的一些说明,而不是确切的答案:)。
我会尝试 $email->addAttachment($submission->MyFile()->Filename);
如果它不起作用,您可能需要在文件名前加上 $_SERVER['DOCUMENT_ROOT']
。
$email->addAttachment($_SERVER['DOCUMENT_ROOT'] . $submission->MyFile()->Filename);
在 SilverStripe 4 中,资产被抽象化,因此您无法保证该文件存在于您的网络服务器上。它通常会,但它同样可以存在于某个地方的 CDN 上。
当您在 SilverStripe 4 中处理文件时,您应该始终使用文件的 内容 和任何其他可用的元数据,而不是依赖文件系统调用来加载它。
这是 silverstripe/userforms 模块将文件附加到电子邮件的方式:
/** @var SilverStripe\Control\Email\Email $email */
$email->addAttachmentFromData(
$file->getString(), // stream of file contents
$file->getFilename(), // original filename
$file->getMimeType() // mime type
);
我有一个接受文件输入的联系表单,我想将该文件附加到从表单发送的电子邮件中。
查看 API 参考并没有真正帮助,它指出该函数需要一个文件路径,除此之外没有任何说明。
提交操作会将 的记录保存到数据库中,这可以正常工作,例如:
$submission = MyDataObject::create();
$form->saveInto($submission);
$submission->write();
然后创建并发送电子邮件对象。这两个都按预期运行和工作。
正在尝试附加我试过的文件:
$email->addAttachemnt($submission->MyFile()->Link());
这是我最接近获取文档文件路径的方法。转储并粘贴该调用输出的结果文件路径将下载表单,但该行会引发错误并且似乎无法找到该文件。
我怀疑我误解了应该赋予函数的内容,非常感谢澄清。
P.S。我目前无法访问代码,我正在寻找有关函数本身的一些说明,而不是确切的答案:)。
我会尝试 $email->addAttachment($submission->MyFile()->Filename);
如果它不起作用,您可能需要在文件名前加上 $_SERVER['DOCUMENT_ROOT']
。
$email->addAttachment($_SERVER['DOCUMENT_ROOT'] . $submission->MyFile()->Filename);
在 SilverStripe 4 中,资产被抽象化,因此您无法保证该文件存在于您的网络服务器上。它通常会,但它同样可以存在于某个地方的 CDN 上。
当您在 SilverStripe 4 中处理文件时,您应该始终使用文件的 内容 和任何其他可用的元数据,而不是依赖文件系统调用来加载它。
这是 silverstripe/userforms 模块将文件附加到电子邮件的方式:
/** @var SilverStripe\Control\Email\Email $email */
$email->addAttachmentFromData(
$file->getString(), // stream of file contents
$file->getFilename(), // original filename
$file->getMimeType() // mime type
);