Re: [PHP] sending attachements with mail

2001-05-21 Thread Tolga \thorr\ Orhon

Yes you can do it, but it takes some time as you need to know MIME
extensions. It took 2 hours to implement just picture attachments. It will
surely be easier to use some kind of script but I couldnt find any that gets
attachments direcly (as I am getting attachments from MySql DB) so I did my
own.

--
Tolga 'thorr' Orhon

Mark Wouters [EMAIL PROTECTED] wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
 Nobody knows if it's possible to send attachements with mail()??

 Thanks,

 --
 Mark Wouters
 eXpanded Media
 Web Designer
 Parijsstraat 74, B-3000 Leuven - Louvain
 Tel: +32 (16) 31.10.12
 Fax: +32 (16) 31.10.19
 E-mail: [EMAIL PROTECTED]
 URL: http://www.expandedmedia.be



 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 To contact the list administrators, e-mail: [EMAIL PROTECTED]




-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP] sending attachements with mail

2001-05-21 Thread py

Here is a nice class that handles e-mail attachment.
Works fine for me.
py

// ==
// start code
// ==
?php

/* notes from Dan Potter:
Sure. I changed a few other things in here too though. One is that I let
you specify what the destination filename is (i.e., what is shows up as in
the attachment). This is useful since in a web submission you often can't
tell what the filename was supposed to be from the submission itself. I
also added my own version of chunk_split because our production version of
PHP doesn't have it. You can change that back or whatever though =).
Finally, I added an extra \n before the message text gets added into the
MIME output because otherwise the message text wasn't showing up.

/*
note: someone mentioned a command-line utility called 'mutt' that
can mail attachments.
*/

/*
If chunk_split works on your system, change the call to my_chunk_split
to chunk_split
*/

/* Note: if you don't have base64_encode on your sytem it will not work */

// =
// simple class that encapsulates mail() with addition of mime file
// attachment.
// =
class CMailFile {
var $subject;
var $addr_to;
var $text_body;
var $text_encoded;
var $mime_headers;
var $mime_boundary = --==_846811060==_;
var $smtp_headers;

function CMailFile($subject,$to,$from,$msg,$filename,$mimetype =
application/octet-stream, $mime_filename = false) {
 $this-subject = $subject;
 $this-addr_to = $to;
 $this-smtp_headers = $this-write_smtpheaders($from);
 $this-text_body = $this-write_body($msg);
 $this-text_encoded =
$this-attach_file($filename,$mimetype,$mime_filename);
 $this-mime_headers = $this-write_mimeheaders($filename, $mime_filename);
}

function attach_file($filename,$mimetype,$mime_filename) {
 $encoded = $this-encode_file($filename);
 if ($mime_filename) $filename = $mime_filename;
 $out = -- . $this-mime_boundary . \n;
 $out = $out . Content-type:  . $mimetype . ; name=\$filename\;\n;
 $out = $out . Content-Transfer-Encoding: base64\n;
 $out = $out . Content-disposition: attachment;
filename=\$filename\\n\n;
 $out = $out . $encoded . \n;
 $out = $out . -- . $this-mime_boundary . -- . \n;
 return $out;
 // added -- to notify email client attachment is done
}

function encode_file($sourcefile) {
 if (is_readable($sourcefile)) {
  $fd = fopen($sourcefile, r);
  $contents = fread($fd, filesize($sourcefile));
  $encoded = chunk_split(base64_encode($contents));
  fclose($fd);
 }
 return $encoded;
}

function sendfile() {
 $headers = $this-smtp_headers . $this-mime_headers;
 $message = $this-text_body . $this-text_encoded;
 mail($this-addr_to,$this-subject,$message,$headers);
}

function write_body($msgtext) {
 $out = -- . $this-mime_boundary . \n;
 $out = $out . Content-Type: text/plain; charset=\us-ascii\\n\n;
 $out = $out . $msgtext . \n;
 return $out;
}

function write_mimeheaders($filename, $mime_filename) {
 if ($mime_filename) $filename = $mime_filename;
 $out = MIME-version: 1.0\n;
 $out = $out . Content-type: multipart/mixed; ;
 $out = $out . boundary=\$this-mime_boundary\\n;
 $out = $out . Content-transfer-encoding: 7BIT\n;
 $out = $out . X-attachments: $filename;\n\n;
 return $out;
}

function write_smtpheaders($addr_from) {
 $out = From: $addr_from\n;
 $out = $out . Reply-To: $addr_from\n;
 $out = $out . X-Mailer: PHP3\n;
 $out = $out . X-Sender: $addr_from\n;
 return $out;
}
}

// usage - mimetype example image/gif
// $mailfile = new
CMailFile($subject,$sendto,$replyto,$message,$filename,$mimetype);
// $mailfile-sendfile();

// Splits a string by RFC2045 semantics (76 chars per line, end with \r\n).
// This is not in all PHP versions so I define one here manuall.
function my_chunk_split($str){
 $stmp = $str;
 $len = strlen($stmp);
 $out = ;
 while ($len  0) {
  if ($len = 76) {
   $out = $out . substr($stmp, 0, 76) . \r\n;
   $stmp = substr($stmp, 76);
   $len = $len - 76;
  }
  else {
   $out = $out . $stmp . \r\n;
   $stmp = ; $len = 0;
  }
 }
 return $out;
} // end script
?
// ==
// end code
// ==
- Original Message -
From: Tolga thorr Orhon [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Monday, May 21, 2001 3:47 PM
Subject: Re: [PHP] sending attachements with mail


 Yes you can do it, but it takes some time as you need to know MIME
 extensions. It took 2 hours to implement just picture attachments. It will
 surely be easier to use some kind of script but I couldnt find any that
gets
 attachments direcly (as I am getting attachments from MySql DB) so I did
my
 own.

 --
 Tolga 'thorr' Orhon

 Mark Wouters [EMAIL PROTECTED] wrote in message
 [EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
  Nobody knows if it's possible to send attachements with mail()??
 
  Thanks,
 
  --
  Mark Wouters
  eXpanded Media
  Web Designer
  Parijsstraat 74, B-3000 Leuven - Louvain
  Tel: +32 (16) 31.10.12
  Fax: +32 (16) 31.10.19
  E-mail

[PHP] sending attachements with mail

2001-05-19 Thread Mark Wouters

Nobody knows if it's possible to send attachements with mail()??

Thanks,

--
Mark Wouters
eXpanded Media
Web Designer
Parijsstraat 74, B-3000 Leuven - Louvain
Tel: +32 (16) 31.10.12
Fax: +32 (16) 31.10.19
E-mail: [EMAIL PROTECTED]
URL: http://www.expandedmedia.be



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]