Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP邮件-附件_Php_Email_Phpmailer - Fatal编程技术网

PHP邮件-附件

PHP邮件-附件,php,email,phpmailer,Php,Email,Phpmailer,我正在尝试发送一张图片作为表单上的附件。 但是在点击提交后,很抱歉服务器无法上传文件 如果有人知道原因,请告诉我。 先谢谢你 <?php require("class.phpmailer.php"); $name = "the Submitter"; $email_subject = "photo Attachment"; $Email_msg ="A visitor submitted the following :\n"; $Email_to = "someone1@someone.

我正在尝试发送一张图片作为表单上的附件。 但是在点击提交后,很抱歉服务器无法上传文件

如果有人知道原因,请告诉我。 先谢谢你

<?php
require("class.phpmailer.php");

$name = "the Submitter";
$email_subject = "photo Attachment";
$Email_msg ="A visitor submitted the following :\n";
$Email_to = "someone1@someone.com"; 
$email_from = "someone2@someone.net";
$dir = "uploads/$filename";
chmod("uploads",0777);
$attachments = array();

checkType();

function checkType() {
  while(list($key,$value) = $_FILES[photo][type]){
    strtolower($value);
    if($value != "image/jpeg" AND $value != "image/pjpeg" AND $value != "") {
      exit('Sorry , current format is <b>'.($value).'</b> ,only Jpeg or jpg are allowed.') ;
    }
  }
  checkSize();
}


function checkSize(){
  while(list($key,$value) = ($_FILES[photo][size]))
  {
    $maxSize = 5000000;
    if(!empty($value)){
      if ($value > $maxSize) {
        echo"Sorry this is a very big file .. max file size is $maxSize Bytes = 5 MB";
        exit();
      }
      else {
        $result = "File size is ok !<br>";
      }
    }
  }
  uploadFile();
}


function uploadFile() {
  global $attachments;
  while(list($key,$value) = ($_FILES[photo][name]))
  {

  if(!empty($value))
  {
    $filename = $value;
    $dir = "uploads/$filename";
    chmod("uploads",0777);
    $success = copy($_FILES[photo][tmp_name][$key], $dir);
  }

}

if ($success) {
  echo " Files Uploaded Successfully<BR>";
  SendIt();

}else {
  exit("Sorry the server was unable to upload the files...");
}

}



function SendIt() {

  global $attachments,$name,$Email_to,$Email_msg,$email_subject,$email_from;

  $mail = new PHPMailer();
  $mail->IsSMTP();
  $mail->Host = "localhost"; 
  $mail->SMTPAuth = false; 
  $mail->From = $email_from;
  $mail->FromName = $name;
  $mail->AddAddress($Email_to);
  $mail->AddReplyTo($email_from);
  $mail->WordWrap = 50;

  foreach($attachments as $key => $value) { 
    $mail->AddAttachment("uploads"."/".$value);
  }
  $mail->Body = $Email_msg."Name : ".$name."\n";

  $mail->IsHTML(false);
  $mail->Subject = $email_subject;
  if(!$mail->Send())
  {
    echo "Message was not sent <p>";
    echo "Mailer Error: " . $mail->ErrorInfo;
    exit;
  }

  echo "Message has been sent";

  foreach($attachments as $key => $value) {
    unlink("uploads"."/".$value);
  }

}

?>

谢谢你回答我的问题。最后,它成功了。 下面是一个有效的

<?php
require("PATH/PHPMailer-master/class.phpmailer.php");


$name = "the Submitter";
$email_subject = "photo Attachment";
$Email_msg ="A visitor submitted the following :\n";
$Email_to = "someone1@someone.com"; 
$email_from = "someone2@someone.net";
$dir = "uploads/$filename";
chmod("uploads",0777);
chmod("PATH/uploads",0777);
$attachments = array();

checkType();


function checkType() {
strtolower($_FILES[photo][type]);
if($value != "image/jpeg" AND $value != "image/pjpeg" AND $value != "") {
exit('Sorry , current format is <b>'.($value).'</b> ,only Jpeg or jpg are allowed.') ;

}

checkSize();

}



function checkSize(){

$value = $_FILES[photo][size];
$maxSize = 5000000;
if(!empty($value)){
if ($value > $maxSize) {
echo"Sorry this is a very big file .. max file size is $maxSize Bytes = 5 MB";
exit();
}
else {
$result = "File size is ok !<br>";

}

}


uploadFile();

}




function uploadFile() {
global $attachments;

$value = $_FILES[photo][name];

if(!empty($value))
{
$filename = $value;
$dir = "PATH/uploads/$filename";
$success = move_uploaded_file($_FILES[photo][tmp_name], $dir);
   if($success){
$attachments = $value;
   }
}


if ($success) {
echo " Files Uploaded Successfully<BR>";
SendIt();



}else {
exit("Sorry the server was unable to upload the files...");
}

}



function SendIt() {

global $attachments,$name,$Email_to,$Email_msg,$email_subject,$email_from;

$mail = new PHPMailer();
$mail->IsSMTP();//
$mail->Host = "smtp.gmail.com"; 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = "tls"; 
$mail->SMTPDebug = 2;
$mail->Port = 25;
$mail->Username = "xxx@gmail.com";
$mail->Password = "xxx";
$mail->From = $email_from;
$mail->FromName = $name;
$mail->AddAddress($Email_to);
$mail->AddReplyTo($email_from);
$mail->WordWrap = 50;

foreach($attachments as $key => $value) { 
$mail->AddAttachment("PATH/uploads"."/".$value);
}
$mail->Body = $Email_msg."Name : ".$name."\n";

$mail->IsHTML(false);
$mail->Subject = $email_subject;
if(!$mail->Send())
{
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}

echo "Message has been sent";

foreach($attachments as $key => $value) {
unlink("PATH/uploads"."/".$value);
}

}

?>

尝试使用上载文件而不是copyPlus此$success=copy$\u files[photo][tmp\u name]在内部和其他区域也缺少引号。这将被视为。请首先从代码中删除所有与电子邮件相关的内容,并确保文件上载工作正常。只有在这之后,才能开始添加电子邮件功能。问题与电子邮件无关。谢谢,现在它显示的是不同的消息。你是要告诉我们它是什么,还是我们必须猜测?