1. ¸½¼þÊÇÈçºÎ¹¤×÷µÄ
Èç¹ûÄãÔø¾ÔÚPHPµÄÊÖ²áÖÐËÑË÷¹ý"¸½¼þ"º¯Êý£¬ÄÇô½á¹û¿ÉÄÜÊÇʲô¶¼Ã»ÓУ¨ÖÁÉÙÔÚÎÒд±¾ÎĵÄʱ¼ä»¹Ã»ÓУ©¡£ºóÀ´Äã¾ÍÒª»¨ºÜ¶àʱ¼äÀ´Á˽âÕâ·½ÃæµÄ֪ʶ¡£
ÄãÒ²Ðí»áÏëµ±Äã¸øÄ³¸öÈË·¢ËÍÒ»·â´ø¸½¼þµÄµç×ÓÓʼþʱ£¬¸½¼þÊǺÍÓʼþÒ»Æð·Åµ½ÊÕ¼þÈ˵ÄÐÅÏäÀïµÄ£¨±ÈÈ磬Èç¹ûÄã¸øËû/Ëý·¢ÁËÒ»¸öPNGµÄͼƬÎļþ£¬Ëû/ËýµÄÐÅÏäÀï»á°üº¬Ò»¸ötxtÎļþ£¨µç×ÓÓʼþ£©ºÍÒ»¸ö.pngÎļþ£¨¸½¼þ£©£©¡£µ«Õâ²»ÊÇËüµÄ¹¤×÷ÔÀí¡£µ±Äã¼ÓÈëÒ»¸ö¸½¼þʱ£¬ÄãµÄÓʼþ³ÌÐò°Ñ¸½¼þת»»³É´¿Îı¾Îļþ£¬²¢ÔÚÄãдµÄÄÚÈÝ£¨Êµ¼ÊµÄµç×ÓÓʼþ£©ºóÃæ²åÈëÕâ¸öÎı¾¿é¡£Õâ¸ö£¬µ±Äã°ÑËùÓеĶ«Î÷·¢³öÀ´ºó£¬ÊÕ¼þÈ˵ÄÐÅÏäÀïÖ»ÓÐÒ»¸ö´¿Îı¾Îļþ--Ò»¸öͬʱ°üº¬¸½¼þºÍʵ¼Êµç×ÓÓʼþÄÚÈݵÄÎļþ¡£
ÏÂÃæÊÇÒ»¸ö´ø¸½¼þ£¨Ò»¸öHTMLÎļþ£©µç×ÓÓʼþµÄÀý×Ó¡£ÎÒÒѾ±ê×¢ÁËÆäÖÐÖØÒªµÄ¼¸ÐУº
Return-Path: <someone@example.com>
Date: Mon, 22 May 2000 19:17:29 +0000
From: Someone <someone@example.com>
To: Person <person@eksempel.dk>
Message-id: <83729KI93LI9214@example.com>
Content-type: multipart/mixed; boundary="396d983d6b89a"
Subject: Here's the subject
--396d983d6b89a
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bit
This is the body of the email.
--396d983d6b89a
Content-type: text/html; name=attachment.html
Content-disposition: inline; filename=attachment.html
Content-transfer-encoding: 8bit
<html>
<head>
<title>The attachment</title>
</head>
<body>
<h2>This is the attached HTML file</h2>
</body>
</html>
--396d983d6b89a--
Ç°ÃæµÄ7ÐÐÊÇÓʼþµÄÍ·£¬ÆäÖÐÖµµÃ×¢ÒâµÄÊÇContent-typeÍ·²¿·Ö¡£Õâ¸öÍ·¸æËßÓʼþ³ÌÐòµç×ÓÓʼþÊÇÓÉÒ»¸öÒÔÉϵIJ¿·Ö×é³ÉµÄ¡£²»º¬¸½¼þµÄÓʼþÖ»ÓÐÒ»¸ö²¿·Ö£ºÏûÏ¢±¾Éí¡£´ø¸½¼þµÄµç×Óͨ³£ÖÁÉÙÓÉÁ½²¿·Ö×é³É£ºÏûÏ¢ºÍ¸½¼þ¡£ÕâÑù£¬´øÁ½¸ö¸½¼þµÄÓʼþÓÉÈý²¿·Ö×é³É£ºÏûÏ¢£¬µÚÒ»¸ö¸½¼þºÍµÚ¶þ¸ö¸½¼þ¡£
´ø¸½¼þµÄµç×ÓÓʼþµÄ²»Í¬²¿·ÖÖ®¼äÓ÷ֽçÏßÀ´·Ö¸ô¡£·Ö½çÏßÔÚContent-typeÍ·Öж¨Òå¡£ÓʼþµÄÿ¸öв¿·ÖÒÔÁ½¸öÁ¬×ֺţ¨--£©ºÍ·Ö½çÏß¿ªÊ¼¡£×îºóÒ»¸ö·Ö½çÏߺóÒ²ÓÐÁ½¸öÁ¬×ֺţ¬±íʾÕâ¸öÓʼþÖÐûÓÐÆäËüµÄ²¿·ÖÁË¡£
ÔÚÿ¸ö·Ö½çÏߺóÓÐһЩÐУ¬ÓÃÀ´¸æËßÓʼþ³ÌÐòÕâ¸ö²¿·ÖµÄÄÚÈݵÄÀàÐÍ¡£±ÈÈ磬¿´¿´ÉÏÃæÀý×ÓÖеÚÒ»¸ö·Ö½çÏߺóÃæµÄÁ½ÐÐ--ÒÔContent-type: text/plain¿ªÍ·µÄÐС£ÕâЩÐÐ˵Ã÷ºóÃæµÄ²¿·ÖÊÇISO-8859-1×Ö·û¼¯µÄ´¿Îı¾¡£¸úÔÚµÚ¶þ¸ö·Ö½çÏߺóµÄÐиæËßÓʼþ³ÌÐòÏÖÔڵIJ¿·ÖÊÇÒ»¸ö HTMLÎļþ£¬ËüµÄÃû×ÖÊÇ"attachment.html"¡£
Content-disposition Õâ³Ö¸æËßÓʼþ³ÌÐòÈç¹û¿ÉÄܾÍÒÔÄÚǶµÄ·½Ê½ÏÔʾ¸½¼þ¡£ÏÖÔÚеÄÓʼþ³ÌÐò»áÔÚÏûÏ¢ºóÏÔʾHTMLµÄÄÚÈÝ¡£Èç¹ûContent-disposition±»ÉèΪ attachment£¬ÄÇôÓʼþ³ÌÐò¾Í²»»áÏÔʾHTMLÎļþµÄÄÚÈÝ£¬¶øÊÇÏÔʾһ¸öÁ¬½Óµ½ÎļþµÄͼ±ê£¨»òÆäËüµÄÀàËÆµÄ¶«Î÷£©¡£ÊÕ¼þÈËÒª¿´¸½¼þµÄÄÚÈÝ£¬±ØÐëµã»÷Õâ¸öͼ±ê¡£Ò»°ãÇé¿öÏ£¬Èç¹û¸½¼þÊÇһЩÎı¾£¨°üº¬HTML£©£¬Content-disposition»á±»ÉèΪinline£¬ÕâÊÇÒòΪÏÖÔڴ󲿷ÖÓʼþ³ÌÐòÄܹ»²»½èÖúÆäËüä¯ÀÀÆ÷¶øÖ±½ÓÏÔʾ¸½¼þ£¨Îı¾£©µÄÄÚÈÝ¡£Èç¹û¸½¼þ²»ÊÇÎı¾£¨±ÈÈçͼƬ»òÆäËüÀàËÆµÄÄÚÈÝ£©£¬Content-disposition¾ÍÉèΪ attachment¡£
2. ÓÃPHPÉú³É´ø¸½¼þµÄµç×ÓÓʼþ
ÕâÀïÒ»¸öÀý×Ó£¬¸æËßÄãÈç¹û°ÑÒ»¸ö¶¨ÒåºÃµÄHTMLÎļþ¼ÓΪÓʼþµÄ¸½¼þ£º
<?php
# ÎÒÃÇÊ×ÏÈдʵ¼ÊµÄÏûÏ¢ÄÚÈÝ
$emailBody = "This is text that goes into the body of the email.";
# È»ºóÎÒÃÇÒª×÷Ϊ¸½¼þµÄHTMLÎļþ
$attachment = "<html>
<head>
<title>The attached file</title>
</head>
<body>
<h2>This is the attached HTML file</h2>
</body>
</html>";
# ½¨Á¢ÔÚÓʼþÖзָô²»Í¬²¿·ÖµÄ·Ö½çÏß¡£
# »ù±¾ÉÏ£¬·Ö½çÏß¿ÉÒÔÊÇÈÎÒâµÄ×Ö·û´®¡£
# µ«ÊÇÖØÒªµÄÒ»µãÊÇÈ·¶¨Ò»¸öдÓʼþµÄÈË
# Õâ»áËæÒâд³öµÄ×Ö·û´®£¬ËùÒÔÎÒÃÇÓÃ
# uniqidº¯ÊýÀ´²úÉúÒ»¸öËæ»úµÄ×Ö·û´®¡£
$boundary = uniqid( "");
# ÏÖÔÚÎÒÃÇÒª½¨Á¢ÓʼþÍ·¡£²»ÒªÍüÁ˲åÈë
# Content-typeÍ·À´ËµÃ÷Õâ¸öÓʼþ°üº¬Ò»¸ö»ò¸ü¶àµÄ¸½¼þ¡£
$headers = "From: someone@example.com
Content-type: multipart/mixed; boundary=\"$boundary\"";
# ºÃ£¬ÏÖÔÚÎÒÃÇÒѾÓÐÁËÓʼþµÄËùÓÐÄÚÈÝ¡£
# ÏÂÒ»¼þÊÂÊÇÐÞ¸ÄÓʼþµÄÖ÷Ìå¡£
$emailBody = "--$boundary
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bit
$emailBody
--$boundary
Content-type: text/html; name=attachment.html
Content-disposition: inline; filename=attachment.html
Content-transfer-encoding: 8bit
$attachment
--$boundary--";
# ÏÖÔÚ¿ÉÒÔ°ÑÓʼþ·¢³öÈ¥ÁË
mail( "person@eksempel.dk", "The subject", $emailBody, $headers);
?>
3. °ÑÓû§ÉÏ´«µÄÎļþ×÷Ϊ¸½¼þ
ÄãÒ²Ðí»á¾õµÃÉÏÃæµÄÀý×ÓÄÑÒÔÀí½â£¬µ«ÏÂÃæ...¡£ÔÚÏÂÃæµÄÀý×ÓÖÐÊÂÇé¸üÄÑÁË£¬ÒòΪÎÒÃÇÒªÓÃÒ»¸ö±íµ¥ÈÃÓû§ÉÏ´«ËûÃǵÄÎļþ£¬²¢°ÑÕâ¸öÎļþ×÷ΪÎÒÃÇÒª·¢µÄÓʼþµÄ¸½¼þ¡£Âé·³µÄÊÇÎÒÃDz»ÄÜÔ¤ÏÈÖªµÀÎļþµÄMIMEÀàÐÍ¡£ÔÚÇ°ÃæµÄÀý×ÓÖУ¬ÎÒÃÇÒѾ֪µÀ¸ÃËüÊÇÒ»¸öHTMLÎļþ£¬ËùÒÔ¸øÕâ¸ö¸½¼þÉèÖÃContent-type Í·ÊǺܼòµ¥µÄ¡£ÔÚÏÂÃæµÄÀý×ÓÖУ¬MIMEÀàÐÍ¿ÉÄÜÊÇÈÎÒâµÄ£¬ÒòΪÓû§¿ÉÄÜ»áÉÏ´«Ò»¸öHTMLÎļþ£¬Ò»¸öPNGÎļþ£¬Ò»¸övCardÎļþ£¬»òÕ߯äËüµÄ¶«Î÷¡£ÈÃÎÒÃÇÀ´¿´¿´Àý×Ó£º
<?php
# ÏÖÔÚÎÒÃÇÀ´Éú³É±íµ¥¡£ÔÚ²úÉú¿ÉÒÔÉÏ´«ÎļþµÄ±íµ¥Ê±£¬
# ²»ÒªÍüÁ˰Ñ<form>±êÇ©µÄ"enctype"ÊôÐÔÉèΪ"multipart/form-data".
echo "<form action='$PHP_SELF' enctype='multipart/form-data' method='post'>\n";
echo "<input type='text' name='from'><br>\n";
echo "<input type='text' name='to'><br>\n";
echo "<input type='text' name='subject'><br>\n";
echo "<input type='file' name='attachment'><br>\n";
echo "<textarea name='body'></textarea><br>\n";
echo "<input type='submit' name='send' value='Send'>\n";
echo "</form>\n";
# Èç¹ûÓû§ÒѾ°´ÁË"Send"°´Å¥"
if ($send) {
# ¶¨Òå·Ö½çÏß
$boundary = uniqid( "");
# Éú³ÉÓʼþÍ·
$headers = "From: $from
Content-type: multipart/mixed; boundary=\"$boundary\"";
# È·¶¨ÉÏ´«ÎļþµÄMIMEÀàÐÍ
if ($attachment_type) $mimeType = $attachment_type;
# Èç¹ûä¯ÀÀÆ÷ûÓÐÖ¸¶¨ÎļþµÄMIMEÀàÐÍ£¬
# ÎÒÃÇ¿ÉÒÔ°ÑËüÉèΪ"application/unknown".
else $mimeType = "application/unknown";
# È·¶¨ÎļþµÄÃû×Ö
$fileName = $attachment_name;
# ´ò¿ªÎļþ
$fp = fopen($attachment, "r");
# °ÑÕû¸öÎļþ¶ÁÈëÒ»¸ö±äÁ¿
$read = fread($fp, filesize($attachment));
# ºÃ£¬ÏÖÔÚ±äÁ¿$readÖб£´æµÄÊǰüº¬Õû¸öÎļþÄÚÈݵÄÎı¾¿é¡£
# ÏÖÔÚÎÒÃÇÒª°ÑÕâ¸öÎı¾¿éת»»³ÉÓʼþ³ÌÐò¿ÉÒÔ¶Á¶®µÄ¸ñʽ
# ÎÒÃÇÓÃbase64·½·¨°ÑËü±àÂë
$read = base64_encode($read);
# ÏÖÔÚÎÒÃÇÓÐÒ»¸öÓÃbase64·½·¨±àÂëµÄ³¤×Ö·û´®¡£
# ÏÂÒ»¼þÊÂÊÇÒª°ÑÕâ¸ö³¤×Ö·û´®ÇгÉÓÉÿÐÐ76¸ö×Ö·û×é³ÉµÄС¿é
$read = chunk_split($read);
# ÏÖÔÚÎÒÃÇ¿ÉÒÔ½¨Á¢ÓʼþµÄÖ÷Ìå
$body = "--$boundary
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bit
$body
--$boundary
Content-type: $mimeType; name=$fileName
Content-disposition: attachment; filename=$fileName
Content-transfer-encoding: base64
$read
--$boundary--";
# ·¢ËÍÓʼþ
mail($to, $subject, $body, $headers);
}
?>
Õâ¾ÍÊÇÈ«²¿ÄÚÈÝ¡£Èç¹ûÄã²»ÄܺܺõØÀí½âÉÏÃæµÄÀý×Ó£¬ÎҵĽ¨ÒéÊǸøÄã×Ô¼º·¢Ëͼ¸¸ö´ø¸½¼þµÄÓʼþ£¬È»ºó×ÐϸÑо¿ÓʼþµÄÔ´´úÂë¡£
,| ×ÔÓÉ¹ã¸æÇø |
| ¡¡ |