Ответ 1
AddStringAttachment($string,$filename,$encoding,$type)
eg
$mail = new PHPMailer();
$mail->AddStringAttachment($string,$filename,$encoding,$type);
Итак:
// 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)
eg
$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 data
$handle = fopen( $tempfile, "w");
fwrite( $handle, $content );
// $fullpath is the path you wanna pass to your function
$xmail->addAttachment( $fullpath, $content );
$mail-> addStringAttachment ($ content, $ filename);
работает очень хорошо для меня.
Для полной справки: http://phpmailer.github.io/PHPMailer/classes/PHPMailer.PHPMailer.PHPMailer.html#method_addStringAttachment