Search code examples
phpsmtpemailemail-attachments

PHP: How to send email with attachment using smtp settings?


I am sending emails successfully using following code. But now I want to attach a text file (example: test.txt) with email. Any Idea?

require_once "Mail.php";

$from = "Usman <from@example.com>";
$to = "Naveed <to@example.com>";
$subject = "subject";
$body = "";

$host = "smtp.gmail.com";
$username = "username";
$password = "password";

$headers = array ('From' => $from,
      'To' => $to,
      'Subject' => $subject);

$smtp = Mail::factory( 'smtp', array('host' => $host,
          'auth' => true,
          'username' => $username,
          'password' => $password ) );

$mail = $smtp->send( $to, $headers, $body );

if ( PEAR::isError($mail) ) {
echo( "<p>" . $mail->getMessage() . "</p>" );
} else {
echo( "<p>Message successfully sent!</p>" );
}

Solution

  • Found this code as one of the first hits of the google://pear mail attachment search.

    include('Mail.php');
    include('Mail/mime.php');
    
    $text = 'Text version of email';
    $html = '<html><body>HTML version of email</body></html>';
    $file = './files/example.zip';
    $hdrs = array(
                  'From'    => 'someone@domain.pl',
                  'To'      => 'someone@domain.pl',
                  'Subject' => 'Test mime message'
                  );
    
    $mime = new Mail_mime();
    
    $mime->setTXTBody($text);
    $mime->setHTMLBody($html);
    
    $mime->addAttachment($file,'application/octet-stream');
    
    $body = $mime->get();
    $hdrs = $mime->headers($hdrs);
    
    $mail =& Mail::factory('mail', $params);
    $mail->send('mail@domain.pl', $hdrs, $body);