İletişim Formu Neden Mail Göndermiyor?
-
İyi akşamlar,
web sitesinde iletişim sayfasında mesaj göndermeyi deneyince gönderilemedi hatası veriyo, html site mail göndermesi için php sayfası da var lakin göndermiyo maili.
php dosyasını okuduğu belli ama çünkü gönderilemedi hatası php'den gelen yazı, yani orayı tanıma konusunda sıkıntı yok. peki sizce sıkıntı neden olabilir?
-
Php ve html kodlarını yazamısın
no: sadece iletişim formu ile ilgili html olarak bi formdur o birde php de post ederek gelen ve bize mail atan scriptler gerek
emuxa tarafından 03/Eyl/15 01:57 tarihinde düzenlenmiştir -
<?php
if($_POST)
{
$to_Email = "iletisim@ornek.com";
$subject = 'mail'; //Subject line for emails
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
//exit script outputting json data
$output = json_encode(
array(
'type'=>'error',
'text' => 'Request must come from Ajax'
));
die($output);
}
//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
$output = json_encode(array('type'=>'error', 'text' => 'Alanlar boş!'));
die($output);
}
//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
$user_Message = str_replace("\'", "'", $user_Message);
$user_Message = str_replace("'", "'", $user_Message);
//additional php validation
if(strlen($user_Name)<3) // If length is less than 3 it will throw an HTTP error.
{
$output = json_encode(array('type'=>'error', 'text' => 'Lütfen doğru bir isim girin!'));
die($output);
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
$output = json_encode(array('type'=>'error', 'text' => 'Lütfen doğru bir adres girin!'));
die($output);
}
if(strlen($user_Message)<5) //check emtpy message
{
$output = json_encode(array('type'=>'error', 'text' => 'Mesajınız çok kısa! Lütfen birşeyler daha yazın.'));
die($output);
}
//proceed with PHP email.
$headers = 'From: '.$user_Email.'' . "\r\n" .
'Reply-To: '.$user_Email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$sentMail = @mail($to_Email, $subject, $user_Message . "\r\n\n" .'-- '.$user_Name. "\r\n" .'-- '.$user_Email, $headers);
if(!$sentMail)
{
$output = json_encode(array('type'=>'error', 'text' => 'Gönderilemedi!'));
die($output);
}else{
$output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_Name .'! Mesajınız için teşekkürler!'));
die($output);
}
}
?>
-
Sunucu da sendmail() fonksiyonu açık olmayabilir. SPam mailler nedeniyle genel olarak artık cPanel bile default olarak kapabiliyor.
SMTP mail kullanmalısın. Tr de ki sunucular için portu da 587 olarak ayarlamayı unutma ;)
-
PLaXToR bunu yazdı
Sunucu da sendmail() fonksiyonu açık olmayabilir. SPam mailler nedeniyle genel olarak artık cPanel bile default olarak kapabiliyor.
SMTP mail kullanmalısın. Tr de ki sunucular için portu da 587 olarak ayarlamayı unutma ;)
denemek için maili gmail adresi veripte denedim ama yine göndermedi,
-
yanılmıyorsam bu hazır bir mail form
HTML e bunu koy tabi classlarını kendine göre ayarla
<form id="contact_form" name="contact_form" class="contact_form" method="post" action="gonder.php">
<label class="i_label">Ad Soyad </label>
<input name="ad_soyad" type="text" class="validate[required] text-long i_input" value="" id="i_name"> <label class="i_label">Telefon </label>
<input name="tel" type="text" class="validate[required] text-long i_input" value="" id="tel"><label class="i_label">Email </label>
<input name="email" type="text" class="validate[custom[email]] text-long i_input" value="" id="email"><label class="i_label">Mesaj </label>
<div class="textarea"><textarea name="mesaj" class="validate[required] text-long i_textarea" id="mesaj"></textarea></div>
<div class="cl"></div>
<div class="sea-but" style="float:right;margin-right: 10px;margin-top:0;"><input name="button" type="submit" class="trans but" value="Gönder" id="submit"></div>
</form>
Buda php
<?php
$ad_soyad = $_POST["ad_soyad"];
$tel = $_POST["tel"];
$email = $_POST["email"];
$mesaj = $_POST["mesaj"];
$adres = "info@emuxa.com"; // Buraya e-postanin gonderilecegi mail adresini yaz
$konu = "Iletisim Formu";
$tarih = date('Y-m-d');
$ip_adresi = $_SERVER['REMOTE_ADDR'];
if(($ad_soyad=="") or ($tel =="") or ($email=="") or ($mesaj=="")){
echo "<center>Lutfen Ad Soyad, Telefon, E-Mail ve Mesaj alanlarini bos birakmayiniz.<br><a href=index.php>Geri don</a></center>";
}
else
{
$mesajveri.="ILETISIM FORMU MESAJI<br/><br/>";
$mesajveri.="E-Mail: ".$email."<br/>";
$mesajveri.="Telefon: ".$tel."<br/>";
$mesajveri.="Tarih: ".$tarih."<br/>";
$mesajveri.="IP Adresi :".$ip_adresi."<br/>";
$mesajveri.="Mesaj: ".$mesaj;
$mesajyolla = mail($adres, $konu, $mesajveri, "Content-type: text/html; charset=utf-8\r\n");
if($mesajyolla)
{
echo "<center>Iletisim mailiniz bize ulasti, en kisa surede cevaplanacaktir. Ilginiz icin tesekkur ederiz.<br><a href=index.php>Anasayfa</a></center>";
}
else
{
echo "<center>E-Mail gonderilirken hata olustu! Lutfen daha sonra tekrar deneyiniz.</center>";
}
}
?>
emuxa tarafından 03/Eyl/15 14:01 tarihinde düzenlenmiştir -
mail fonksiyonunun başındaki "@" işaretini kaldırıp dener misin ? @ hata basmasını engelliyor, ne hata verdiğini görmeden yorum yapmak mümkün değil.
-
kuvvetle muhtemel mail fonksiyonu engellidir PHPMailer kullanırsan sorun çözülür
-
PHPMailler için https://yadi.sk/d/cip-r9lr8rJSu bu linkteki dosyayı kullanabilirsiniz.
gmaile göre ayarlı şuanda yinede sorun yaşarsanız kodlarda altaki düzenlemeyi yaparsanız sorununuz çözülür 3-4 gün önce aynı sorunu bende yaşadım ilk kodlar çalışmadı sunucuda ssl aktifmişti alttaki düzenleyi yaptım sorun düzeldi gmail yerine hotmail kullanacaksanız sadece host dosyasında smtp.live.com yapmanız yeterli
$mail->Host = 'smtp.gmail.com'; $mail->Port = 465; $mail->SMTPSecure = 'ssl';
PHP dosyanız onuda düzenledim :)
<?php if($_POST) { //check if its an ajax request, exit if not if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { //exit script outputting json data $output = json_encode( array( 'type'=>'error', 'text' => 'Request must come from Ajax' )); die($output); } //check $_POST vars are set, exit if any missing if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"])) { $output = json_encode(array('type'=>'error', 'text' => 'Alanlar boş!')); die($output); } //Sanitize input data using PHP filter_var(). $user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING); $user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL); $user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING); $user_Message = str_replace("\'", "'", $user_Message); $user_Message = str_replace("'", "'", $user_Message); //additional php validation if(strlen($user_Name)<3) // If length is less than 3 it will throw an HTTP error. { $output = json_encode(array('type'=>'error', 'text' => 'Lütfen doğru bir isim girin!')); die($output); } if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation { $output = json_encode(array('type'=>'error', 'text' => 'Lütfen doğru bir adres girin!')); die($output); } if(strlen($user_Message)<5) //check emtpy message { $output = json_encode(array('type'=>'error', 'text' => 'Mesajınız çok kısa! Lütfen birşeyler daha yazın.')); die($output); } //Construct the message. $mesajlar.="<b>İletişim Formu Bildirimi</b><br/><br/>"; $mesajlar.="Ad Soyad: " . $user_Name . "<br/>"; $mesajlar.="E-Mail: " . $user_Email . "<br/><br/>"; $mesajlar.="Mesaj: " . $user_Message . "<br/>"; //Mail the message - for production include 'class.phpmailer.php'; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPDebug = 0; // hata ayiklama: 1 = hata ve mesaj, 2 = sadece mesaj $mail->SMTPAuth = true; $mail->Host = ''; //smtp sunucunuz hotmail= stmp.live.com, gmail=smtp.gmail.com, yandex=smtp.yandex.com.tr $mail->Port = 465; //sunucuda ssl aktif ise böyle kalsın değilse 587 yapın $mail->SMTPSecure = 'ssl'; //sunucuda ssl aktif ise böyle kalsın değilse tls yapın $mail->Username = ''; //smtp hesabınız adsoyad@gmail.com şeklinde $mail->Password = ''; //şifreniz $mail->SetFrom($mail->Username, 'Gönderenin adı'); $mail->AddAddress('gönderilecek adres', 'gönderilecek kişinin adı'); $mail->AddReplyTo($user_Email, $user_Name); $mail->CharSet = 'UTF-8'; $mail->IsHTML(true); $mail->Subject = 'İletişim Formu Bildirimi'; $content = '<div style="background: #eee; padding: 10px; font-size: 14px">'.$mesajlar.'</div>'; $mail->MsgHTML($content); if(!$mail->Send()) { $output = json_encode(array('type'=>'error', 'text' => 'Gönderilemedi!')); die($output); }else{ $output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_Name .'! Mesajınız için teşekkürler!')); die($output); } } ?>
farlo54 tarafından 03/Eyl/15 17:00 tarihinde düzenlenmiştir -
hepinize cevaplarınız için ayrı ayrı teşekkür ederim,
evet hazir iletişim formu,
sistemi test etmek için aynı dosyaları başka bi yerdeki hostuma taşıyıp denedim orda sorunsuz çalıştı. yani aslında kodlarda hiç bi sıkıntı yok demekki.
o zaman sıkıntı hata veren sitenin hostinginin bulunduğu sistemle alakalı (isimtescil), destek talebi oluşturdum gelen cevapta verilen linkten webmaile giriş yapabiliyorum lakin cPanel kısmında baglanmiyor web maile, dünden beri baglanti hatasi veriyo hep. iletisim formunun çalışmamasi da bununla ilgili sanirim :)
-
Site sana aitse doğrudan unpublic'teki bir dosyaya basabilirsin gelen mesajları.
