Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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 多文件附件和使用Yii2发送邮件_Php_Yii2_Swiftmailer - Fatal编程技术网

Php 多文件附件和使用Yii2发送邮件

Php 多文件附件和使用Yii2发送邮件,php,yii2,swiftmailer,Php,Yii2,Swiftmailer,在这里,我想清楚地解释我的问题 我可以上传多个文件,但问题是我没有得到 附件在我的邮件中,我只收到一个附件,在 服务器保存所有文件 我上传多个文件,但在发送邮件时,只有一个附件本身收到。 我该如何分类呢?在代码中,您只指定了最后一个。如果你想要所有的文件,你应该以一种组合的方式或者以一种与你的电子邮件组合兼容的方式来组合它们 试试这样的东西 $model->attachment = UploadedFile::getInstances($model, 'attachment');

在这里,我想清楚地解释我的问题

我可以上传多个文件,但问题是我没有得到 附件在我的邮件中,我只收到一个附件,在 服务器保存所有文件

我上传多个文件,但在发送邮件时,只有一个附件本身收到。
我该如何分类呢?

在代码中,您只指定了最后一个。如果你想要所有的文件,你应该以一种组合的方式或者以一种与你的电子邮件组合兼容的方式来组合它们

试试这样的东西

$model->attachment = UploadedFile::getInstances($model, 'attachment');
    if ($model->attachment) {

      $value = Yii::$app->mailer->compose()
        ->setFrom([Yii::$app->user->identity->email => 'Sample Mail'])
        ->setTo($model->email)
        ->setSubject($model->subject)
        ->setHtmlBody($model->content);

      foreach ($model->attachment as $file) {
        $name = 'emailattachments/' . $file->baseName . '.' . $file->extension;
        $file->saveAs($name);
        $value->attach(\Swift_Attachment::fromPath($name));
      }

      $value->send();
    }

在代码中,只指定最后一个。如果你想要所有的文件,你应该以一种组合的方式或者以一种与你的电子邮件组合兼容的方式来组合它们

试试这样的东西

$model->attachment = UploadedFile::getInstances($model, 'attachment');
    if ($model->attachment) {

      $value = Yii::$app->mailer->compose()
        ->setFrom([Yii::$app->user->identity->email => 'Sample Mail'])
        ->setTo($model->email)
        ->setSubject($model->subject)
        ->setHtmlBody($model->content);

      foreach ($model->attachment as $file) {
        $name = 'emailattachments/' . $file->baseName . '.' . $file->extension;
        $file->saveAs($name);
        $value->attach(\Swift_Attachment::fromPath($name));
      }

      $value->send();
    }
根据,attach方法希望文件名字符串作为参数。要修复代码,请执行以下操作:

$model->attachment = UploadedFile::getInstances($model, 'attachment');

if($model->attachment) {
    $message = Yii::$app->mailer->compose()
    ->setFrom([ Yii::$app->user->identity->email => 'Sample Mail'])
    ->setTo($model->email)
    ->setSubject($model->subject)
    ->setHtmlBody($model->content);

    foreach ($model->attachment as $file) {
        $filename = 'emailattachments/' .$file->baseName. '.' . $file->extension; # i'd suggest adding an absolute path here, not a relative.
        $file->saveAs($filename);
        $message->attach($filename);
    }

    $message->send();
}
根据,attach方法希望文件名字符串作为参数。要修复代码,请执行以下操作:

$model->attachment = UploadedFile::getInstances($model, 'attachment');

if($model->attachment) {
    $message = Yii::$app->mailer->compose()
    ->setFrom([ Yii::$app->user->identity->email => 'Sample Mail'])
    ->setTo($model->email)
    ->setSubject($model->subject)
    ->setHtmlBody($model->content);

    foreach ($model->attachment as $file) {
        $filename = 'emailattachments/' .$file->baseName. '.' . $file->extension; # i'd suggest adding an absolute path here, not a relative.
        $file->saveAs($filename);
        $message->attach($filename);
    }

    $message->send();
}

附加方法需要什么?包含要附加到邮件的文件名的数组?附加方法需要什么?包含要附加到邮件的文件的文件名的数组?我在fopenemailattachments/Invoice_1500 1.pdf中收到此错误;电子邮件附件/Invoice_15002.pdf;:未能打开流:没有此类文件或目录这意味着附件文件的路径名不正确。我收到此错误finfo_fileC:\wamp\tmp\php50C7.tmp:未能打开流:没有此类文件或目录;$value->attach\Swift\u Attachment::fromPath$name中存在错误;您真好。我收到这个错误fopenemailattachments/Invoice_1500 1.pdf;电子邮件附件/Invoice_15002.pdf;:未能打开流:没有此类文件或目录这意味着附件文件的路径名不正确。我收到此错误finfo_fileC:\wamp\tmp\php50C7.tmp:未能打开流:没有此类文件或目录;$value->attach\Swift\u Attachment::fromPath$name中存在错误;你真是太好了。哈哈,你在开玩笑吧?难道你不知道我只是错过了一个机会;在setHtmlBody行上?不需要添加Swift_附件,它内置了attachThanks,我已经为将来来到这里的每个人更新了答案。@b约恩只上传了一个文件?!我更新了我的代码就像你的代码哈哈,你在开玩笑吧?难道你不知道我只是错过了一个机会;在setHtmlBody行上?不需要添加Swift_附件,它内置了attachThanks,我已经为将来来到这里的每个人更新了答案。@b约恩只上传了一个文件?!我更新了我的代码,使之与您的代码相同