CodeCharge Studio
search Register Login  

Visual PHP Web Development

Visually Create Internationalized Web Applications, Web Reports, Calendars, and more.
CodeCharge.com

YesSoftware Forums -> Archive -> GotoCode Archive

 Attachment to email

Print topic Send  topic

Author Message
Jerry Vernon
Posted: 09/19/2003, 2:57 AM

CCS2 + php + mysql

I would be great if any one has the code or working example of attaching a document to an email
Kitch
Posted: 09/19/2003, 5:37 AM

Try this - I found it on the net somewhere, but can't remember where. Should be enough to include it in the relevant code module, then call the functions as needed. It allows the sending of emails as text or html, with our without attachments, or embedded images.
It works a treat in the mailshot module I'm building at the moment ...


<?php

/*

Amended 20/02/2002 to include embeded images in html.

email_html_wa & email_multi_wa are now capable of using embeded images.

Include file holds 6 classes each extensions of email_txt

email_txt - Text email no attachments.
email_wa - Text email with attachments.
email_html - Html email no attachments.
email_html_wa - Html email with attachments.
email_multi - Multi part email html and text.
email_multi_wa - Multi part email html and text with attachments.

All have the same prototype
(
from, - Sender of email
subject, - Subject of email
return address, - Address for failed emails to return to.
reply address, - Address for any replies to go to.
)

All classes have these functions

sendmail(recipient)
- Sends the email to the supplied email address
- the email address is checked for domain existance.
setheaders()
- Creates the headers ready for transmission.
clean()
- Removes any message and headers already set.
- Useful for sending different emails.
addmessage(message)
- Add the message to the email.

classes email_multi and email_multi_wa use this version of addmessage instead
of the above.
addmessage(text, html)
- text is the text part of the email and html holds
- the html alternative.

Classes email_wa, email_html_wa and email_multi_wa also have

attach(filename)
- This will add an attachment to the email.
- filename is the full pathname to the file.

embed_image(filename, imageid)
- Embeds an image in the email usefull for
sending html emails with images that can be
viewed offline.

examples of use:

text email

$email=new email_txt("from@me.com", "Test Email");
$email->clean();
$email->setheaders();
$email->addmessage("Hello");
$email->sendmail("you@your.email");

text email with attachment

$email=new email_txt_wa("from@me.com", "Test Email");
$email->clean();
$email->setheaders();
$email->addmessage("Hello");
$email->attach("/path/to/file/filename");
$email->sendmail("you@your.email");

HTML email

$email=new email_html("from@me.com", "Test Email");
$email->clean();
$email->setheaders();
$email->addmessage("<B>Hello<B>");
$email->sendmail("you@your.email");

HTML email with attachment

$email=new email_html("from@me.com", "Test Email");
$email->clean();
$email->setheaders();
$email->addmessage("<B>Hello<B>");
$email->attach("/path/to/file/filename");
$email->sendmail("you@your.email");

Multipart email

$email=new email_multi("from@me.com", "Test Email");
$email->clean();
$email->setheaders();
$email->addmessage("hello", "<B>Hello<B>");
$email->sendmail("you@your.email");

Multipart email with attachment

$email=new email_multi_wa("from@me.com", "Test Email");
$email->clean();
$email->setheaders();
$email->addmessage("hello", "<B>Hello<B>");
$email->attach("/path/to/file/filename");
$email->sendmail("you@your.email");

HTML email with embeded image

$email=new email_html_wa("from@me.com", "Test Email");
$email->clean();
$email->setheaders();
$email->addmessage("<IMG src=\"cid:pic1.1a\"");
$email->embed_image("/path/to/file/filename", "pic1.1a");
$email->sendmail("you@your.email");

Multipart email with embeded image

$email=new email_multi_wa("from@me.com", "Test Email");
$email->clean();
$email->setheaders();
$email->addmessage("<IMG src=\"cid:pic1.1a\"");
$email->embed_image("/path/to/file/filename", "pic1.1a");
$email->sendmail("you@your.email");

*/

