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

2023-12-02

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

但我对此有两个问题:

  1. 第一个与以下代码相关:

HTML部分:

<input type="file" name="myFile" id="myFile" required/>

我正在使用这个来附加文件,这是电子邮件的一部分

JavaScript部分,我发送电子邮件的函数(到目前为止我可以发送带有测试数据的电子邮件)

function SendMail(){
    var cod="1234"; var subject="hello my friend";
    $.get("SendMail.php?cod="+cod+"&subject="+subject+""); // (1)
}

在 (1) 中,我如何发送附加到我的 php 文件的输入文件?

Like,

    $.get("SendMail.php?cod="+cod+"&subject="+subject+"&mail="FileRelatedWithInputID);
  1. 当我在 PHP 中成功获取文件时,我如何格式化它以使用 PHPMailer 将其附加到电子邮件中?

就是这样,我关于这个问题的两个问题,感谢您的回答和建议。

感谢您的时间和关注。

Edited:

我的 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="[email protected]";

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 = "[email protected]";  
 $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 方法,并且表单应该具有 multipart/form-data。你的表格应该像

<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" />

在表单提交中调用SendMail函数。

$("#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);
     }
   });
}

在服务器端更新附加文件的发送邮件代码,并在 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="[email protected]";

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 = "[email protected]";  
 $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");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