将多个用户选择的附件添加到电子邮件

我正在为我的网站上的管理员实施基本电子邮件功能。他们可以设置主题,内容等,然后发送邮件给指定的收件人。我遇到的问题是附件。他们应该能够选择已经在网络服务器(例如public_html/fileuploads/myfile.pdf)上的多个文件将多个用户选择的附件添加到电子邮件

如果它不能从网络服务器上连接,那么我至少需要实现一种方法,让它们可以从PC上连接多个文件。目前我使用Swiftmailer,它接受像这样的附件:

$message->attach(Swift_Attachment::fromPath('/path/to/file.pdf')); 

所以我需要用户能够选择多个文件。这个我可以做到:

<input type="file" name="attachment[]" multiple/> 

但现在我不知道如何让每个选定的文件的完整路径,然后将每个文件添加为附件。它应该从HTML提交到我的mailer.php页面。

任何帮助,将不胜感激。

回答:

// first get a list of the attachments 

$attachments_dir = 'public_html/fileuploads';

$attachments = glob("$attachments_dir/*.pdf");

// then put them into the form

foreach ($attachments as $attachment) {

echo '<input type="checkbox" name="attachments[]" value="',$attachment], '">',$attachment,'<br />';

}

// then when the form is submitted, use them

$selected_attachments = $_POST['attachments'];

foreach ($selected_attachments as $attachment) {

$message->attach(Swift_Attachment::fromPath($attachment));

}

请注意,在此显示出所要经历不是很安全的过程。 有人可能会将附件更改为/root/secretpasswords.txt,例如,您可能附加了不期望的东西。

如果所有附件只在一个目录中,您可以在提交表单中使用文件名部分,而不是路径/文件名,但这应该足以让您开始。

回答:

您将在PHP获取文件名& tmp文件源如下

for($i=0;$i<count($_FILES["attachment"]["name"]);$i++) 

{

if($_FILES["attachment"]["name"][$i] != "")

{

//here you will get all files selected by user.

echo $_FILES["attachment"]["tmp_name"][$i];

echo $_FILES["attachment"]["name"][$i]

//here you can copy files to your server, then pass one to your swift mailer function.

//to copy file to your server, you can use copy() or move_upload_file() function.

}

}

以上是 将多个用户选择的附件添加到电子邮件 的全部内容, 来源链接: utcz.com/qa/257104.html

回到顶部