class email_txt
{
var $subject; // email subject
var $bound; // email boundary
var $from; // from address
var $headers; // message headers
var $message; // email message
var $retadd; // return address
var $replyto; // reply address

function email_txt($from="nobody@localhost", $subj="Email for you", $retadd="nobody@localhost", $replyto="nobody@localhost")
{
$bound="----=_NextPart_000_" . uniqid(rand());
$this->message="";
$this->bound=$bound;
$this->subject=$subj;
$this->retadd=$retadd;
$this->replyto=$replyto;
$this->from=$from;
}

function sendmail($rcpt)
{
list($name, $domain)=explode("@", $rcpt);
$retval=checkdnsrr($domain, ANY);
if ( (!$retval) || (empty($name)) || (empty($domain)) )
{
echo "Invalid email address ".$rcpt.".<BR>";
return(0);
}
$retval=mail($rcpt, $this->subject, "", $this->headers.$this->message);
return($retval);
}

function setheaders()
{
unset($headers);
$headers="Errors: <".$this->retadd.">\n";
$headers.="From: <".$this->from.">\n";
$headers.="MIME-Version: 1.0\n";
$headers.="Return-Path: <".$this->retadd.">\n";
$headers.="Reply-To: <".$this->replyto.">\n";
$headers.="Content-Transfer-Encoding: 7bit\n";
$headers.="Content-Type:text/plain; charset=us-ascii\n\n";

unset($this->headers);
$this->headers=$headers;
}

function clean()
{
$this->message="";
$this->headers="";
}

function addmessage($messin)
{
if ( !empty($messin) )
{
$this->message.=$messin."\n";
}
}

}

class email_html extends email_txt
{
function email_html($from="nobody@localhost", $subj="Email for you", $retadd="nobody@localhost", $replyto="nobody@localhost")
{
$bound="----=_NextPart_000_" . uniqid(rand());
$this->message="";
$this->bound=$bound;
$this->subject=$subj;
$this->retadd=$retadd;
$this->replyto=$replyto;
$this->from=$from;
}

function setheaders()
{
unset($headers);
$headers.="Errors: <".$this->retadd.">\n";
$headers.="From: <".$this->from.">\n";
$headers.="X-Mailer: PHP\n";
$headers.="X-Sender: <".$this->from.">\n";
$headers.="X-Priority: 1\n";
$headers.="Return-Path: <".$this->retadd.">\n";
$headers.="Reply-To: <".$this->replyto.">\n";
$headers.="Content-Type:text/html; charset=iso-8859-1\n\n";

$this->message=$headers;
}

}

class email_wa extends email_txt
{
function email_wa($from="nobody@localhost", $subj="Email for you", $retadd="nobody@localhost", $replyto="nobody@localhost")
{
$bound="----=_NextPart_000_" . uniqid(rand());
$this->message="";
$this->bound=$bound;
$this->subject=$subj;
$this->retadd=$retadd;
$this->replyto=$replyto;
$this->from=$from;
}

function sendmail($rcpt)
{
list($name, $domain)=explode("@", $rcpt);
$retval=checkdnsrr($domain, ANY);
if ( (!$retval) || (empty($name)) || (empty($domain)) )
{
echo "Invalid email address ".$rcpt.".<BR>";
return(0);
}
$this->message.="\n\n--".$this->bound."--\n";
$retval=mail($rcpt, $this->subject, "", $this->message);
return($retval);
}

function setheaders()
{
unset($headers);
$headers.="Errors: <".$this->retadd.">\n";
$headers.="From: <".$this->from.">\n";
$headers.="MIME-Version: 1.0\n";
$headers.="Return-Path: <".$this->retadd.">\n";
$headers.="Reply-To: <".$this->replyto.">\n";
$headers.="Content-Type: multipart/mixed;boundary=\"".$this->bound."\"\n";
$headers.="Content-Transfer-Encoding: 7bit\n";
$headers.="\n\n--".$this->bound."\n";
$headers.="Content-Type:text/plain; charset=us-ascii\n\n";

$this->message=$headers;
}

function attach($attch)
{
$bits=explode("/", $attch);
$thisfile=$bits[(count($bits)-1)];
unset($line);
$line.="\n\n--".$this->bound."\n";
$line.="Content-Type: application/octet-stream; name=\"$thisfile\"\n";
$line.="Content-Transfer-Encoding: base64\n\n\n";

$filename=$attch;

$linein=`uuencode -m $filename fred`;

$lines=explode("\n", $linein);
for ( $loop=1; $loop<count($lines); $loop++ )
{
$line.=$lines[$loop]."\n\r";
}

$line.="\n\n";

$this->message.=$line;
}

}

