У меня есть одна функция в моем jquery-файле, который вставляет данные в базу данных и отправляет одну почту. Это нормально работает без phpmailer, показывая предупреждение, но когда я помещаю предупреждение о генерации кода phpmailer, не работаю (но вставляем в базу данных и отправляем электронную почту), кто-то знает, почему это происходит, и sory для плохого английского, thx для справки.
Обновление: я уже получил уведомление об изменении json_encode для возврата в webservice и изменения предупреждения (ответа); для возврата предупреждения (ответа); по почтовому коду, но нужно поставить предупреждение после закрытия метода post, если не делайте этого, чтобы возвращаемое предупреждение не было, некоторые идеи, почему нужно, чтобы второе предупреждение после сообщения метода получало возврат, thx.
Мой почтовый индекс
$.post('insert',{val: message,name: $("#firstName").val(),desktop_id: $("#desktop_id").val(),permis: $("#permis").val(),phone: $("#phone").val(),mail: $("#mail").val()}, function (response) {
//feedback
alert(response);
});
Мой веб-сервис
$app->post('/insert', function(){
require_once('db/dbconnect.php');
$name = $_POST['name'];
$phone= $_POST['phone'];
$phone=(int)$phone;
$mail =$_POST['mail'];
$desktop_id = $_POST['desktop_id'];
$desktop_id=(int)$desktop_id;
$permis=$_POST['permis'];
$date = date("Y-m-d");
$data=array("name"=>$name,"phone"=>$phone,"mail"=>$mail,"desktop_id"=>$desktop_id,"permis"=>$permis,"date"=>$date);
$client=$db->client();
$result = $client->insert($data);
if($result){
$response = 'Success';
}
else{
$response = 'Error';
}
//I remove the variables data
include_once("phpmailer/PHPMailerAutoload.php");$To = $destinatarios;
$Subject = $assunto;
$Message = $value;
$Host = 'mail.'.substr(strstr($usuario, '@'), 1);
$Username = $usuario;
$Password = $senha;
$Port = "587";
$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';
$body = $Message;$mail-> IsSMTP(); // telling the class to use SMTP$mail-> Host = $Host; // SMTP server$mail-> SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only$mail-> SMTPAuth = true; // enable SMTP authentication$mail-> Port = $Port; // set the SMTP port for the service server$mail->addAttachment('mpdf/temp/doc.pdf');$mail-> Username = $Username; // account username $mail-> Password = $Password; // account password$mail-> SetFrom($usuario, $nomeDestinatario);
$mail-> Subject = $Subject;
$mail-> MsgHTML($body);
$mail-> AddAddress($To, "");
if(!$mail-> Send())
{
}
else
{
}
echo json_encode($response, JSON_UNESCAPED_UNICODE);
});
Когда вы устанавливаете
$response = 'Error: '. print($mail->ErrorInfo);
или$response = 'Success'
, а затемecho json_encode($response, JSON_UNESCAPED_UNICODE)
), похоже, что вы пытаетесь превратить неверно отформатированную строку в JSON.print
выводит в браузер, он не возвращает строку. Я подозреваю, что вам нужен оператор конкатенации.
, а также его формат как действительный JSON.$response = array('Message' => 'Error: ' . $mail->ErrorInfo)
для ошибок и$response = array('Message' => 'Success')
json_encode()
, потому что то, что вы пытаетесь закодировать, не может быть превращено в действительную строку json.