Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Mail fonksiyonunu kullanmadan mail gönderimi #KAYNAK#

Konu, 'PHP' kısmında LoS.ToF tarafından paylaşıldı.

  1. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    Evet dosya sırf bi kaç dosya göndermek için nelere giriyoruz...
    Linux u bu yüzden seviyorum ya her şeyi kendin yapıyorsun. :D

    Neyse gelelim konumuza nereden çıktı bu derseniz. Bir kaç gün önce iş yerimde gene soğuk bi kahve yudumlarken mail ile birlikte dosya göndermem gerektiğini anladım mail(); fonksiyonun böyle bir özelliği olmadığı görünce bende biraz araştırma yaptım hazırda kod varmı die ama göremedim. :) e Mustafa böyle bi kod yazmamış veya makale bende kendim yazarım dedim :p
    Eh böle bi durum ortaya çıkınca önce düşmanımı tanımam gerekti SMTP (Simple Mail Transfer Protocol) RFC dosyasını okumam gerekti. RFC nedir die sormayın bende ezbere bilmiyorum. :D http://www.ietf.org/rfc/rfc1869.txt Buradan dosyaya ulaşabilirsiniz.

    Şimdi daha kod bitmedi kod ama Servera bağlanıp maili gönderip bağlantıyı olumlu bi şekilde şekilde kapata biliyorum.

    test.php
    PHP:
    <?php
    error_reporting 
    (E_ALL);
    require 
    'fonksiyon.inc.php';
    require 
    'mesaj.inc.php';
    $fp fsockopen ("localhost"25$errno$errstr30); // Servera bağlan;
    if (!$fp) {
        echo 
    "$errstr ($errno)<br>\n";
    } else {
        
        
    $cevap fgets ($fp,128);
        if (
    cevap($cevap,'220')){ 
            echo 
    'Bağlantı Yapıldı: <b>'.$cevap.'</b><br>'// çıktıyı yolla
            
    fputs ($fp"MAIL FROM:<turat@localhost>\n"); // Servera veriyi yolla
        
    } else { 
            echo 
    'Bağlantı yapılamadı'// Çıktıyı yolla;
            
    fclose ($fp);
            die; 
    // öl
        
    }
        
        
    $cevap fgets ($fp,128);
        if (
    cevap($cevap,'250')){ 
            echo 
    'Komut Gönderildi: <b>'.$cevap.'</b><br>'// çıktıyı yolla
            
    fputs ($fp"RCPT TO:<turat@localhost>\n"); // Servera veriyi yolla
        
    } else { 
            echo 
    'Bağlantı yapılamadı'// Çıktıyı yolla;
            
    fclose ($fp);
            die; 
    // öl
        
    }
        
    $cevap fgets ($fp,128);
        if (
    cevap($cevap,'250')){ 
            echo 
    'Komut Gönderildi: <b>'.$cevap.'</b><br>'// çıktıyı yolla
            
    fputs ($fp"DATA\n"); // Servera veriyi yolla
        
    } else { 
            echo 
    'Bağlantı yapılamadı'// Çıktıyı yolla;
            
    fclose ($fp);
            die; 
    // öl
        
    }
        
    $cevap fgets ($fp,128);
        if (
    cevap($cevap,'354')){ 
            echo 
    'Komut Gönderildi: <b>'.$cevap.'</b><br>'// çıktıyı yolla
            
    fputs ($fp$mesaj."\n"); // Servera veriyi yolla
        
    } else { 
            echo 
    'Bağlantı yapılamadı'// Çıktıyı yolla;
            
    fclose ($fp);
            die; 
    // öl
        
    }
        
    fclose ($fp);
    }


    ?>
    fonksiyon.php
    PHP:
    <?
    // Serverdan alınan cevap...
    function cevap($veri,$veri2){
        
    $return false;
        if (
    $veri) {
            
    $veri substr($veri03); 
            if (
    $veri==$veri2) {
                
    $return true;
            }
        }
        return 
    $return;
    }
    ?>
    Evet şimdi sıra asıl önemli bölüme geldi....

    Mail bir bütün olaraktan server a gidiyor ve bütün kullanıcıya gönderiliyor ileti kullanıcı program tarafından parçalanıp ek dosyalar ve mesaj olaraktan bölüyor şimdi o bölümü biraz kurcalayacağım ha birde bu aslında 1- 2 gün önce bitmiştide ben "DATA" olaraktan bırakmışım "DATA\n" yapmayı unutmuşum :)

    Mesaj.php
    PHP:
    <?
    $mesaj 'From: "xxxt" <xxx@xxx.net>
    To: "LoS.ToF" <lovefoolonlyme@hotmail.com>
    References: <200208270959.g7R9xdA31490@web2.taskin.com>
    Subject: basliginiiii
    Date: Mon, 26 Aug 2002 18:44:22 +0300
    MIME-Version: 1.0
    Content-Type: text/plain;
        charset="iso-8859-9"
    Content-Transfer-Encoding: 8bit
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Mailer: Microsoft Outlook Express 5.00.2615.200
    X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200
    Return-Path: [email]xxx@xxx.net[/email]
    X-OriginalArrivalTime: 27 Aug 2002 15:53:23.0075 (UTC) FILETIME=[DF658D30:01C24DE1]

    Mesaj içeriği
    '
    ;
    ?>
    zaten olay gönderilen mesajın içeriğinde bitiyor... aslında normal mail fonksiyonu ilede dosya yollayabilirsiniz.. Sadece mesajların içeriğini kavramak gerekiyor
     
    Son düzenleme yönetici tarafından yapıldı: 3 Ekim 2002
  2. mkarabulut

    mkarabulut Misafir

    Selamlar üstad;
    Öncelikle kolay gelsin, zor bi şeylerin altına girip çıkmışa benziyorsun. YAzdığın şeyler çok güzel ama dilerdim ki hani diyorum bunları şöyle güzelce yazsan biraz daha açıklama koysan da bizde sitede senin adınla yayınlasak :D

    Yani kendim için değil, bilişim camiası için istiyorum :D

    Tekrar kolay gelsin. :)
     
  3. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    Haklısın zaten daha bitmedi multipart die bir olay var anlıyacağın postanın içeriğinin çoklu olup olmadığını belirtiyor belli başlı şeyler var ama anlamış değilim açıkcası özellikle verilere verilen adları...

    Yukarıdaki kod inan bana basit olanı... Kodu incelersen anlarsın zaten oraya RFC dosyasınında bir link ini koydum anlamazsanız anlayın die :D
    Ama herhalde yarına çözerim.
     
  4. Eylem

    Eylem Aktif Üye

    Kayıt:
    30 Haziran 2002
    Mesajlar:
    409
    Beğenilen Mesajlar:
    0
    Meslek:
    Ögrenci & Webdesigner
    Şehir:
    Sweden
    Valla çok güzel olur Lostof şu yazıyı yayınlanacak şekilde hazırlayıp yollarsan. Ellerine sağlık. Tebrikler...
     
  5. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    Daha bitmedi

    daha tam anlamıyla çözebilmiş değilim ki... Şu anda kendi sitemle uğraşıyorum sıktı hep bununla uğraşmak... Ama basitinden anlatayım Buracıkta...

    U : USER
    S : SERVER

    telnet 127.0.0.1 25
    S: 220 WELCOME

    U: MAIL FROM:<turat@localhost>
    S: 250 OK.

    U: RCPT TO:<murat@localhost>
    S: 250 OK.

    U: DATA
    S: 354 OK (ASLINDA DAHA FAZLA YAZIYOR..)

    U: Ehu aşkım seni çok seviyorum akşamleğin buluşalım....
    U: .
    S: 250 OK.

    U: QUIT

    Arada geçen dialog bu kadar. Siz bağlanıyorsunuz ve kim olduğunuzu söylüyorsunuz oda taam dio sonra kime gideceğini belirtiyorsunuz... Server okey dior. Eğerki relay desteği yoksa belirtiyor. Sonra siz datayı yolluyorum kucakla diyorsunuz. Okey dio gir sen veriyi ve <CRLF>.<CRLF> yaparaktan sonlandır dio.
    Sizde mesajınızı yazıp . yapıp enter yapıyorsunuz. okey mesajını alıp QUIT dioyorsunuz olay bundan ibaret sıkıııldım. ICQ da kimse yok.