将输入类型文件(HTML)转换为JavaScript,并使用PHPmailer发送电子邮件

将输入类型文件(HTML)转换为JavaScript,并使用PHPmailer发送电子邮件,javascript,php,email,phpmailer,Javascript,Php,Email,Phpmailer,我正在使用PHPMailer、JavaScript和PHP,通过我的代码我将电子邮件发送给特定的用户,下一步是用电子邮件附加一个文件 但我有两个问题: 第一个与以下代码相关: HTML部分: <input type="file" name="myFile" id="myFile" required/> 在(1)中,如何发送附加到php文件的输入文件 像 当我在PHP中成功获得该文件时,我必须如何格式化该文件以使用PHPMailer将其附加到电子邮件中 就这样,关于这个问题,我的两个

我正在使用PHPMailer、JavaScript和PHP,通过我的代码我将电子邮件发送给特定的用户,下一步是用电子邮件附加一个文件

但我有两个问题:

  • 第一个与以下代码相关:
  • HTML部分:

    <input type="file" name="myFile" id="myFile" required/>
    
    在(1)中,如何发送附加到php文件的输入文件

  • 当我在PHP中成功获得该文件时,我必须如何格式化该文件以使用PHPMailer将其附加到电子邮件中
  • 就这样,关于这个问题,我的两个问题,我感谢你的回答和建议

    谢谢你的时间和关注

    编辑:

    我的PHP文件:

    require '../PHPMailer_5.2.4/PHPMailerAutoload.php';
    $server = "localhost";
    $user = "root";
    $pass = "pass";
    $bd = "BD";
    $strHTML1=$_GET["cod"];
    $strHTML2=$_GET["subject"];
    
    
     // HOW DO I _GET THE FILE FROM JS AND FORMAT FILE PROPERLY TO THE MAIL?
    
    
    $strHTML3= $strHTML1.$strHTML2;
    
    $mail="mail@gmail.com";
    
    session_start(); 
    
    $conexion = mysqli_connect($server, $user, $pass,$bd) 
    or die("ERROR");
    
     $mail = new PHPMailer();
     $mail->isSMTP();
     $mail->CharSet = "UTF-8";
     $mail->SMTPDebug = 2;
     $mail->Mailer = "smtp";
     $mail->WordWrap = 50;  
     $mail->PluginDir = "../tickets/PHPMailer_5.2.4/";
     $mail->Debugoutput = 'html';
     $mail->Host = 'smtp.gmail.com';
     $mail->Port = 465;
     $mail->SMTPSecure = 'ssl';
     $mail->SMTPAuth = true; 
     $mail->Username = "mail@site.com.en";  
     $mail->Password = "12345";
     $mail->SMTPSecure = 'ssl';  
     $headers = "MIME-Version: 1.0\r\n";
     $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
     $headers .= "From:Home\r\n"; 
     $mail->AddAddress($mail, "test");
     $mail->isHTML(true); 
     $mail->Subject = $strHTML2;
     $mail->Body    =$strHTML3;
    
    
    
     if(!$mail->send()) {
         echo 'Message could not be sent.';
         echo 'Mailer Error: ' . $mail->ErrorInfo.'  ';
         exit;
       }
     $close = mysqli_close($conexion) 
     or die("ERROR");
    

    您正在尝试使用get方法发送文件。Get方法不支持多部分。对于上传文件,您应该使用post方法,表单应该有多部分/表单数据。您的表单应该像

    <form method="post" action="" enctype="multipart/form-data" id="sendMailForm">
    <input type="hidden" name="code" id="code" value="1234"/>
    <input type="hidden" name="subject" id="subject" value="Hello My Friends"/>
    <input type="submit" value="Send Mail" />
    
    在服务器端更新附加文件的发送邮件代码,并在post方法而不是get方法中获取数据

    require '../PHPMailer_5.2.4/PHPMailerAutoload.php';
    $server = "localhost";
    $user = "root";
    $pass = "pass";
    $bd = "BD";
    $strHTML1=$_POST["cod"];
    $strHTML2=$_POST["subject"];
    
    $strHTML3= $strHTML1.$strHTML2;
    
    $mail="mail@gmail.com";
    
    session_start(); 
    
    $conexion = mysqli_connect($server, $user, $pass,$bd) 
    or die("ERROR");
    
     $mail = new PHPMailer();
     $mail->isSMTP();
     $mail->CharSet = "UTF-8";
     $mail->SMTPDebug = 2;
     $mail->Mailer = "smtp";
     $mail->WordWrap = 50;  
     $mail->PluginDir = "../tickets/PHPMailer_5.2.4/";
     $mail->Debugoutput = 'html';
     $mail->Host = 'smtp.gmail.com';
     $mail->Port = 465;
     $mail->SMTPSecure = 'ssl';
     $mail->SMTPAuth = true; 
     $mail->Username = "mail@site.com.en";  
     $mail->Password = "12345";
     $mail->SMTPSecure = 'ssl';  
     $headers = "MIME-Version: 1.0\r\n";
     $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
     $headers .= "From:Home\r\n"; 
     $mail->AddAddress($mail, "test");
     $mail->isHTML(true); 
     $mail->Subject = $strHTML2;
     $mail->Body    =$strHTML3;
    
     //Attach file in sendmail - 
    
    if (isset($_FILES['myFile']) &&
        $_FILES['myFile']['error'] == UPLOAD_ERR_OK) {
        $mail->AddAttachment($_FILES['myFile']['tmp_name'],
        $_FILES['uploaded_file']['name']);
    }
    
     if(!$mail->send()) {
         echo 'Message could not be sent.';
         echo 'Mailer Error: ' . $mail->ErrorInfo.'  ';
         exit;
       }
     $close = mysqli_close($conexion) 
     or die("ERROR");
    

    无法使用$.get上载文件。应该使用$.post。您的代码和主题是固定的还是使用文本框输入的?请附上发送电子邮件的php代码。Prakash是对的,我的错,更正为“post”,我正在添加我的php邮件发送代码,请稍候。添加了php代码。发生了什么事,我的编辑不起作用,再次编辑。真棒!我会试试你的解决方案,如果成功了,我会告诉你,谢谢你的帮助。
    <form method="post" action="" enctype="multipart/form-data" id="sendMailForm">
    <input type="hidden" name="code" id="code" value="1234"/>
    <input type="hidden" name="subject" id="subject" value="Hello My Friends"/>
    <input type="submit" value="Send Mail" />
    
    $("#sendMailForm").submit(function(evt){     
       evt.preventDefault();
       var formData = new FormData($(this)[0]); 
       SendMail(formData);
       return false;
     });
    
    function SendMail(formData){
        $.ajax({
         url: 'SendMail.php',
         type: 'POST',
         data: formData,
         async: false,
         cache: false,
         contentType: false,
         enctype: 'multipart/form-data',
         processData: false,
         success: function (response) {
           alert(response);
         }
       });
    }
    
    require '../PHPMailer_5.2.4/PHPMailerAutoload.php';
    $server = "localhost";
    $user = "root";
    $pass = "pass";
    $bd = "BD";
    $strHTML1=$_POST["cod"];
    $strHTML2=$_POST["subject"];
    
    $strHTML3= $strHTML1.$strHTML2;
    
    $mail="mail@gmail.com";
    
    session_start(); 
    
    $conexion = mysqli_connect($server, $user, $pass,$bd) 
    or die("ERROR");
    
     $mail = new PHPMailer();
     $mail->isSMTP();
     $mail->CharSet = "UTF-8";
     $mail->SMTPDebug = 2;
     $mail->Mailer = "smtp";
     $mail->WordWrap = 50;  
     $mail->PluginDir = "../tickets/PHPMailer_5.2.4/";
     $mail->Debugoutput = 'html';
     $mail->Host = 'smtp.gmail.com';
     $mail->Port = 465;
     $mail->SMTPSecure = 'ssl';
     $mail->SMTPAuth = true; 
     $mail->Username = "mail@site.com.en";  
     $mail->Password = "12345";
     $mail->SMTPSecure = 'ssl';  
     $headers = "MIME-Version: 1.0\r\n";
     $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
     $headers .= "From:Home\r\n"; 
     $mail->AddAddress($mail, "test");
     $mail->isHTML(true); 
     $mail->Subject = $strHTML2;
     $mail->Body    =$strHTML3;
    
     //Attach file in sendmail - 
    
    if (isset($_FILES['myFile']) &&
        $_FILES['myFile']['error'] == UPLOAD_ERR_OK) {
        $mail->AddAttachment($_FILES['myFile']['tmp_name'],
        $_FILES['uploaded_file']['name']);
    }
    
     if(!$mail->send()) {
         echo 'Message could not be sent.';
         echo 'Mailer Error: ' . $mail->ErrorInfo.'  ';
         exit;
       }
     $close = mysqli_close($conexion) 
     or die("ERROR");