2015-02-25 4 views
1

Я пытаюсь отправить основное электронное письмо с использованием почтовой функции PHP и AJAX. Ошибок нет, но письмо не отправляется. Вот моя функция AJAX:PHP почтовая функция не отправляет электронную почту

<script language="javascript"> 
function sendMail(email){ 
var xmlhttp = new XMLHttpRequest(); 
var url = "/mail.php"; 
xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     alert("entrei"); 
     document.getElementById("email").value = xmlhttp.responseText; 
    } 
} 
xmlhttp.open("POST", url+"?email=" + email, true); 
xmlhttp.send(); 
} 
</script> 

Вот мой PHP код:

<?php 
$Name = "Da Duder"; //senders name 
$email = "[email protected]"; //senders e-mail adress 
$recipient = "[email protected]"; //recipient 
$mail_body = "The text for the mail..."; //mail body 
$subject = "Subject for reviever"; //subject 
$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields 
mail($recipient, $subject, $mail_body, $header); //mail command :) 
?> 

Кто-нибудь знает, что случилось?

EDIT.:Btw, это мой php.ini почты конфигурации и у меня есть все это настроить в XAMPP:

; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury 
SMTP = localhost 
smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
;sendmail_from = [email protected] 

EDIT2.:I изменил мой PHP-код и теперь я получаю следующее ошибка:

Warning: mail(): SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. ev7sm64500334wjb.47 - gsmtp in C:\xampp\htdocs\path\public_html\mailtest.php on line 10 
+1

Вы пробовали простой посыл без какой-либо логики и без AJAX, чтобы увидеть, если это будет отослано? т.е.: mail ('[email protected]', 'test', 'basic test'); – RamRaider

+0

Да, используя этот код:

+0

Вы пытаетесь отправить с помощью защищенного сервера. Для отправки электронной почты с помощью Gmail вам потребуется нечто большее, чем просто «mail». – M1ke

ответ

0

Таким образом, если мы предположим, что вы можете запустить этот скрипт изначально и возвращает failed ...

вы в состоянии получить доступ к самой (корневой) сервер? Скорее всего, у вас нет почтовых модулей, установленных локально. Если на сервере работает Debian (например, Ubuntu), запустите apt-get install mailutils и повторите попытку.

(Если работает функция не возвращает неудачу, что он возвращает?)

+0

он возвращает 1, что я предполагаю, означает успех –

+1

Ваш сценарий должен быть эхом «Нет электронной почты», «успеха» или «неудачного».Какой из них выводит? (Если он не выводит ни одно из них, то есть ошибки в другом месте). – M1ke

+0

Это эхо "1" .. –

0

Вы пытаетесь отправить через прокси-сервер. Вам нужно что-то большее, чем просто mail, чтобы отправить электронное письмо с помощью Gmail.

Вы можете использовать открытый исходный код (и очень популярен) PHP mailer library.

Вот проект на GitHub, который имеет весь процесс использования PHPMailer и отправку с помощью Gmail: https://github.com/abusalam/GMail-SMTP

Смежные вопросы