473,225 Members | 1,259 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,225 software developers and data experts.

PHP to email (with optional attachements) expert required

Hi there,

Previously in my PHP code I was using Sendmail to send out emails to people
in the MySQL DB. The requirement cam along to be able to send attachments
and so I dug around for an easy bit of code that did not need classes and I
could plug easily into my PHP code.

I thought I found one (see bottom of email), however I have since discovered
that as it is, this script has the following disadvantages when compared to
using Sendmail as I used to:

1. Sendmail sent out plaintext emails however if there was text that was
like www.example.com then the code would still appear as a link in many
plain text readers. This does not seem to happen when sent using the below
script. Anyone understand why?
(Note: I use the $Text parameter rather then the $HTML one because I need to
assume customers will only have plain text email readers. I also did try
putting the body of the email into both Text and HTML but I ended up
receiving the email twice with the HTML version losing many carriage returns
etc.).

2. With send mail if the delivery address did not exist, we would get an
email bounce back. This does not seem to happen with below despite my
tweaking attempts. Anyone know why this would be?

I may have some more but issues but wont confuse for now any comments
appreciated and please see the code below.

Thanks


*******Custom - insertable sendmail code - very handy if I could fully get
it to work the way I want it to*****

function
SendMail($From,$FromName,$To,$ToName,$Subject,$Tex t,$Html,$AttmFiles){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Html:preg_replace("/\n/","<br>",$Text)
or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
$From or die("sender address missing");
$To or die("recipient address missing");

$headers ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
#$headers.="To: ".$To."\n";
#$headers.="Reply-To: ".$FromName." <".$From.">\n";
#Prioriry 3 = normal 1 = high - apparently s- shouldlook more into thi
#$headers.="X-Priority: 1\n";
#$headers.="X-MSMail-Priority: High\n";
#$headers.="X-MSMail-Priority: Normal\n";
$headers.="X-Mailer: My PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";

//Messages start with text/html alternatives in OB
$Msg ="This is a multi-part message in MIME format.\n";
$Msg.="\n--".$OB."\n";
$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";

//plaintext section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";

// html section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: base64\n\n";
// html goes here
$Msg.=chunk_split(base64_encode($Html))."\n\n";

// end of IB
$Msg.="\n--".$IB."--\n";

// attachments
if($AttmFiles){
foreach($AttmFiles as $AttmFile){
$patharray = explode ("/", $AttmFile);
$FileName=$patharray[count($patharray)-1];
$Msg.= "\n--".$OB."\n";
$Msg.="Content-Type:
application/octetstream;\n\tname=\"".$FileName."\"\n";
$Msg.="Content-Transfer-Encoding: base64\n";
$Msg.="Content-Disposition:
attachment;\n\tfilename=\"".$FileName."\"\n\n";

//file goes here
$fd=fopen ($AttmFile, "r");
$FileContent=fread($fd,filesize($AttmFile));
fclose ($fd);
$FileContent=chunk_split(base64_encode($FileConten t));
$Msg.=$FileContent;
$Msg.="\n\n";
}
}

//message ends
$Msg.="\n--".$OB."--\n";
#mail($To,$Subject,$Msg,$headers);
mail("",$Subject,$Msg,$headers);
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}
Jul 17 '05 #1
3 1655
Dave Smithz wrote:
Hi there,

Previously in my PHP code I was using Sendmail to send out emails to people
in the MySQL DB. The requirement cam along to be able to send attachments
and so I dug around for an easy bit of code that did not need classes and I
could plug easily into my PHP code.

I thought I found one (see bottom of email), however I have since discovered
that as it is, this script has the following disadvantages when compared to
using Sendmail as I used to:

1. Sendmail sent out plaintext emails however if there was text that was
like www.example.com then the code would still appear as a link in many
plain text readers. This does not seem to happen when sent using the below
script. Anyone understand why? whether a string such as 'www.example.com' is displayed as an HTML link
depends on the email client ('reader') not on the email.
(Note: I use the $Text parameter rather then the $HTML one because I need to
assume customers will only have plain text email readers. I also did try
putting the body of the email into both Text and HTML but I ended up
receiving the email twice with the HTML version losing many carriage returns
etc.).

2. With send mail if the delivery address did not exist, we would get an
email bounce back. This does not seem to happen with below despite my
tweaking attempts. Anyone know why this would be?

