php create file and send as attachment without actually creating the file
Asked Answered
C

1

7

I know how to read a file on the server and attach it to an email in PHP, but I wanted to know if I could attach a file that is created by my script but not created on the server (kinda like a temp file).

So create file in memory and attach it to email.

Bonus: might need to create multiple files as well, would this be too much for the server to handle? I'm not talking GB's but like 5 files with 1000 lines each?

Corriveau answered 5/10, 2009 at 19:58 Comment(0)
L
12

Yes you can do that, as long as whatever email library you're using supports it. If you're not using one, you should be!
No, 5 files won't be too much for your server unless you bought it in 1993.

Hopefully your lib won't need a file reference - you can do something like:

$myEmail->attachData('file.name', 'mime/type', $data);

If it does need a file path then you could use a php://memory file:

 $f = fopen('php://memory/myfile', 'w');
 fwrite($f, '...');
 fclose($f);

$myEmail->attach('php://memory/myFile');
Lionfish answered 5/10, 2009 at 20:2 Comment(4)
How would I get the file reference when doing something like this?Corriveau
AntonioCS is has been the excepted answer since October 5, 2009. Did you post this comment in error?Corriveau
are you sure about that usage? PHP documentation isn't great for these wrappers - and i tried using 'php://memory/foo' and i get 'invalid url' errors on fopenArmand
In PHPMailer the method is AddStringAttachment(). You can read more about it here phpdocs.epesi.org/PHPMailer/…Nepos

© 2022 - 2024 — McMap. All rights reserved.