PHP ile email gönderme

Başlatan Kaisiersose, 14 Mart 2009 - 00:23:24

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

the_last_man

Merhaba millet,

aranıza bu gün itibariyle katıldım. Zira 3 gündür can sıkıcı bir problemle uğraşıyorum. Yardımlarınıza ihtiyacım var. Kullandığım bir hazır şablonda contact form var. Formun gönder tuşuna basılınca mail atıyor. Sendmail.php dosyası vasıtasıyla. Ancak ne yaparsam yapayım email adresi dışında ki bilgileri post ettiremiyorum. Yani html formundan gelen diğer bilgileri (daha doğrusu gelmesi gereken) maile yazdıramıyorum, mail içeriği boş olarak gidiyor. İşin ilginç yanı, yine formdan gelen email adresi sorun çıkartmıyor. O değişkeni gören php diğerlerini neden göremiyor anlayamadım. Kodları kopyalamadım ama gerekirse kopyalarım.

Teşekkürler

ersinkandemir

Kendi başlığını açsan daha iyi olurdu ama HTML formun ve sendmail.php'nin içeriğini buraya geçebilirsen yardımcı olurum.
Where there's a shell, there's a way.



the_last_man

Walla başlık açmayı beceremedim desem  ;D

form :
<form id="contactForm" action="sendemail.php" method="POST" class="form-light mt-20" role="form" novalidate= "novalidate">
                <div class="form-group">
                    <label>İSİM</label>
                    <input id="name" name="name" type= "text" class="form-control" required placeholder="İSMİNİZ">
                </div>
                <div class="row">
                    <div class="col-md-6">
                        <div class="form-group">
                            <label>Email</label>
                            <input id="email" name="email" type="email" class="form-control" required placeholder="Email ADRESİNİZ">
                        </div>
                    </div>
                    <div class="col-md-6">
                        <div class="form-group">
                            <label>TELEFON</label>
                            <input id="phone" name="phone" type="text" class="form-control" required placeholder="TELEFON NUMARANIZ">
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <label>KONU</label>
                    <input name="subject" type="subject" class="form-control" required id="subject" placeholder="KONU">
                </div>
                <div class="form-group">
                    <label>MESAJ</label>
                    <textarea id="message" name="message" type="message" class="form-control" required placeholder="LÜTFEN MESAJINIZI YAZINIZ" style="height:100px;"></textarea>
                </div>
                <button type="submit" class="btn btn-primary mb-30">GÖNDER</button>
            </form>

sendmail.php ise aşağıdaki gibi :
<?php
    /*
    Name:          Contact Form
    Version:       3.1.0
    */

    session_cache_limiter( 'nocache' );
    header( 'Expires: ' . gmdate( 'r', 0 ) );

    header( 'Content-type: application/json' );

// Enter your email address below.
    $to = 'form@domainadi.com';

    $subject = "Form";


    if ( $to ) {
        $name  = $_POST['name'];
        $email = $_POST[ 'email' ];


        $fields = array (
            0 => array (
                'text' => 'Adi',
                'val'  => $_POST['name']
            ),
            1 => array (
                'text' => 'Email',
                'val'  => $_POST[ 'email' ]
            ),
            2 => array (
                'text' => 'Tel',
                'val'  => htmlspecialchars($_POST['phone'])
            ),
            3 => array (
                'text' => 'Konu',
                'val'  => $_POST['subject']
         ),
         4 => array (
                'text' => 'Mesaj',
                'val'  => $_POST['message']
            )
        );

        $message = "";

        foreach ( $fields as $field ) {
            $message .= $field[ 'text' ] . ": " . htmlspecialchars( $field[ 'val' ], ENT_QUOTES ) . "<br>\n";
        }

        $headers = '';
        $headers .= 'From: ' . $name . ' <' . $email . '>' . "\r\n";
        $headers .= "Reply-To: " . $email . "\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-Type: text/html; charset=UTF-8\r\n";

        if ( mail( $to, $subject, $message, $headers ) ) {
            $arrResult = array ( 'response' => 'success' );
        } else {
            $arrResult = array ( 'response' => 'error' );
        }

        echo json_encode( $arrResult );

    } else {

        $arrResult = array ( 'response' => 'error' );
        echo json_encode( $arrResult );

    }

ersinkandemir

Kodları CODE etiketi içerisinde verin lütfen. Göz gezdirdim biraz ama sorun göremedim.

Şu satırın
        if ( mail( $to, $subject, $message, $headers ) ) {

öncesine şunları ekleyip çıktıyı geçer misiniz?

var_dump($_POST, $fields, $message, $headers);
die();
Where there's a shell, there's a way.



the_last_man

var_dump() fonksiyonunu tanımıyorum diye error_log yazdı.

Alıntı Yap[19-Sep-2015 14:45:17 UTC] PHP Fatal error:  Call to undefined function var_dump() in /home/etiketm1/public_html/sendemail.php on line 58
[19-Sep-2015 14:45:36 UTC] PHP Fatal error:  Call to undefined function var_dump() in /home/etiketm1/public_html/sendemail.php on line 58

betseg


the_last_man

[19-Sep-2015 14:45:17 UTC] PHP Fatal error:  Call to undefined function var_dump() in /home/etiketm1/public_html/sendemail.php on line 58
[19-Sep-2015 14:45:36 UTC] PHP Fatal error:  Call to undefined function var_dump() in /home/etiketm1/public_html/sendemail.php on line 58

ersinkandemir

Buradan kopyalarken sorun olabiliyor, elle yazıp dener misiniz? var_dump'ı tanımama gibi bir ihtimali yok. :)
Where there's a shell, there's a way.



the_last_man

#33
Bu sefer hata vermedi ama çıktıyı nereye verecek ki ?Ekrana bir şey getirmedi. Bi dialogbox gibi bişi açılıp orda yazsa bu değerleri ? (Olmayan) php bilgimin seviyesini anlamışsınızdır sanırım.  ::)

ersinkandemir

AJAX ile post ediliyor anladığım kadarıyla. Google Chrome geliştirici araçlarından Ağ sekmesi altından takip edebilirsiniz sonucu.
Where there's a shell, there's a way.



the_last_man

#35
Son durum şu. Uzun uğraşlar sonucu formun id'sini contactForm yerine ContactForm yapınca mail düzgün gitti ama bu seferde sendmail.php ekranında kala kaldı. :)
Bu arada detaylı bakınca, form id'si conactForm olduğunda çalışan contactform.js diye bir script olduğunu gördüm. Artık o scriptten midir nedir kesinlikle email dışındaki değişkenler boş geliyor. Şimdi iki seçeneğim var. Ya o değişkenlerin boş gelmemesini sağlamalıyım. Ya da form id'sini ContactForm yapıp sendmail.php'nin gizli bir şekilde (hidden)  POST yapmasını sağlamalıyım. Zira şu an boş ekranda kalakalıyor. Ben ikincisini yapmak istiyorum. Yardım lütfen.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 20 Eylül 2015 - 14:37:11

Tamamdır çözdüm. contactform.js'de değişkenlerin isimleri ile oynanmış. Düzelttim, düzeldi. :) Çok teşekkürler yine de yardımlarınız için.

ersinkandemir

Tüm dosyaları görmeden yardım edemeyiz, HTML dosyasının tamamını ve bağlı olduğu Javascript dosyalarını CODE etiketiyle buraya geçerseniz güzel olur.

Edit: Geçmiş olsun.
Where there's a shell, there's a way.