Вложение PHPMailer, делая это без физического файла - программирование
Подтвердить что ты не робот

Вложение PHPMailer, делая это без физического файла

Итак:

// 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, я могу либо передать то же, либо что-то вроде этого, поэтому мне не нужно иметь фактический файл на моем сервере для отправки

4b9b3361

Ответ 2

так как функция 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 data
$handle     = fopen( $tempfile, "w");
fwrite( $handle, $content );

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