クラスは初めてで、phpmailer クラスを使用する静的な電子メール クラスを作成しようとしています。
私がやりたいことは、次のようなものです...
Email::send('from', 'to', 'subject', 'html message'); // works
しかし、添付ファイルを追加したい場合...
Email::send('from', 'to', 'subject', 'html message')->attach('file/blah.txt');
これにより致命的なエラーがスローされます:Call to undefined method PHPMailer::attach()
理由は理解できますが、可能であれば、Email クラスに上記のコードを実行させる方法がわかりません。
以下は私が実験したものです。
class Email {
static $attach;
public static function send($from, $to, $subject, $message)
{
$email = new PHPmailer();
try {
$email->AddAddress($to);
$email->SetFrom($from);
$email->Subject = $subject;
$email->MsgHTML($message);
if (self::$attach) $email->AddAttachment(self::$attach);
$email->Send();
}
catch (phpmailerException $e)
{
return $e->errorMessage();
}
catch (Exception $e)
{
return $e->getMessage();
}
return $email;
}
public static function attach($attachment)
{
self::$attach = $_SERVER['DOCUMENT_ROOT'].$attachment;
}
}