Php 通过电子邮件发送附件
试图用PHP实现这一点,我遇到了一个难题,电子邮件中的HTML很好,但是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'
边界
部分显示为普通文本,附件不会附加
$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电子邮件),这将是另一项繁重的工作。啊,好吧,你的选择。