gpt4 book ai didi

javascript - 从我的网页发送电子邮件时出错

转载 作者:搜寻专家 更新时间:2023-10-31 21:27:33 25 4
gpt4 key购买 nike

我创建了一个网页,在将有效的电子邮件地址插入表单后使用 Javascript 和 PHP 发送电子邮件。

Form 对插入的邮件执行验证并在出现错误或发送失败时显示弹出窗口。它工作正常。

如果一切顺利,应该显示一个绿色的弹出窗口,但它并没有发生。邮件已发送,我看到以下错误(如果我使用 #button-send 表单):

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

代码如下:

PHP

<?php 
require 'mandrill.php';
$send_email_to = "contacts@email.it";
$email_subject = "Feedback landing page";

function send_email($email)
{
global $send_email_to;
global $email_subject;
$headers = "MIME-Version: 1.0" . "rn";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "rn";
$headers .= "From: ".$email. "rn";
$message = "<strong>Email = </strong>".$email."<br>";


try{
$mandrill = new Mandrill("mandrillcode");

//this is not useful
/*$message = array(
'html' => '<p><strong>Email = </strong>'.$email.'</p>',
'text' => 'Example text content',
'subject' => 'Feedback landing page ',
'from_email' => $email,
'from_name' => $email,
'to' => array(
array(
'email' => 'contacts@email.it',
'name' => 'Recipient Name',
'type' => 'to'
)
)
);

$result = $mandrill->messages->send($message, $async, $ip_pool, $send_at);
print_r($result); */


$template_name = 'autoresponder';

$template_content = array(
array(
'name' => 'example name',
'content' => 'example content'
)
);

$message = array(
'html' => '<p>this is a test message with Mandrills PHP wrapper!</p>',
'subject' => 'Feedback email',
'from_email' => 'contacts@email.it',

'to' => array(
array(
'email' => $email,
'name' => 'Recipient 1'
)
),
'merge_vars' => array(
array(
'rcpt' => $email,
'vars' => array(
array(
'name' => 'merge2',
'content' => 'merge2 content'
)
)
)
)

);

print_r($mandrill->messages->sendTemplate($template_name, $template_content, $message));
return true;
}

catch(Mandrill_Error $e) {
// Mandrill errors are thrown as exceptions
echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
// A mandrill error occurred: Mandrill_Unknown_Subaccount - No subaccount exists with the id 'customer-123'
throw $e;
}


}

function validate($email)
{
$return_array = array();
$return_array['success'] = '1';

$return_array['email_msg'] = '';

if($email == '')
{
$return_array['success'] = '0';
$return_array['email_msg'] = 'inserire email';
}
else
{
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email)) {
$return_array['success'] = '0';
$return_array['email_msg'] = 'inserire email valida';
}
}




return $return_array;
}

$email = $_POST['email'];

$return_array = validate($email);

if($return_array['success'] == '1')
{
send_email($email);
}
header('Content-type: text/json');
echo json_encode($return_array);
die();
?>

JS

$(document).ready(function(){   
$('#button-send').click(function(event){

event.preventDefault();
$.ajax({

type: 'POST',

url: 'send_form_email.php',

data: $('#email-form').serialize(),

dataType: "json",

success: function(html) {

if(html.success == '1')
{

console.log("#button-send-1 html.success 1");
$('.formdone').show("slow").delay(5000).hide("slow");
}

else
{
console.log("#button-send-1 html.success not 1");
$('.formfail').show("slow").delay(5000).hide("slow");
}

console.log("success");

},

error: function(XMLHttpRequest, textStatus, errorThrown){

console.log("#button-send-1 not html.success");

console.log("textStatus = "+textStatus);
console.log("XMLHttpRequest= "+XMLHttpRequest);
console.log("errorThrown= "+errorThrown);

}
});
});


$('#button-send-2').click(function(event){

event.preventDefault();

$.ajax({
type: 'POST',
url: 'send_form_email.php',
data: $('#email-form-2').serialize(),

success: function(html) {
if(html.success == '1')
{
console.log("#button-send-2 html.success 1");
$('.formdone2').show("slow").delay(5000).hide("slow");

}

else
{

console.log("#button-send-2 html.success not 1");
$('.formfail2').show("slow").delay(5000).hide("slow");

}
console.log("#button-send-2 success");

},

error: function(){
console.log("#button-send-2 not html.success");
}

});
});
});

编辑:我在 php 文件中添加了 error_reporting(E_ALL);,我发现有些变量没有初始化。特别是 $async $ip_pool $send_at。我添加了以下内容:

$async = false;
$ip_pool = null;
$send_at = null;

之前

$result = $mandrill->messages->send($message, $async, $ip_pool, $send_at);

但没有任何变化。查看我的提供商的 php 错误日志,没有新的 php 错误。

我还注意到第一次发送没有用 $mandrill->messages->send($message, $async, $ip_pool, $send_at);。只需要第二个。我删除了第一个但没有任何变化。

正确的代码:

<?php 
error_reporting(E_ALL);
require 'mandrill.php';
$send_email_to = "contacts@docgem.it";
$email_subject = "Feedback landing page DocGem";
function send_email($email)
{
global $send_email_to;
global $email_subject;
$headers = "MIME-Version: 1.0" . "rn";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "rn";


$headers .= "From: ".$email. "rn";
$message = "<strong>Email = </strong>".$email."<br>";


try{
$mandrill = new Mandrill("mfSC_K7XBO8Kj5nW0VobjQ");

$template_name = 'docgem autoresponder';

$template_content = array(
array(
'name' => 'example name',
'content' => 'example content'
)
);

$message = array(
'html' => '<p>this is a test message with Mandrills PHP wrapper!</p>',
'subject' => 'Feedback landing page DocGem',
'from_email' => 'contacts@docgem.it',

'to' => array(
array(
'email' => $email,
'name' => 'Recipient 1'
)
),
'merge_vars' => array(
array(
'rcpt' => $email,
'vars' => array(
array(
'name' => 'merge2',
'content' => 'merge2 content'
)
)
)
)

);



json_encode($mandrill->messages->sendTemplate($template_name, $template_content, $message));


return true;
}

catch(Mandrill_Error $e) {
// Mandrill errors are thrown as exceptions
echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
// A mandrill error occurred: Mandrill_Unknown_Subaccount - No subaccount exists with the id 'customer-123'
throw $e;
}


}

function validate($email)
{
$return_array = array();
$return_array['success'] = '1';
$return_array['email_msg'] = '';
if($email == '')
{
$return_array['success'] = '0';
$return_array['email_msg'] = 'inserire email';
}
else
{
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email)) {
$return_array['success'] = '0';
$return_array['email_msg'] = 'inserire email valida';
}
}

return $return_array;
}


$email = $_POST['email'];

$return_array = validate($email);

if($return_array['success'] == '1')
{

send_email($email);

}
header('Content-type: text/json');
echo json_encode($return_array);

?>

最佳答案

在 JSON 相关输出中,特别是当它要被 javascript 读取时,您需要禁用错误报告,并删除 die();在 echo json_encode 之后...

<?php
error_reporting(0);
...
...
...
header('Content-Type:application/json;');
echo json_encode($return_array);

关于javascript - 从我的网页发送电子邮件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33944792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com