Я использую PHPMailer, JavaScript и PHP, через свой код я отправляю электронное письмо конкретному пользователю, следующий шаг – это прикрепить файл с адресом электронной почты.
Но у меня есть два вопроса:
Часть 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) }
приfunction SendMail(){ var cod="1234"; var subject="hello my friend"; $.get("SendMail.php?cod="+cod+"&subject="+subject+""); // (1) }
В (1) как я могу отправить входной файл, прикрепленный к моему файлу php?
Подобно,
$.get("SendMail.php?cod="+cod+"&subject="+subject+"&mail="FileRelatedWithInputID);
Вот и все, мои два вопроса по этому вопросу, я ценю ваши ответы и предложения.
Спасибо за ваше время и внимание.
Отредактировано:
Мой 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 не поддерживает multipart. Для загрузки файла вы должны использовать метод 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 в форме submit.
$("#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); } }); }
Обновите свой почтовый код отправки на стороне сервера для файла attach и получите данные в методе 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");