そう:
_// 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);
_
どうすれば同じように機能させることができるので、PHPmailerクラスからAddAttachment()
を呼び出すと、同じまたは同様のものを渡すことができるので、サーバー上に実際のファイルを置く必要はありません。送信しますか?
AddStringAttachment($string,$filename,$encoding,$type)
例えば
$mail = new PHPMailer();
$mail->AddStringAttachment($string,$filename,$encoding,$type);
そのAddAttachment()関数はバイトデータではなくパスを予期しているため、PHPを一時ファイル関数に変換してから、そのパス文字列を関数に渡す必要があります。
$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 );
$mail->addStringAttachment($content, $filename);
私にとってはとてもうまくいきます。