tags:

views:

48

answers:

1

Hello All....

I have a requirement of sending mail using smtp server in php.

Now I am able to send the mail using smtp for a plain text.

but I have a requirement where I need to attach an HTML page, which includes set of images.

Now for that I am trying the following code :

<?php
require_once "Mail.php";
$to      = '[email protected]';
$from    = '[email protected]';
$subject = $_POST['subject'];
$body = $_POST['message'];

$fileatt      = $_FILES['fileatt']['tmp_name'];
$fileatt_type = $_FILES['fileatt']['type'];
$fileatt_name = $_FILES['fileatt']['name'];

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

if (is_uploaded_file($fileatt)) {
    echo("<p>Inside 1</p>");
    $file = fopen($fileatt,'rb');
    $data = fread($file,filesize($fileatt));
    fclose($file);

    // Generate a boundary string
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    array_push(&$headers, 'MIME-Version: 1.0');
    array_push(&$headers, 'Content-Type: multipart/mixed;');
    array_push(&$headers, " boundary=\"{$mime_boundary}\"");

    echo("<p>Inside 2</p>");

    $body = "This is a multi-part message in MIME format.\n\n" .
             "--{$mime_boundary}\n" .
             "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
             "Content-Transfer-Encoding: 7bit\n\n" .
    $body . "\n\n";

    echo("<p>Inside 3</p>");

    $data = chunk_split(base64_encode($data));

    echo("<p>Inside 4</p>");

    $body .= "--{$mime_boundary}\n" .
              "Content-Type: {$fileatt_type};\n" .
              " name=\"{$fileatt_name}\"\n" .
              "Content-Transfer-Encoding: base64\n\n" .
    $data . "\n\n" .
              "--{$mime_boundary}--\n";

    echo("<p>Inside 5</p>");
}
$host = "[email protected]";
$username = "[email protected]";
$password = "user";
$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>");
}
?>

Now this code works fine for me, and it's sending the mail to the target email address.

But when I open this email in the inbox, it's showing me the following text in the mailbox:

This is a multi-part message in MIME format.

--==Multipart_Boundary_x368d72fe1ff44518e90537abdb4bf029x
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

test 1011

--==Multipart_Boundary_x368d72fe1ff44518e90537abdb4bf029x
Content-Type: text/html;
 name="mailing.html"
Content-Transfer-Encoding: base64

PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhl
YWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCIgLz4NCjx0aXRsZT5QZWVrYWJvb0JlYW5zPC90aXRsZT4NCjxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+DQo8IS0tDQpib2R5IA0KYTpsaW5rIHsNCgl0ZXh0LWRlY29yYXRpb246
IG5vbmU7DQp9DQphOnZpc2l0ZWQgew0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCn0NCmE6aG92
ZXIgew0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCn0NCmE6YWN0aXZlIHsNCgl0ZXh0LWRlY29y
YXRpb246IG5vbmU7DQp9DQotLT4NCjwvc3R5bGU+PC9oZWFkPg0KDQo8Ym9keSBzdHlsZT0ibWFy
Z2luLWxlZnQ6IDBweDsNCgltYXJnaW4tdG9wOiAwcHg7DQoJbWFyZ2luLXJpZ2h0OiAwcHg7DQoJ
bWFyZ2luLWJvdHRvbTogMHB4OyI+DQo8dGFibGUgd2lkdGg9IjEwMjQiIGJvcmRlcj0iMCIgYWxp
Z249ImNlbnRlciIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBiZ2NvbG9yPSIjNjUy
QzhBIj4NCiAgPHRyPg0KICAgIDx0ZCB3aWR0aD0iMTAyNCIgaGVpZ2h0PSI3NjIiICBhbGlnbj0i
Y2VudGVyIiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzY1MkM4QSI+PGltZyBzcmM9ImltYWdlcy9z
dWJzY3JpYmVyLWh0bWxfMDEuanBnIiB3aWR0aD0iMTAyNCIgaGVpZ2h0PSI3NjIiIGFsdD0iIj48
L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHdpZHRoPSIxMDI0IiBoZWlnaHQ9Ijk1IiBh
bGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiID48aW1nIHNyYz0iaW1hZ2VzL3N1YnNjcmliZXItaHRt
bF8wMi5qcGciIHdpZHRoPSIxMDI0IiBoZWlnaHQ9Ijk1IiBhbHQ9IiI+PC90ZD4NCiAgPC90cj4N
CiAgPHRyPg0KICAgIDx0ZCB3aWR0aD0iMTAyNCIgaGVpZ2h0PSI2NCJhbGlnbj0ibGVmdCIgdmFs
aWduPSJ0b3AiID48aW1nIHNyYz0iaW1hZ2VzL3N1YnNjcmliZXItaHRtbF8wMy5qcGciIHdpZHRo
PSIxMDI0IiBoZWlnaHQ9IjY0IiBhbHQ9IiI+PC90ZD4NCiAgPC90cj4NCiAgPHRyPg0KICAgIDx0
ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRk
aW5nPSIwIj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIHdpZHRoPSI2NTEiIGhlaWdodD0iNDEi
IGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltYWdlcy9zdWJzY3JpYmVyLWh0
bWxfMDQuanBnIiB3aWR0aD0iNjUxIiBoZWlnaHQ9IjQxIiBhbHQ9IiI+PC90ZD4NCiAgICAgICAg
PHRkIHdpZHRoPSIyNjgiIGhlaWdodD0iNDEiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGEg
aHJlZj0iaHR0cDovL3d3dy5wZWVrYWJvb2JlYW5zLmNvbS9hYm91dC5odG1sIj48aW1nIHNyYz0i
aW1hZ2VzL3N1YnNjcmliZXItaHRtbF8wNS5qcGciIGFsdD0iIiB3aWR0aD0iMjY4IiBoZWlnaHQ9
IjQxIiBib3JkZXI9IjAiPjwvYT48L3RkPg0KICAgICAgICA8dGQgd2lkdGg9IjEwNSIgaGVpZ2h0
PSI0MSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIiA+PGltZyBzcmM9ImltYWdlcy9zdWJzY3Jp
YmVyLWh0bWxfMDYuanBnIiB3aWR0aD0iMTA1IiBoZWlnaHQ9IjQxIiBhbHQ9IiI+PC90ZD4NCiAg
ICAgIDwvdHI+DQogICAgPC90YWJsZT48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIHdp
ZHRoPSIxMDI0IiBoZWlnaHQ9IjM4IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjxpbWcgc3Jj
PSJpbWFnZXMvc3Vic2NyaWJlci1odG1sXzA3LmpwZyIgICBhbHQ9IiI+PC90ZD4NCiAgPC90cj4N
CiAgPHRyPg0KICAgIDx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNp
bmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIHdpZHRoPSI1
MSIgaGVpZ2h0PSI0NiIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iaW1hZ2Vz
L3N1YnNjcmliZXItaHRtbF8wOC5qcGciIHdpZHRoPSI1MSIgaGVpZ2h0PSI0NiIgYWx0PSIiPjwv
dGQ+DQogICAgICAgIDx0ZCB3aWR0aD0iMTY2IiBoZWlnaHQ9IjQ2IiBhbGlnbj0ibGVmdCIgdmFs
aWduPSJ0b3AiID48YSBocmVmPSJodHRwOi8vd3d3LnBlZWthYm9vYmVhbnMuY29tL3Rlc3RpbW9u
aWFscy5odG1sIj48aW1nIHNyYz0iaW1hZ2VzL3N1YnNjcmliZXItaHRtbF8wOS5qcGciIGFsdD0i
IiB3aWR0aD0iMTY2IiBoZWlnaHQ9IjQ2IiBib3JkZXI9IjAiPjwvYT48L3RkPg0KICAgICAgICA8
dGQgd2lkdGg9IjU2MiIgaGVpZ2h0PSI0NiIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48aW1n
IHNyYz0iaW1hZ2VzL3N1YnNjcmliZXItaHRtbF8xMC5qcGciIHdpZHRoPSI1NjIiIGhlaWdodD0i
NDYiIGFsdD0iIj48L3RkPg0KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48
YSBocmVmPSJodHRwOi8vd3d3LnBlZWthYm9vYmVhbnMuY29tL3NwaWxsX3RoZV9iZWFucy5odG1s
Ij48aW1nIHNyYz0iaW1hZ2VzL3N1YnNjcmliZXItaHRtbF8xMS5qcGciIGFsdD0iIiB3aWR0aD0i
MjA4IiBoZWlnaHQ9IjQ2IiBib3JkZXI9IjAiPjwvYT48L3RkPg0KICAgICAgICA8dGQgd2lkdGg9
IjM3IiBoZWlnaHQ9IjQ2IiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiID48aW1nIHNyYz0iaW1h
Z2VzL3N1YnNjcmliZXItaHRtbF8xMi5qcGciIHdpZHRoPSIzNyIgaGVpZ2h0PSI0NiIgYWx0PSIi
PjwvdGQ+DQogICAgICA8L3RyPg0KICAgIDwvdGFibGU+PC90ZD4NCiAgPC90cj4NCiAgPHRyPg0K
ICAgIDx0ZCB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMTgiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRv
cCI+PGltZyBzcmM9ImltYWdlcy9zdWJzY3JpYmVyLWh0bWxfMTMuanBnIiB3aWR0aD0iMTAyNCIg
aGVpZ2h0PSIxMTgiIGFsdD0iIj48L3RkPg0KICA8L3RyPg0KICA8dHI+DQogICAgPHRkIGFsaWdu
PSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxz
cGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICA8dHI+DQogICAgICAgIDx0ZCBhbGln
bj0ibGVmdCIgdmFsaWduPSJ0b3AiIHdpZHRoPSI0MTQiIGhlaWdodD0iMzkiID48aW1nIHNyYz0i
aW1hZ2VzL3N1YnNjcmliZXItaHRtbF8xNC5qcGciIHdpZHRoPSI0MTQiIGhlaWdodD0iMzkiIGFs
dD0iIj48L3RkPg0KICAgICAgICA8dGQgd2lkdGg9IjM2NSIgaGVpZ2h0PSIzOSIgYWxpZ249Imxl
ZnQiIHZhbGlnbj0idG9wIiA+PGltZyBzcmM9ImltYWdlcy9zdWJzY3JpYmVyLWh0bWxfMTUuanBn
IiB3aWR0aD0iMzY1IiBoZWlnaHQ9IjM5IiBhbHQ9IiI+PC90ZD4NCiAgICAgICAgPHRkIHdpZHRo
PSIyNDUiIGhlaWdodD0iMzkiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9Imlt
YWdlcy9zdWJzY3JpYmVyLWh0bWxfMTYuanBnIiB3aWR0aD0iMjQ1IiBoZWlnaHQ9IjM5IiBhbHQ9
IiI+PC90ZD4NCiAgICAgIDwvdHI+DQogICAgPC90YWJsZT48L3RkPg0KICA8L3RyPg0KICA8dHI+
DQogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHRhYmxlIHdpZHRoPSIxMDAlIiBi
b3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQogICAgICA8dHI+DQog
ICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIHdpZHRoPSI0MTQiIGhlaWdodD0i
NjAiID48aW1nIHNyYz0iaW1hZ2VzL3N1YnNjcmliZXItaHRtbF8xNy5qcGciIHdpZHRoPSI0MTQi
IGhlaWdodD0iNjAiIGFsdD0iIj48L3RkPg0KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGln
bj0idG9wIiB3aWR0aD0iNjEwIiBoZWlnaHQ9IjYwIj48aW1nIHNyYz0iaW1hZ2VzL3N1YnNjcmli
ZXItaHRtbF8xOC5qcGciIHdpZHRoPSI2MTAiIGhlaWdodD0iNjAiIGFsdD0iIj48L3RkPg0KICAg
ICAgPC90cj4NCiAgICA8L3RhYmxlPjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgICA8dGQ+PHRh
YmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0i
MCI+DQogICAgICA8dHIgYmdjb2xvcj0iIzY1MkM4QSI+DQogICAgICAgIDx0ZCB3aWR0aD0iMjIx
IiBoZWlnaHQ9IjYyIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSJpbWFnZXMv
c3Vic2NyaWJlci1odG1sXzE5LmpwZyIgd2lkdGg9IjIyMSIgaGVpZ2h0PSI2MiIgYWx0PSIiPjwv
dGQ+DQogICAgICAgIDx0ZCB3aWR0aD0iODEiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIw
IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPg0KICAgICAgICAgIDx0cj4NCiAgICAg
ICAgICAgIDx0ZCB3aWR0aD0iODEiIGhlaWdodD0iNDIiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRv
cCI+PGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL3BlZWthYm9vYmVhbnMvIj48aW1nIHNyYz0i
aW1hZ2VzL3N1YnNjcmliZXItaHRtbF8yMC5qcGciIGFsdD0iIiB3aWR0aD0iODEiIGhlaWdodD0i
NDIiIGJvcmRlcj0iMCI+PC9hPjwvdGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+
DQogICAgICAgICAgICA8dGQgd2lkdGg9IjgxIiBoZWlnaHQ9IjIxIiAgYWxpZ249ImxlZnQiIHZh
bGlnbj0idG9wIiA+PGltZyBzcmM9ImltYWdlcy9zdWJzY3JpYmVyLWh0bWxfMjUuanBnIiB3aWR0
aD0iODEiIGhlaWdodD0iMjEiIGFsdD0iIj48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAg
IDwvdGFibGU+PC90ZD4NCiAgICAgICAgPHRkIHdpZHRoPSIzNDAiIGhlaWdodD0iNjMiIGFsaWdu
PSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltYWdlcy9zdWJzY3JpYmVyLWh0bWxfMjEu
anBnIiB3aWR0aD0iMzQwIiBoZWlnaHQ9IjYzIiBhbHQ9IiI+PC90ZD4NCiAgICAgICAgPHRkIHdp
ZHRoPSI2OSIgaGVpZ2h0PSI2MyIgPjxpbWcgc3JjPSJpbWFnZXMvc3Vic2NyaWJlci1odG1sXzIy
LmpwZyIgd2lkdGg9IjY5IiBoZWlnaHQ9IjYzIiBhbHQ9IiI+PC90ZD4NCiAgICAgICANCiAgICAg
ICAgPHRkIHdpZHRoPSI0NyIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj48dGFibGUgd2lkdGg9
IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4NCiAgICAg
ICAgICA8dHI+DQogICAgICAgICAgICA8dGQgd2lkdGg9IjQ3IiBoZWlnaHQ9IjQ4IiBhbGlnbj0i
bGVmdCIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL3BhZ2Vz
L1BlZWthYm9vLUJlYW5zLzE2ODgyMDU5NTA0MD9yZWY9c2VhcmNoJnNpZD02OTE4MDMxMTcuMTA3
ODQ2MDQ5NC4uMSI+PGltZyBzcmM9ImltYWdlcy9zdWJzY3JpYmVyLWh0bWxfMjMuanBnIiBhbHQ9
IiIgd2lkdGg9IjQ3IiBoZWlnaHQ9IjQ4IiBib3JkZXI9IjAiPjwvYT48L3RkPg0KICAgICAgICAg
IDwvdHI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkICB3aWR0aD0iNDciIGhlaWdo
dD0iMTUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltYWdlcy9zdWJzY3Jp
YmVyLWh0bWxfMjYuanBnIiB3aWR0aD0iNDciIGhlaWdodD0iMTUiIGFsdD0iIj48L3RkPg0KICAg
ICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+PC90ZD4NCiAgICAgICAgPHRkIHdpZHRoPSIy
NjYiIGhlaWdodD0iNjIiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9ImltYWdl
cy9zdWJzY3JpYmVyLWh0bWxfMjQuanBnIiB3aWR0aD0iMjY2IiBoZWlnaHQ9IjYyIiBhbHQ9IiI+
PC90ZD4NCiAgICAgIDwvdHI+DQogICAgPC90YWJsZT48L3RkPg0KICA8L3RyPg0KPC90YWJsZT4N
CjwvYm9keT4NCjwvaHRtbD4NCg==


--==Multipart_Boundary_x368d72fe1ff44518e90537abdb4bf029x--

So, it's clearly showing me the encoded data.

So, what should modify to send the proper html page that should be visible in targeted email's inbox?

Thanks in advance...

+1  A: 

Why do you want to reinvent the wheel? There's lots of different implementations that allow you to send HTML mail with attachments, ie. Zend_Mail, PHPMailer, ... . Use one of these, and save yourself from headaches.

wimvds