要发送带有附件的电子邮件,我们需要使用multipart / mixed
MIME类型,该类型指定混合类型将包含在电子邮件中。此外,我们想使用多部分/替代MIME类型来发送电子邮件的纯文本和HTML版本,请看示例:
<?php //define the receiver of the email $to = 'youraddress@example.com'; //define the subject of the email $subject = 'Test email with attachment'; //create a boundary string. It must be unique //so we use the MD5 algorithm to generate a random hash $random_hash = md5(date('r', time())); //define the headers we want passed. Note that they are separated with rn $headers = "From: webmaster@example.comrnReply-To: webmaster@example.com"; //add boundary string and mime type specification $headers .= "rnContent-Type: multipart/mixed; boundary="PHP-mixed-".$random_hash."""; //read the atachment file contents into a string,//enpre it with MIME base64,//and split it into smaller chunks$attachment = chunk_split(base64_enpre(file_get_contents('attachment.zip'))); //define the body of the message. ob_start(); //Turn on output buffering ?> --PHP-mixed-<?php echo $random_hash; ?> Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>"--PHP-alt-<?php echo $random_hash; ?> Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bitHello World!!! This is simple text email message.--PHP-alt-<?php echo $random_hash; ?> Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit<h2>Hello World!</h2> <p>This is something with <b>HTML</b> formatting.</p>--PHP-alt-<?php echo $random_hash; ?>----PHP-mixed-<?php echo $random_hash; ?> Content-Type: application/zip; name="attachment.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment<?php echo $attachment; ?> --PHP-mixed-<?php echo $random_hash; ?>--<?php //copy current buffer contents into $message variable and delete current output buffer $message = ob_get_clean(); //send the email $mail_sent = @mail( $to, $subject, $message, $headers ); //if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" echo $mail_sent ? "Mail sent" : "Mail failed"; ?>如您所见,发送带有附件的电子邮件很容易完成。在前面的示例中,我们具有multipart / mixed MIME类型,在其中,我们具有multipart /
alternative
MIME类型,用于指定电子邮件的两个版本。为了包括消息的附件,我们将指定文件中的数据读取为字符串,使用base64对其进行编码,将其拆分成较小的块以确保其与MIME规范匹配,然后将其作为附件包含在内。



