Так:
// 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)
Я использовал xmail (), и когда я добавил сюда вложение, я передал имя файла и содержимое, которое должно быть в нем.
Как это:
$xmail->addAttachment('myamazingfile.pdf', $content);
Как я могу заставить его работать одинаково, поэтому, когда я вызываю AddAttachment()
из класса PHPmailer, я могу либо передать то же, либо что-то вроде этого, поэтому мне не нужно иметь фактический файл на моем сервере для отправки?
AddStringAttachment($string,$filename,$encoding,$type)
например
$mail = new PHPMailer(); $mail->AddStringAttachment($string,$filename,$encoding,$type);
поскольку функция AddAttachment () ожидает путь, а не байтовые данные, вы должны сделать php-преобразование в функцию temp-файла, а затем передать эту строку пути в вашу функцию
$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 );