多文件附件和使用 Yii2 发送邮件
Multiple file Attachment and sending mail using Yii2
在这里我想把我的问题解释清楚
Am able to upload multiple file, but the problem am not getting the
attached files in my mail, only one attachment alone am receiving, in
server all files getting saved
$model->attachment = UploadedFile::getInstances($model, 'attachment');
$files = '';
if ( $model->attachment )
{
foreach ($model->attachment as $file)
{
$file->saveAs('emailattachments/' .$file->baseName. '.' . $file->extension);
$files = 'emailattachments/' .$file->baseName. '.' . $file->extension;
$model->attachment = $files;
}
}
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)
->attach($model->attachment)
->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();
}
根据 Yii docs,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();
}
在这里我想把我的问题解释清楚
Am able to upload multiple file, but the problem am not getting the attached files in my mail, only one attachment alone am receiving, in server all files getting saved
$model->attachment = UploadedFile::getInstances($model, 'attachment');
$files = '';
if ( $model->attachment )
{
foreach ($model->attachment as $file)
{
$file->saveAs('emailattachments/' .$file->baseName. '.' . $file->extension);
$files = 'emailattachments/' .$file->baseName. '.' . $file->extension;
$model->attachment = $files;
}
}
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)
->attach($model->attachment)
->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();
}
根据 Yii docs,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();
}