class email_html_wa extends email_wa
{
function email_html_wa($from="nobody@localhost", $subj="Email for you", $retadd="nobody@localhost", $replyto="nobody@localhost")
{
$bound="----=_NextPart_000_" . uniqid(rand());
$this->message="";
$this->bound=$bound;
$this->subject=$subj;
$this->retadd=$retadd;
$this->replyto=$replyto;
$this->from=$from;
}

function setheaders()
{
unset($headers);
$headers.="Errors: <".$this->retadd.">\n";
$headers.="From: <".$this->from.">\n";
$headers.="MIME-Version: 1.0\n";
$headers.="Return-Path: <".$this->retadd.">\n";
$headers.="Reply-To: <".$this->replyto.">\n";
$headers.="Content-Type: multipart/mixed;boundary=\"".$this->bound."\"\n";
$headers.="Content-Transfer-Encoding: 7bit\n";
$headers.="\n\n--".$this->bound."\n";
$headers.="Content-Type:text/html; charset=iso-8859-1\n\n";

$this->message=$headers;
}

function addmessage($messin)
{
if ( !empty($messin) )
{
$this->message.=$messin."\n";
}
}

function embed_image($img_path, $img_name)
{
unset($line);
unset($bits);
$bits=explode("/", $img_path);
$filename=$bits[(count($bits)-1)];
unset($bits);
$bits=explode(".", $img_path);
$line.="\n\n--".$this->bound."\n";
$line.="Content-Type: image/".$bits[1]."\n";
$line.="Content-ID: ".$img_name."\n";
$line.="Content-Disposition: inline; filename=\"".$filename."\"\n";
$line.="Content-Transfer-Encoding: base64\n\n\n";

$linein=`uuencode -m $img_path fred`;

$lines=explode("\n", $linein);
for ( $loop=1; $loop<count($lines); $loop++ )
{
$line.=$lines[$loop]."\n\r";
}

$line.="\n\n";

$this->message.=$line;
}

}

class email_multi extends email_txt
{

function email_multi($from="nobody@localhost", $subj="Email for you", $retadd="nobody@localhost", $replyto="nobody@localhost")
{
$bound="----=_NextPart_000_" . uniqid(rand());
$this->bound=$bound;
$this->subject=$subj;
$this->retadd=$retadd;
$this->replyto=$replyto;
$this->from=$from;
}

function addmessage($text, $html)
{
unset($message);
// text
$message .= "--$this->bound\n";
$message .= "Content-Type: text/plain; \n\tcharset=\"iso-8859-1\"\r\n";
$message .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$message .= $text . "\n";

// html
$message .= "--$this->bound\r\n";
$message .= "Content-Type: text/html; \n\tcharset=\"iso-8859-1\"\r\n";
$message .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$message .= $html;

$message .= "\r\n--$this->bound--";

$this->message=$message;
}

function setheaders()
{
unset($headers);
$headers="From: $from <$this->from>\r\n";
$headers.="X-Sender: <$this->from>\r\n";
$headers.="X-Mailer: TLGExtranet\r\n";
$headers.="Return-Path: <$this->from>\r\n";
$headers.="Mime-Version: 1.0\n";
$headers.="Content-Type: multipart/alternative; boundary=\"$this->bound\"\r\n";
$headers.="X-Priority: 1\r\n";
$this->headers=$headers;
}
}

