views:

365

answers:

1

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?

+6  A: 

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');
Greg
How would I get the file reference when doing something like this?
Phill Pafford
Thanks this helps in the right direction
Phill Pafford
@Phill Mark it as the accept answer if it helps you!!
AntonioCS
AntonioCS is has been the excepted answer since October 5, 2009. Did you post this comment in error?
Phill Pafford
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 fopen
HorusKol