2010-06-17 161 views
1

我有一個需要在php中使用smtp服務器發送郵件。發送郵件在PHP與HTML頁面附加作爲文本

現在我可以使用smtp發送純文本郵件了。

但我有一個要求,我需要附加一個HTML頁面,其中包括一組圖像。

現在對於我試圖下面的代碼:

<?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>"); 
} 
?> 

下面這段代碼工作正常,我和它發送郵件到目標郵件地址。

但是,當我在收件箱中打開該郵件,它顯示我的郵箱中的以下文字:

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-- 

因此,它清楚地表明我的編碼數據。

那麼,應該修改哪些內容以發送適當的html頁面,該頁面應該在目標電子郵件的收件箱中可見?

+0

請在問題中包含電子郵件的標題。另外,請勿使用運行時傳遞引用,因爲安全問題,它很可能會在下一個PHP版本中被刪除。 'array_push'已經通過引用接收到第一個參數。 – Artefacto 2010-06-17 13:25:35

+0

如果您可以顯示收到的電子郵件的完整原始數據(包括標題),這將有所幫助。 – kasperjj 2010-06-17 13:26:09

+0

關於您的編輯:我們不希望第二部分使用更多的base64編碼數據,我們需要消息標題。 – Artefacto 2010-06-17 13:41:30

回答

1

爲什麼你想重新發明輪子?有很多不同的實現可以讓你發送帶有附件的HTML郵件,即。 Zend_Mail,PHPMailer,...。使用其中之一,並避免頭痛。

相關問題