问题描述
我正在尝试使用邮件功能将多个图像作为电子邮件附件发送。我尝试附加3张图片,但是在我的电子邮件中,我只收到一张包含电子邮件的图片。 我尝试在for循环中回显数据,它显示了所有三个带有消息变量的图像。 这是表单提交后的代码。
仅供参考:我没有使用PHPMailer,就我而言,这是不可能的。
$postData = $uploadedFile = $statusMsg = '';
$msgClass = 'errordiv';
if (isset($_POST['submit']) && isset($_FILES) && (bool)$_FILES) {
$allowTypes = array('pdf','jpg','png','jpeg');
$files = array();
$address = "abc@example.com"; // this is your Email address
$member_contact = $_POST['member_contact'];
$member_name = $_POST['member_name'];
$membership_number = $_POST['membership_number'];
$subject = "Form Subject";
$htmlContent = "<h2>Contact Request Submitted</h2>
<p><b>Member's Name</b>: " . $member_name . "</p>
<p><b>Membership No.</b>: " . $membership_number . "</p>
<p><b>Member's Contact Number</b>: " . $member_contact . "</p>";
//headers for attachment
$semi_rand = md5(uniqid(time()));
$eol = PHP_EOL;
$headers = "From: example ".$eol;
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"".$semi_rand."\"";
// Put everything else in $message
$message = "--".$semi_rand.$eol;
$message .= "Content-Type: text/html; charset=ISO-8859-1".$eol;
$message .= "Content-transfer-encoding: 8bit".$eol.$eol;
$message .= $htmlContent.$eol;
$message .= "--".$semi_rand.$eol;
foreach (count($_FILES) > 0 ? $_FILES : array() as $name => $files) {
$file = fopen($files['tmp_name'],"rb");
$data = fread($file,filesize($files['tmp_name']));
fclose($file);
$data = chunk_split(base64_encode($data));
$name = $files['name'];
$message .= "Content-Type: application/octet-stream; name=\"".basename($name)."\"\n" .
"Content-Description: ".basename($name)."\n" .
"Content-disposition: attachment;\n" . " filename=\"".basename($name)."\"; size=".filesize($files['tmp_name']).";\n" .
"Content-transfer-encoding: base64\n\n" . $data . "\n\n";
$message .= "--".$semi_rand."--";
}
// Send email
$mail = mail($address,$subject,$message,$headers);
try{
if ($mail) {
$statusMsg = 'Your contact request has been submitted successfully !';
$msgClass = 'succdiv';
$postData = '';
} else {
print_r(error_get_last());
die("error");
$statusMsg = 'Your contact request submission Failed,please try again.';
}
}catch(Exception $e){
die($e->getMessage());
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)