如何使用带有 pear mail.php 和 mime.php 的 php 附加多个文件?
how to attachment multiple file using php with pear mail.php and mime.php?
我无法附加多个文件。如果我附加的文件多于一个文件,电子邮件总是发送 1 个文件附件,但我的附件多于一个文件。
if(isset($_POST['upload'])){
include('config.php');
include_once('Mail.php');
include_once('Mail/mime.php');
$allowed_ext = array('jpg','bmp','gif','png','jpeg');
for($i=0; $i<count($_FILES['file']['name']); $i++) {
$file_name = $_FILES['file']['name'][$i];
$file_ext = strtolower(end(explode('.', $file_name)));
$file_size = $_FILES['file']['size'][$i];
$file_tmp = $_FILES['file']['tmp_name'][$i];
$username = $_POST['username'];
$judul = $_POST['judul'];
$berita = $_POST['berita'];
$max_size = 25*1024*1024;
$tanggal_kirim = date("Y-m-d H:i:s");
if(in_array($file_ext, $allowed_ext) === true){
if($file_size <= $max_size){
$file_path = "foto/". $_FILES['file']['name'][$i];
move_uploaded_file($file_tmp, "$file_path");}
mysql_query("INSERT INTO foto VALUES('', '$username', '$tanggal_kirim', '$judul', '$berita','0')");
}
$query = "SELECT email,password_email FROM users where username='$username'";
$sql = mysql_query($query);
$data = mysql_fetch_assoc($sql);
$subject = $judul;
$body = $berita;
//mail($to, $subject, $body,$headers);
//email tujuan
$to = "babagusandrian@gmail.com";
$host = "ssl://smtp.gmail.com";
$port = "465";
$from = $useremail = $data['email'];
$password = $data['password_email'];
$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject);
$namafile[$i] = "$file_path/$file_name";
$crlf = "\n";
$mime = new Mail_mime($crlf);
$mime->setTXTBody($body);
$mime->addAttachment($namafile[$i],'image/jpg');
$body = $mime->get();
$headers = $mime->headers($headers);
$smtp = Mail::factory('smtp', array('host' => $host,
'port' => $port, 'auth' => true,
'username' => $useremail, 'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if($mail){
echo '<div class="ok">SUCCESS: Foto terkirim!</div>';
}else{
echo '<div class="error">ERROR: Foto gagal dikirim!</div>';
}
}
}
我的代码有什么问题?请帮我。给我决心....谢谢你.....对不起我的英语,我来自印度尼西亚。所以很少说英语。抱歉....
我很快重新整理了代码,对此无法保证:
<?php
if(isset($_POST['upload'])){
include ('config.php');
include_once ('Mail.php');
include_once ('Mail/mime.php');
$allowed_ext = array('jpg','bmp','gif','png','jpeg');
$query = "SELECT email,password_email FROM users where username='$username'";
$sql = mysql_query($query);
$data = mysql_fetch_assoc($sql);
$subject = $judul;
$body = $berita;
//mail($to, $subject, $body,$headers);
//email tujuan
$to = "babagusandrian@gmail.com";
$host = "ssl://smtp.gmail.com";
$port = "465";
$from = $useremail = $data['email'];
$password = $data['password_email'];
$headers = array('From'=>$from,'To'=>$to,'Subject'=>$subject);
$namafile[$i] = "$file_path/$file_name";
$crlf = "\n";
$mime = new Mail_mime($crlf);
$mime->setTXTBody($body);
for($i = 0 ; $i<count($_FILES['file']['name']) ; $i++){
$file_name = $_FILES['file']['name'][$i];
$file_ext = strtolower(end(explode('.',$file_name)));
$file_size = $_FILES['file']['size'][$i];
$file_tmp = $_FILES['file']['tmp_name'][$i];
$username = $_POST['username'];
$judul = $_POST['judul'];
$berita = $_POST['berita'];
$max_size = 25*1024*1024;
$tanggal_kirim = date("Y-m-d H:i:s");
if(in_array($file_ext,$allowed_ext)===true){
if($file_size<=$max_size){
$file_path = "foto/".$_FILES['file']['name'][$i];
move_uploaded_file($file_tmp,"$file_path");
}
mysql_query("INSERT INTO foto VALUES('', '$username', '$tanggal_kirim', '$judul', '$berita','0')");
}
$mime->addAttachment($namafile[$i],'image/jpg');
}
$body = $mime->get();
$headers = $mime->headers($headers);
$smtp = Mail::factory('smtp',array('host'=>$host,'port'=>$port,'auth'=>true,'username'=>$useremail,'password'=>$password));
$mail = $smtp->send($to,$headers,$body);
if($mail){
echo '<div class="ok">SUCCESS: Foto terkirim!</div>';
}else{
echo '<div class="error">ERROR: Foto gagal dikirim!</div>';
}
}
我是自己解决的。我可以做到....
if(isset($_POST['username']) && isset($_POST['judul']) &&
($_POST['berita']) ) {
include('config.php');
include_once('Mail.php');
include_once('Mail/mime.php');
$username = $_POST['username'];
$judul = $_POST['judul'];
$berita = $_POST['berita'];
$tanggal_kirim = date("Y-m-d H:i:s");
$query = "SELECT email,password_email FROM users where username='$username'";
$result = mysql_query($query);
list($useremail,$password) = mysql_fetch_row($result);
mysql_free_result($result);
$from = $useremail;
$subject = $judul;
$body = $berita;
$to = "babagusandrian@gmail.com";
$host = "ssl://smtp.gmail.com";
$port = "465";
$crlf = "\n";
$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject);
$mime = new Mail_mime($crlf);
$mime->setTXTBody($body);
$arr_files = array();
$file_path = "foto";
$file_count = 0;
for($i=0; $i<count($_FILES['fileAttach']['name']); $i++) {
$file_name = $_FILES['fileAttach']['name'][$i];
if(!empty($file_name)) {
$file_count++;
$file_ext = strtolower(end(explode('.', $file_name)));
$file_tmp = $_FILES['fileAttach']['tmp_name'][$i];
$file_target = $file_path.'/'.$file_name.'';
$file_type ="image/*";
move_uploaded_file($file_tmp, $file_target);
$arr_files[] = $file_target;
$mime->addAttachment($file_target,"image/".$file_ext, $file_type);
}
}
$body = $mime->get();
$headers = $mime->headers($headers);
$smtp = Mail::factory('smtp', array('host' => $host,
'port' => $port, 'auth' => true,
'username' => $useremail, 'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if($mail){
mysql_query("INSERT INTO foto VALUES('', '$username', '$tanggal_kirim', '$judul', '$berita','$file_count')");
echo '<div class="ok">SUCCESS: Foto terkirim!</div>';
}else{
echo '<div class="error">ERROR: Foto gagal dikirim!</div>';
}
// sukses atopun gagal, tetap delete file
foreach($arr_files as $namafile) { unlink($namafile); }
}
我无法附加多个文件。如果我附加的文件多于一个文件,电子邮件总是发送 1 个文件附件,但我的附件多于一个文件。
if(isset($_POST['upload'])){
include('config.php');
include_once('Mail.php');
include_once('Mail/mime.php');
$allowed_ext = array('jpg','bmp','gif','png','jpeg');
for($i=0; $i<count($_FILES['file']['name']); $i++) {
$file_name = $_FILES['file']['name'][$i];
$file_ext = strtolower(end(explode('.', $file_name)));
$file_size = $_FILES['file']['size'][$i];
$file_tmp = $_FILES['file']['tmp_name'][$i];
$username = $_POST['username'];
$judul = $_POST['judul'];
$berita = $_POST['berita'];
$max_size = 25*1024*1024;
$tanggal_kirim = date("Y-m-d H:i:s");
if(in_array($file_ext, $allowed_ext) === true){
if($file_size <= $max_size){
$file_path = "foto/". $_FILES['file']['name'][$i];
move_uploaded_file($file_tmp, "$file_path");}
mysql_query("INSERT INTO foto VALUES('', '$username', '$tanggal_kirim', '$judul', '$berita','0')");
}
$query = "SELECT email,password_email FROM users where username='$username'";
$sql = mysql_query($query);
$data = mysql_fetch_assoc($sql);
$subject = $judul;
$body = $berita;
//mail($to, $subject, $body,$headers);
//email tujuan
$to = "babagusandrian@gmail.com";
$host = "ssl://smtp.gmail.com";
$port = "465";
$from = $useremail = $data['email'];
$password = $data['password_email'];
$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject);
$namafile[$i] = "$file_path/$file_name";
$crlf = "\n";
$mime = new Mail_mime($crlf);
$mime->setTXTBody($body);
$mime->addAttachment($namafile[$i],'image/jpg');
$body = $mime->get();
$headers = $mime->headers($headers);
$smtp = Mail::factory('smtp', array('host' => $host,
'port' => $port, 'auth' => true,
'username' => $useremail, 'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if($mail){
echo '<div class="ok">SUCCESS: Foto terkirim!</div>';
}else{
echo '<div class="error">ERROR: Foto gagal dikirim!</div>';
}
}
}
我的代码有什么问题?请帮我。给我决心....谢谢你.....对不起我的英语,我来自印度尼西亚。所以很少说英语。抱歉....
我很快重新整理了代码,对此无法保证:
<?php
if(isset($_POST['upload'])){
include ('config.php');
include_once ('Mail.php');
include_once ('Mail/mime.php');
$allowed_ext = array('jpg','bmp','gif','png','jpeg');
$query = "SELECT email,password_email FROM users where username='$username'";
$sql = mysql_query($query);
$data = mysql_fetch_assoc($sql);
$subject = $judul;
$body = $berita;
//mail($to, $subject, $body,$headers);
//email tujuan
$to = "babagusandrian@gmail.com";
$host = "ssl://smtp.gmail.com";
$port = "465";
$from = $useremail = $data['email'];
$password = $data['password_email'];
$headers = array('From'=>$from,'To'=>$to,'Subject'=>$subject);
$namafile[$i] = "$file_path/$file_name";
$crlf = "\n";
$mime = new Mail_mime($crlf);
$mime->setTXTBody($body);
for($i = 0 ; $i<count($_FILES['file']['name']) ; $i++){
$file_name = $_FILES['file']['name'][$i];
$file_ext = strtolower(end(explode('.',$file_name)));
$file_size = $_FILES['file']['size'][$i];
$file_tmp = $_FILES['file']['tmp_name'][$i];
$username = $_POST['username'];
$judul = $_POST['judul'];
$berita = $_POST['berita'];
$max_size = 25*1024*1024;
$tanggal_kirim = date("Y-m-d H:i:s");
if(in_array($file_ext,$allowed_ext)===true){
if($file_size<=$max_size){
$file_path = "foto/".$_FILES['file']['name'][$i];
move_uploaded_file($file_tmp,"$file_path");
}
mysql_query("INSERT INTO foto VALUES('', '$username', '$tanggal_kirim', '$judul', '$berita','0')");
}
$mime->addAttachment($namafile[$i],'image/jpg');
}
$body = $mime->get();
$headers = $mime->headers($headers);
$smtp = Mail::factory('smtp',array('host'=>$host,'port'=>$port,'auth'=>true,'username'=>$useremail,'password'=>$password));
$mail = $smtp->send($to,$headers,$body);
if($mail){
echo '<div class="ok">SUCCESS: Foto terkirim!</div>';
}else{
echo '<div class="error">ERROR: Foto gagal dikirim!</div>';
}
}
我是自己解决的。我可以做到....
if(isset($_POST['username']) && isset($_POST['judul']) &&
($_POST['berita']) ) {
include('config.php');
include_once('Mail.php');
include_once('Mail/mime.php');
$username = $_POST['username'];
$judul = $_POST['judul'];
$berita = $_POST['berita'];
$tanggal_kirim = date("Y-m-d H:i:s");
$query = "SELECT email,password_email FROM users where username='$username'";
$result = mysql_query($query);
list($useremail,$password) = mysql_fetch_row($result);
mysql_free_result($result);
$from = $useremail;
$subject = $judul;
$body = $berita;
$to = "babagusandrian@gmail.com";
$host = "ssl://smtp.gmail.com";
$port = "465";
$crlf = "\n";
$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject);
$mime = new Mail_mime($crlf);
$mime->setTXTBody($body);
$arr_files = array();
$file_path = "foto";
$file_count = 0;
for($i=0; $i<count($_FILES['fileAttach']['name']); $i++) {
$file_name = $_FILES['fileAttach']['name'][$i];
if(!empty($file_name)) {
$file_count++;
$file_ext = strtolower(end(explode('.', $file_name)));
$file_tmp = $_FILES['fileAttach']['tmp_name'][$i];
$file_target = $file_path.'/'.$file_name.'';
$file_type ="image/*";
move_uploaded_file($file_tmp, $file_target);
$arr_files[] = $file_target;
$mime->addAttachment($file_target,"image/".$file_ext, $file_type);
}
}
$body = $mime->get();
$headers = $mime->headers($headers);
$smtp = Mail::factory('smtp', array('host' => $host,
'port' => $port, 'auth' => true,
'username' => $useremail, 'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if($mail){
mysql_query("INSERT INTO foto VALUES('', '$username', '$tanggal_kirim', '$judul', '$berita','$file_count')");
echo '<div class="ok">SUCCESS: Foto terkirim!</div>';
}else{
echo '<div class="error">ERROR: Foto gagal dikirim!</div>';
}
// sukses atopun gagal, tetap delete file
foreach($arr_files as $namafile) { unlink($namafile); }
}