Php 通过电子邮件发送附件

Php 通过电子邮件发送附件,php,email,Php,Email,试图用PHP实现这一点,我遇到了一个难题,电子邮件中的HTML很好,但是边界部分显示为普通文本,附件不会附加 $to = 'myemail@email.com'; $subject = 'Contact Submission'; $name = strip_tags($_POST['name']); $emailto = strip_tags($_POST['emailto']); $comments = strip_tags($_POST['comments'

试图用PHP实现这一点,我遇到了一个难题,电子邮件中的HTML很好,但是
边界
部分显示为普通文本,附件不会附加

$to = 'myemail@email.com';
$subject = 'Contact Submission';
$name       =   strip_tags($_POST['name']);
$emailto    =   strip_tags($_POST['emailto']);
$comments   =   strip_tags($_POST['comments']);
$attachment =   chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'])));
$filename   =   $_FILES['file']['name'];

$boundary =md5(date('r', time())); 

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: noreply@emailcom' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

$comments="This is a multi-part message in MIME format.

--_1_$boundary
Content-Type: multipart/alternative; boundary=\"_2_$boundary\"

--_2_$boundary
Content-Type: text/html; charset=ISO-8859-1\"
Content-Transfer-Encoding: 7bit

        <table width=\"600px\" cellpadding=\"0\" cellspacing=\"0\"style=\"\">
          <tr valign=\"top\">
            <th align=\"left\" style=\" font-family:Verdana, Geneva, sans-serif; color:#000; font-size:14px; padding-left:10px; line-height:32px\">Contact Submission</th>
        </tr>
        </table>
        <br />

        <table width=\"600\" cellpadding=\"0\" cellspacing=\"0\"style=\"border: 1px solid #000;\">
          <tr valign=\"top\">
            <td colspan=\"4\" style=\" font-family:Verdana, Geneva, sans-serif; color:#000; font-size:12px; padding-left:10px; border-bottom: 1px solid #000;background:#ececec; line-height:32px;\" align=\"left\"><strong>Contact Information</strong></td>
        </tr>
          <tr valign=\"top\">
            <td style=\" font-family:Verdana, Geneva, sans-serif; color:#000; font-size:12px; padding-left:10px; line-height:32px; font-weight:bold\" align=\"right\" width=\"120\">Name</td>
            <td style=\" font-family:Verdana, Geneva, sans-serif; color:#000; font-size:12px; padding-left:10px; line-height:32px;padding-left:40px;\">$name</td>    
        </tr>
          <tr valign=\"top\">
            <td style=\" font-family:Verdana, Geneva, sans-serif; color:#000; font-size:12px; padding-left:10px; line-height:32px; font-weight:bold; background:#e6edf2;\" align=\"right\" width=\"120\">Email</td>
            <td style=\" font-family:Verdana, Geneva, sans-serif; color:#000; font-size:12px; padding-left:10px; line-height:32px;background:#e6edf2;padding-left:40px;\">$emailto</td>
          </tr>
          <tr valign=\"top\">
            <td style=\" font-family:Verdana, Geneva, sans-serif; color:#000; font-size:12px; padding-left:10px; line-height:32px; font-weight:bold\" align=\"right\">Comments</td>
            <td style=\" font-family:Verdana, Geneva, sans-serif; color:#000; font-size:12px; padding-left:10px; line-height:32px;padding-left:40px;\" colspan=\"3\">$comments</td>
          </tr>
        </table>

        --_2_$boundary--
        --_1_$boundary
        Content-Type: application/octet-stream; name=\"$filename\" 
        Content-Transfer-Encoding: base64 
        Content-Disposition: attachment 

        $attachment
        --_1_$boundary--";

                mail($to, $subject, $comments, $headers);
$to='1!'myemail@email.com';
$subject='联系人提交';
$name=strip_标签($_POST['name']);
$emailto=strip_标签($_POST['emailto']);
$comments=strip_标签($_POST['comments']);
$attachment=chunk\u split(base64\u编码(文件获取内容($\u文件['file']['tmp\u名称]]));
$filename=$_文件['file']['name'];
$boundary=md5(日期('r',时间());
$headers='MIME版本:1.0'。“\r\n”;
$headers.='内容类型:文本/html;字符集=iso-8859-1'。“\r\n”;
$headers.='来自:noreply@emailcom' . “\r\n”。
“X-Mailer:PHP/”。phpversion();
$comments=“这是MIME格式的多部分消息。
--_1美元边界
内容类型:多部分/可选;边界=\“\u 2\u$boundary\”
--_2美元边界
内容类型:text/html;字符集=ISO-8859-1\”
内容传输编码:7bit
联系人提交

联系信息 名称 $name 电子邮件 $emailto 评论 $comments --_2美元边界-- --_1美元边界 内容类型:应用程序/八位字节流;名称=\“$filename\” 内容传输编码:base64 内容配置:附件 $attachment --_1_u$边界--“; 邮件($to、$subject、$comments、$headers);
任何人都可以提供帮助,了解需要更改/添加/删除哪些内容才能获得此电子邮件以保留我的HTML表,并将文件附加到
$to=“email”;
$to = "email";
                    $subject = "your subject";
                    $base = basename($file1);
$file = fopen('file path','rb');
$size = filesize('file path');
$data = fread($file,$size);
fclose($file);
$data = chunk_split(base64_encode($data));
$message="<html><body>";
$message="<table border='1'>";
$message.="<tr><td colspan='3' align='center' style='color:#FFFFFF;font-size:large; background:#000000'>Your Information</td></tr>";
$message.="<tr><td style='font-weight:bold'>field 1</td><td style='font-weight:bold'>field 2</td></tr>";
$message.="</table>";
$message.="</body></html>";

//boundary
$div = "==Multipart_Boundary_x".md5(time())."x";
//headers
$head = "From: $email\n".
    "MIME-Version: 1.0\n".
    "Content-Type: multipart/mixed;\n".
    " boundary=\"$div\"";
//message
$mess = "--$div\n".
    "Content-Type: text/html; charset=\"iso-8859-1\"\n".
    "Content-Transfer-Encoding: 7bit\n\n".
    "$message\n\n".
    "--$div\n".
    "Content-Type: application/octet-stream; name=\"$base\"\n".
    "Content-Description: $base\n".
    "Content-Disposition: attachment;\n".
    " filename=\"$base\"; size=$size;\n".
    "Content-Transfer-Encoding: base64\n\n".
    "$data\n\n".
    "--$div\n";
$return = "-f$email";

mail($to,$subject,$mess,$head,$return);
$subject=“您的主题”; $base=basename($file1); $file=fopen('file path','rb'); $size=filesize(“文件路径”); $data=fread($file,$size); fclose($文件); $data=chunk_split(base64_encode($data)); $message=“”; $message=“”; $message.=“您的信息”; $message.=“字段1字段2”; $message.=“”; $message.=“”; //边界 $div=“==Multipart_Boundary_x”.md5(time())“x”; //标题 $head=“From:$email\n”。 “MIME版本:1.0\n”。 “内容类型:多部分/混合\n”。 “边界=\”$div\”; //信息 $mess=“--$div\n”。 “内容类型:文本/html;字符集=\“iso-8859-1\”\n。 “内容传输编码:7bit\n\n”。 “$message\n\n”。 “--$div\n”。 “内容类型:应用程序/八位字节流;名称=\“$base\”\n。 “内容描述:$base\n”。 “内容处置:附件\n”。 “文件名=\”$base\”;大小=$size\n”。 “内容传输编码:base64\n\n”。 “$data\n\n”。 “--$div\n”; $return=“-f$email”; 邮件($to、$subject、$mess、$head、$return);

试试这段代码

@Spudley不想使用PHPMailer,如果这可以通过上面的代码实现的话。下载PHPMailer或swiftmailer,看看他们是如何做到的,并相应地修改你的代码。boundary是否存储在$boundary$boundary--$boundary\“?尝试从字符串中拆分变量(即$comments的生成输出是什么?@DonaldSutherland:我真的不明白你为什么这么说。phpMailer(或swiftmailer)编写良好、安全、易于使用、功能齐全且完全免费。我可以肯定地说,除非您已经是一名专家或愿意花费大量时间,否则您将无法确定您的代码是否安全。它当然不容易使用。功能齐全吗?所有这些代码只适用于常规附件;如果你想添加另一个功能(比如带有内嵌图形的HTML电子邮件),这将是另一项繁重的工作。啊,好吧,你的选择。