Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从Zend_邮件对象中删除附件_Php_Zend Framework - Fatal编程技术网

Php 从Zend_邮件对象中删除附件

Php 从Zend_邮件对象中删除附件,php,zend-framework,Php,Zend Framework,有没有办法从Zend_邮件对象中删除附件?易于理解的 例如: 现在,我想修改对象并再次发送它 $mail->clearSubject() ->setSubject('new subject'); 是否有可能从该对象中删除该附件 以前设置过吗?我能想到的唯一方法是 $mail->setParts(array()); 但这将删除所有部件,不管它们是什么。我能想到的唯一方法是 $mail->setParts(array()); 但这将删除所有零件,不管它们是什么

有没有办法从Zend_邮件对象中删除附件?易于理解的 例如:

现在,我想修改对象并再次发送它

$mail->clearSubject()
     ->setSubject('new subject');
是否有可能从该对象中删除该附件
以前设置过吗?

我能想到的唯一方法是

$mail->setParts(array());

但这将删除所有部件,不管它们是什么。

我能想到的唯一方法是

$mail->setParts(array());

但这将删除所有零件,不管它们是什么。

您可以这样做:

$mail = new Zend_Mail();
$mail->createAttachment("...");

$parts = $mail->getParts();
foreach ($parts as $k => $v) {
    if ($v->disposition == "attachment") {
        unset($parts[$k]);
    }
}
$mail->setParts($parts);
$mail->hasAttachments = false;

这将仅删除其MIME配置设置为附件的部分。

您可以通过以下方式执行此操作:

$mail = new Zend_Mail();
$mail->createAttachment("...");

$parts = $mail->getParts();
foreach ($parts as $k => $v) {
    if ($v->disposition == "attachment") {
        unset($parts[$k]);
    }
}
$mail->setParts($parts);
$mail->hasAttachments = false;

这将只删除MIME配置设置为附件的部件。

因此,如果$parts=array,$mail->\u parts将设置为NULL。但它在ZF源代码中初始化为array,并且addPart设置$This->\u parts[]=$part;没有检查null conditionTrue,我以为它被设置为null,只是编辑了我的答案,谢谢;因此,如果$parts=array,$mail->\u parts将被设置为NULL。但它在ZF源代码中被初始化为array,并且addPart设置$this->\u parts[]=$part;没有检查null conditionTrue,我以为它被设置为null,只是编辑了我的答案,谢谢;