Re: Attaching a file in mail()
| From: | Glenn Antoine | Date: | Sun, 22 Oct 2000 23:29:37 +0000 |
| Subject: | Re: Attaching a file in mail() | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-21672@lists.php.net to get a copy of this message | ||
When using this mime_mail class has anyone experienced difficulties in
getting GroupWise mail servers to handle their email properly. I have
been working trying to find the problem and not making any progress.
The problem is unanimous among anyone that is using GroupWise as their
email server. The only part of the email that they receive is the
header information (To, From and Subject). The remaining portion of the
email and any attachments are lost. Individuals that have email hosted
on other email servers all receive their email as advertised.
I have used this class in conjunction with the smtp_mail class, by
itself, with attachments, without attachments and just about every other
combination that I can think of with no success. If there were not so
many people that I need to send this to that are using GroupWise I would
have stopped troubleshooting this problem long ago. Thanks in advance
for your help and any suggestions would be greatly appreciated!!
-Glenn
It certainly is,
use this
<?
// store as "mime_mail.inc"
class mime_mail
{
var $parts;
var $to;
var $from;
var $cc;
var $headers;
var $subject;
var $body;
/*
* void mime_mail()
* class constructor
*/
function mime_mail() {
$this->parts = array();
$this->to = "";
$this->cc = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
}
/*
* void add_attachment(string message, [string name], [string
ctype])
* Add an attachment to the mail object
*/
function add_attachment($message, $name = "", $ctype =
"application/octet-stream") {
$this->parts[] = array (
"ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name
);
}
/*
* void build_message(array part=
* Build message parts of an multipart mail
*/
function build_message($part) {
$message = $part[ "message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part[ "ctype"].
($part[ "name"]? "; name = \"".$part[ "name"].
"\"" : "").
"\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}
/*
* void build_multipart()
* Build a multipart mail
*/
function build_multipart() {
$boundary = "b".md5(uniqid(time()));
$multipart =
"Content-Type: multipart/mixed; boundary = $boundary\n\nThis is
a
MIME encoded message.\n\n--$boundary";
for($i = sizeof($this->parts)-1; $i >= 0; $i--)
{
$multipart .= "\n".$this->build_message($this->parts[$i]).
"--$boundary";
}
return $multipart.= "--\n";
}
/*
* string get_mail()
* returns the constructed mail
*/
function get_mail($complete = true) {
$mime = "";
if (!empty($this->from))
$mime .= "From: ".$this->from. "\n";
if (!empty($this->headers))
$mime .= $this->headers. "\n";
if ($complete) {
if (!empty($this->to)) {
$mime .= "To: $this->to\n";
}
if (!empty($this->cc)) {
$mime .= "CC: $this->cc\n";
}
if (!empty($this->subject)) {
$mime .= "Subject: $this->subject\n";
}
}
if (!empty($this->body))
$this->add_attachment($this->body, "", "text/plain");
$mime .= "MIME-Version: 1.0\n".$this->build_multipart();
return $mime;
}
/*
* void send()
* Send the mail (last class-function to be called)
*/
function send() {
$mime = $this->get_mail(false);
mail($this->to, $this->subject, "", $mime);
}
}; // end of class
?>
use like this:
include "/mime_mail.inc";
$filename ="test.pdf";
$content_type = "application/pdf";
$fd = fopen($filename, "r");
$data = fread($fd, filesize($filename));
fclose($fd);
# create object instance
$mail = new mime_mail;
# set all data slots
$mail->from = "$email_from";
$mail->to = "$email_to";
$mail->subject = "Your Subject.";
$mail->body = "Your Body.";
# append the attachment
$mail->add_attachment($data, $filename, $content_type);
# send e-mail
$mail->send();
At 02:38 PM 10/21/00 +0500, you wrote:
>Is it possible to attach a file in PHP mail( )? If yes, how?
>
>Thanks
>
>
>
>--
>PHP General Mailing List (http://www.php.net/)
>To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
>For additional commands, e-mail: php-general-help@lists.php.net
>To contact the list administrators, e-mail:
php-list-admin@lists.php.net
>
>
>