I may have some more but issues but wont confuse for now any comments
appreciated and please see the code below.

Thanks


i'd recommend using phpMailer, available from
http://phpmailer.sourceforge.net/. does the job. simple to use. what
more could you want?

sadara
Jul 17 '05 #2
"Dave Smithz" <SPAM FREE WORLD> wrote in
news:42********@news1.homechoice.co.uk:

I may have some more but issues but wont confuse for now any comments
appreciated and please see the code below.


take five minutes and tweak this to your exact liking:

http://www.phpclasses.org/browse/package/9.html

it's just amazing.
Jul 17 '05 #3

"Sadara" <sa*********@NOWAYdds.nl> wrote in message
news:42*********************@news.xs4all.nl...
i'd recommend using phpMailer, available from
http://phpmailer.sourceforge.net/. does the job. simple to use. what
more could you want?

What can I say. So far, so d*rn amazing!!!. I was scared off normally by
the fact that you download lots of files and was not familiar with PHP
classes.

Easy when you try (well seems so, so far).

Thanks
Jul 17 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: siliconpiNOSPAM | last post by:
Hi, I'm writing a program that should accept the following parameters: XMLfile (required) Logfile (required) /A (append flag, optional) /D 123 (delay value, optional, but # should follow /D...
0
by: Lokkju | last post by:
I am pretty much lost here - I am trying to create a managed c++ wrapper for this dll, so that I can use it from c#/vb.net, however, it does not conform to any standard style of coding I have seen....
4
by: JJ | last post by:
Whats the most compatilbe way of sending an email ?- I need to consider that the OS may be win 98/win NT/Win 2000/winXP. I was constructing a mailto command, but the contents of the text file I...
14
by: cody | last post by:
I got a similar idea a couple of months ago, but now this one will require no change to the clr, is relatively easy to implement and would be a great addition to C# 3.0 :) so here we go.. To...
1
by: Tookelso | last post by:
Hello, I would like to have a group of elements which are *required* in one context, but each one is *optional* in another context. For example: I have a configuration file which has a...
2
by: Alan T | last post by:
I recently programming Word application/document in CSharp but got several problem. Any pointer to get started?
7
by: Sam Shrefler | last post by:
I'm working on creating a WebService / WebMethod to receive a record in real time from another system. The record contains about 20 fields. 10 of which aren't required. I was planning on just...
1
by: Dave | last post by:
I have multiple forms that will create an object. Basically a energy efficiency measure object. The measure object will have a couple of required properties set but after that it can have 10-20...
2
by: kennykenn | last post by:
Hi, Ive producd code to send an email after capturing info off a form,it works fine locally but when i put it live it doesnt work! the code is stopin at 'msg.send' any ideas, here the code! ...
0
by: veera ravala | last post by:
ServiceNow is a powerful cloud-based platform that offers a wide range of services to help organizations manage their workflows, operations, and IT services more efficiently. At its core, ServiceNow...
0
by: VivesProcSPL | last post by:
Obviously, one of the original purposes of SQL is to make data query processing easy. The language uses many English-like terms and syntax in an effort to make it easy to learn, particularly for...
0
by: jianzs | last post by:
Introduction Cloud-native applications are conventionally identified as those designed and nurtured on cloud infrastructure. Such applications, rooted in cloud technologies, skillfully benefit from...
0
by: mar23 | last post by:
Here's the situation. I have a form called frmDiceInventory with subform called subfrmDice. The subform's control source is linked to a query called qryDiceInventory. I've been trying to pick up the...
0
by: abbasky | last post by:
### Vandf component communication method one: data sharing ​ Vandf components can achieve data exchange through data sharing, state sharing, events, and other methods. Vandf's data exchange method...
2
by: jimatqsi | last post by:
The boss wants the word "CONFIDENTIAL" overlaying certain reports. He wants it large, slanted across the page, on every page, very light gray, outlined letters, not block letters. I thought Word Art...
2
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 7 Feb 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:30 (7.30PM). In this month's session, the creator of the excellent VBE...
0
Git
by: egorbl4 | last post by:
Скачал я git, хотел начать настройку, а там вылезло вот это Что это? Что мне с этим делать? ...
0
by: MeoLessi9 | last post by:
I have VirtualBox installed on Windows 11 and now I would like to install Kali on a virtual machine. However, on the official website, I see two options: "Installer images" and "Virtual machines"....

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.