2012-06-22 10 views
14

So:PHPMailer przywiązanie, robi to bez pliku fizycznego

// 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) 

Ja używałem xmail() i kiedy dodaje załącznik tutaj, zdałem nazwę pliku i treści, które powinny być w nim.

Jak to:

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

Jak mogę to działa w ten sam sposób, więc kiedy zgłoszę AddAttachment() z klasy PHPMailer, mogę albo przekazać to samo lub coś podobnego, więc nie trzeba mieć prawdziwy plik na moim serwerze do wysłania?

Odpowiedz

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

np

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

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

+1

Bardzo ładne. Dziękujemy za odpowiedź – Karem

+0

Dla każdego, kto spróbuje tego, kodowanie będzie prawdopodobnie "base64", a typ $ jest ciągiem typu MIME. – daviddukeuk

+0

łącze jest w tym momencie przerwane –

1

od tej funkcji addAttachment() spodziewa się ścieżkę zamiast bajt danych, należy zrobić php konwersji do funkcji pliku tymczasowego, a następnie przekazać ten ciąg ścieżki do swojej funkcji

$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

Dzięki za wysiłek +1 – Karem

+0

@karem no problem – Kristian