public function PHPMailer::addAttachment

5.x PHPMailer.php public PHPMailer::addAttachment( $path, $name = '', $encoding = self::ENCODING_BASE64, $type = '', $disposition = 'attachment' )

Add an attachment from a path on the filesystem. Never use a user-supplied path to a file! Returns false if the file could not be found or read. Explicitly *does not* support passing URLs; PHPMailer is not an HTTP client. If you need to do that, fetch the resource yourself and pass it in via a local file or string.

Parameters

string $path Path to the attachment:

string $name Overrides the attachment name:

string $encoding File encoding (see $Encoding):

string $type File extension (MIME) type:

string $disposition Disposition to use:

Return value

bool

Throws

Exception

File

inc/PHPMailer/src/PHPMailer.php, line 2833

Class

PHPMailer
PHPMailer - PHP email creation and transport class.

Namespace

PHPMailer\PHPMailer

Code

public function addAttachment(
$path, 
$name = '', 
$encoding = self::ENCODING_BASE64, 
$type = '', 
$disposition = 'attachment'
) {
  try {
    if (!static::isPermittedPath($path) || !@is_file($path)) {
      throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE);
    }

    // If a MIME type is not specified, try to work it out from the file name
    if ('' == $type) {
      $type = static::filenameToType($path);
    }

    $filename = static::mb_pathinfo($path, PATHINFO_BASENAME);
    if ('' == $name) {
      $name = $filename;
    }

    if (!$this->validateEncoding($encoding)) {
      throw new Exception($this->lang('encoding') . $encoding);
    }

    $this->attachment [] = [
      0 => $path,
      1 => $filename,
      2 => $name,
      3 => $encoding,
      4 => $type,
      5 => false, // isStringAttachment
      6 => $disposition,
      7 => $name,
    ];
  }
  catch (Exception $exc) {
    $this->setError($exc->getMessage());
    $this->edebug($exc->getMessage());
    if ($this->exceptions) {
      throw $exc;
    }

    return false;
  }

  return true;
}