Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Получить результат отправки с другого сервера (https://javascript.ru/forum/jquery/77372-poluchit-rezultat-otpravki-s-drugogo-servera.html)

kk450 24.04.2019 08:16

Получить результат отправки с другого сервера
 
Всем привет

Нужна помощь. Ситуация такая сделал бесплатный сайт на бесплатном сайтостроителе на него нужно прикрутить форму, само собой отправлять письма бесплатно письма сервис не даст. Хочу прикрутить туда форму, а отправлять со своего хостинга.

На конструкторе висит форма:
<script>
function sendContact() {
	var valid;	
	valid = validateContact();
	if(valid) {
		jQuery.ajax({
		url: "http://mysite.com/sm/777/contact_mail.php",
		data:'userName='+$("#userName").val()+'&userTel='+$("#userTel").val(),
		type: "POST",
		success:function(data){
		$("#mail-status").html(data);
		},
		error:function (){}
		});
	}
}

function validateContact() {
	var valid = true;	
	$(".demoInputBox").css('background-color','');
	$(".info").html('');
	
	if(!$("#userName").val()) {
		$("#userName-info").html("(required)");
		$("#userName").css('background-color','#FFFFDF');
		valid = false;
	}
	if(!$("#userTel").val()) {
		$("#userTel-info").html("(required)");
		$("#userTel").css('background-color','#FFFFDF');
		valid = false;
	}
	
	return valid;
}
</script>

<div id="frmContact">
<div id="mail-status"></div>
<div>
<label style="padding-top:20px;">Имя</label>
<span id="userName-info" class="info"></span><br/>
<input type="text" name="userName" id="userName" class="demoInputBox">
</div>
<div>
<label>Телефон</label> 
<span id="userTel-info" class="info"></span><br/>
<input type="text" name="userTel" id="userTel" class="demoInputBox">
</div>
<div>
<button name="submit" class="btnAction" onClick="sendContact();">Отправить</button>
</div>
</div>


А на моем хостинге обработчик:

<?php
$toEmail = "kkkkkkkkkkkkk@gmail.com"; // кому
$fromEmail = "robot@mysite.com"; // от кого
$fromEmailName = "Уведомление"; // от кого
$fromSubject = "Заказ звонка MFи";

$fromTime = date("H:i m.d.y");

$fromContent =  $_POST["userName"]." ".$_POST["userTel"]."\n".$fromTime;


$mailHeaders = "From: " . $fromEmailName . "<". $fromEmail .">\r\n";
if(mail($toEmail, $fromSubject, $fromContent , $mailHeaders)) {
print "<p class='success'>Ваши данные отправлены.</p>";
} else {
print "<p class='Error'>Problem in Sending Mail.</p>";
}
?>

kk450 24.04.2019 08:18

Если форма и данные лежат на моем хостинге то все норм письма уходят и подтверждение выводится, но если форма находится на другом сервере то письма отправляются без сообщения об успешной отправке.

laimas 24.04.2019 08:34

Цитата:

Сообщение от kk450
Если форма и данные лежат на моем хостинге то все норм

А в противном случае, это чужой домен, отсюда и проблемы. Разрешите на своем хосте кроссдоменные запросы для этого бесплатного домена и все будет норма.

print "<p class='success'>Ваши данные отправлены.</p>"; - получается отправка для русских, а неудачи для англичан - print "<p class='Error'>Problem in Sending Mail.</p>"; ? :)

И строго говоря, здесь данные отданы sendmail, а вот будут ли они отправлены адресату, это вопрос.

kk450 24.04.2019 08:38

Цитата:

Сообщение от laimas (Сообщение 506984)
А в противном случае, это чужой домен, отсюда и проблемы. Разрешите на своем хосте кроссдоменные запросы для этого бесплатного домена и все будет норма.

print "<p class='success'>Ваши данные отправлены.</p>"; - получается отправка для русских, а неудачи для англичан - print "<p class='Error'>Problem in Sending Mail.</p>"; ? :)

И строго говоря, здесь данные отданы sendmail, а вот будут ли они отправлены адресату, это вопрос.

По поводу русского и английского - это мелочи пока просто тестирую, потом исправлю )

а как разрешить кроссдоменные запросы? можете подсказать?

laimas 24.04.2019 08:46

Цитата:

Сообщение от kk450
а как разрешить кроссдоменные запросы?

Передать соответствующие заголовки сервером. Не буду их писать, спросите гугл, для "прочесть" ибо их не один, да и не всегда передачей одного можно разрешить.


Часовой пояс GMT +3, время: 04:10.