使用 swiftmailer 动态获取附件的名称


Getting a name dynamically for attachment with swiftmailer

正如标题所说,我想从表单中提取输入以更改附件的名称。

当我把这个说:

->attach(Swift_Attachment::newInstance($pdf_content, '$post->name', 'application/pdf'))

它不起作用,但如果我像这样喊出这个名字,它就可以了:

->attach(Swift_Attachment::newInstance($pdf_content, 'design.pdf', 'application/pdf'))

有什么想法吗?

很可能 a$post->name不是你认为的那样,b) 单引号把你搞砸了。

首先,验证$post->name是否为字符串/文件名(例如 design.pdf):

echo $post->name;
exit();

然后,一旦你确定它是你所期望的,在将其传递给函数时不要使用单引号:

->attach(Swift_Attachment::newInstance($pdf_content, $post->name, 'application/pdf'))

单引号括的字符串由 PHP 从字面上获取,因此您作为文件名传递的所有内容都是$post->name而不是 $post->name 的值。 如果您希望将字符串解析为包含变量,请使用双引号 ( ..., "$post->name", ... ) 或根本不使用引号(因为那里没有其他内容要传递)。