class email_multi_wa extends email_txt
{

function email_multi($from="nobody@localhost", $subj="Email for you", $retadd="nobody@localhost", $replyto="nobody@localhost")
{
$bound="----=_NextPart_000_" . uniqid(rand());
$this->bound=$bound;
$this->subject=$subj;
$this->retadd=$retadd;
$this->replyto=$replyto;
$this->from=$from;
}

function addmessage($text, $html)
{
unset($message);
// text
$message .= "--$this->bound\n";
$message .= "Content-Type: text/plain; \n\tcharset=\"iso-8859-1\"\r\n";
$message .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$message .= $text . "\n";

// html
$message .= "--$this->bound\r\n";
$message .= "Content-Type: text/html; \n\tcharset=\"iso-8859-1\"\r\n";
$message .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$message .= $html;

$this->message=$message;
}

function setheaders()
{
unset($headers);
$headers="From: $from <$this->from>\r\n";
$headers.="X-Sender: <$this->from>\r\n";
$headers.="X-Mailer: TLGExtranet\r\n";
$headers.="Return-Path: <$this->from>\r\n";
$headers.="Mime-Version: 1.0\n";
$headers.="Content-Type: multipart/alternative; boundary=\"$this->bound\"\r\n";
$headers.="X-Priority: 1\r\n";
$this->headers=$headers;
}

function sendmail($rcpt)
{
list($name, $domain)=explode("@", $rcpt);
$retval=checkdnsrr($domain, ANY);
if ( (!$retval) || (empty($name)) || (empty($domain)) )
{
echo "Invalid email address ".$rcpt.".<BR>";
return(0);
}
$this->message.="\r\n--$this->bound--";

$retval=mail($rcpt, $this->subject, "", $this->headers.$this->message);
return($retval);
}

function attach($attch)
{
$bits=explode("/", $attch);
$thisfile=$bits[(count($bits)-1)];
unset($line);
$line.="\n\n--".$this->bound."\r\n";
$line.="Content-Type: application/octet-stream; name=\"$thisfile\"\r\n";
$line.="Content-Transfer-Encoding: base64\r\n\r\n";

$filename=$attch;

$linein=`uuencode -m $filename fred`;

$lines=explode("\n", $linein);
for ( $loop=1; $loop<count($lines); $loop++ )
{
$line.=$lines[$loop]."\n\r";
}

$line.="\n\n";

$this->message.=$line;
}

function embed_image($img_path, $img_name)
{
unset($line);
unset($bits);
$bits=explode("/", $img_path);
$filename=$bits[(count($bits)-1)];
unset($bits);
$bits=explode(".", $img_path);
$line.="\n\n--".$this->bound."\n";
$line.="Content-Type: image/".$bits[1]."\n";
$line.="Content-ID: ".$img_name."\n";
$line.="Content-Disposition: inline; filename=\"".$filename."\"\n";
$line.="Content-Transfer-Encoding: base64\n\n\n";

$linein=`uuencode -m $img_path fred`;

$lines=explode("\n", $linein);
for ( $loop=1; $loop<count($lines); $loop++ )
{
$line.=$lines[$loop]."\n\r";
}

$line.="\n\n";

$this->message.=$line;
}


}

?>




Regards,

Kitch

   


These are Community Forums for users to exchange information.
If you would like to obtain technical product help please visit http://support.yessoftware.com.

Internet Database

Visually create Web enabled database applications in minutes.
CodeCharge.com

Home   |    Search   |    Members   |    Register   |    Login


Powered by UltraApps Forum created with CodeCharge Studio
Copyright © 2003-2004 by UltraApps.com  and YesSoftware, Inc.