2012-06-22 14 views
14

Quindi:PHPMailer attaccamento, farlo senza un file fisico

// Setup mail class, recipients and body 
$mailer->AddAttachment('/home/mywebsite/public_html/file.zip', 'file.zip'); 
The AddAttachment function has four arguments: 

AddAttachment(PATH_TO_FILE, FILENAME, ENCODING, HEADER_TYPE) 

ho usato per usare XMail() e quando ho aggiunto un allegato qui, ho passato il nome del file e il contenuto, che dovrebbe essere in esso.

Ti piace questa:

$xmail->addAttachment('myamazingfile.pdf', $content); 

Come posso farlo funzionare allo stesso modo, così quando chiamo AddAttachment() dalla classe PHPMailer, posso neanche passare lo stesso o qualcosa di simile, quindi non ho bisogno di avere un file reale sul mio server da inviare?

risposta

29
AddStringAttachment($string,$filename,$encoding,$type) 

esempio

$mail = new PHPMailer(); 
$mail->AddStringAttachment($string,$filename,$encoding,$type); 

http://phpmailer.worxware.com/index.php?pg=tutorial#3

+1

Molto bello. Grazie per la tua risposta – Karem

+0

Per chiunque provi a farlo, la codifica sarà probabilmente "base64" e il tipo $ è una stringa del tipo MIME. – daviddukeuk

+0

il link è rotto in questo momento –

1

dal momento che la funzione AddAttachment() si aspetta un percorso piuttosto che byte di dati, si dovrebbe fare un php convertire in funzione di file temporaneo e quindi passare tale stringa di percorso nella vostra funzione

$prefix  = 'ConvertMediaArgs_'.time().'_'; 
$tempfile = tempnam($this->tempdir, $prefix); 

// Args file create failure: kill script with TEMPFILEFAIL error 
if($tempfile === false) { 
    die('file could not be created'); 
} 

// Write args as Key=Val (\n) to file 
$fullpath = $this->tempdir.$tempfile; 
$content = $someContent // <---------------- this is your file's data 
$handle  = fopen($tempfile, "w"); 
fwrite($handle, $content); 

// $fullpath is the path you wanna pass to your function 
$xmail->addAttachment($fullpath, $content); 
+0

Grazie per il vostro sforzo +1 – Karem

+0

@karem nessun problema – Kristian