Php yetkilendirmesi ile smtp yoluyla e-posta gönderme. PHP'de SMTP yoluyla posta gönderme. SMTP komut dosyası kurulumu aracılığıyla php postası gönderme

PHP'yi postala

Bu işlev varsayılan olarak E-posta gönderme olarak uygulanır. Bu işlevsellik, E-postayı iletmek için üçüncü taraf bir sunucuya ihtiyaç duymaz. Bu işlevin doğruluğunu kontrol etmek için sitenin bulunduğu klasörde bir test.php dosyası oluşturun ve aşağıdaki kodu buraya yerleştirin:

Bunun yerine nerede "E-POSTAALICI" Mektubun gönderilmesi gereken E-postayı girin.

Yer bu dosya sitenizin kökünde.

Daha sonra adres çubuğuna www.Alanınız/test.php yazın. Belirtilen e-postaya bir mektup alınırsa, barındırma hizmetiniz mektup gönderme işleviyle doğru şekilde çalışıyor demektir " PHP'yi postala". Mektubun spam'e düşmüş olması mümkündür, bu nedenle kontrol edilmesi de gerekir.

Mektup anlaşılmaz bir kodlamayla geldiyse satırı değiştirin: "Posta gönderimi kontrol ediliyor" Açık "Posta gönderimi kontrol ediliyor", "Content-type:text/html;charset=utf-8".

Ve mektubu tarayıcınızın adres çubuğu aracılığıyla göndermeyi tekrarlayın.

Yukarıdaki işlemlerden sonra test mektubu son alıcıya ulaşmazsa, barındırma teknik desteğinizle iletişime geçmelisiniz.

Eksiklikler arasında Bu methodİşin kalıcı olmadığını belirtmekte fayda var. Bu method. Hosting tarafında e-posta gönderiminde kesintiler yaşanabilir.

Bu yöntemin ana dezavantajı, müşterilerin e-postalarına gönderilen tüm mektupların, doğrudan web sitenizden gönderildiği için posta hizmetleri (gmail, mail.ru, yandex.ru) tarafından tanınmamasıdır.

Gmail posta hizmeti bu mektupları bir soru işareti ve imzayla birlikte görüntüler: "Gmail sistemi bu mektubun AlanAdınız alanından gönderildiğini doğrulayamadı. Bu spam olabilir."

Bu durumdan kaçınmak için .

SMTP (Basit Posta Aktarım Protokolü)

SMTP - posta aktarım protokolü. Toplamda, bu protokolü kullanarak posta aktarımını ayarlamak için SMTP sunucusunun kendisine ihtiyacınız vardır. Kurumsal (etki alanı) posta yandex.ru'yu SMTP sunucusu olarak kullanmanın en yaygın seçeneği https://pdd.yandex.ru/'dur.

Her şeyden önce gerekli hesap (posta) yandex, alanınız için hangi e-postaların oluşturulacağı esas alınarak: “sipariş@Alanınız” “info@Alanınız”... Ana hesap hiçbir yerde görünmeyecek ve gelecekte yalnızca ona dayalı alan adı e-postaları oluşturmak için kullanılacaktır.

Hesabınıza giriş yaptıktan sonra kişisel hesap Yandex alan adı postası https://pdd.yandex.ru/ bağlantısı kullanılarak oluşturulur. Bu, kullanıcıların "Gönderen" alanında göreceği etki alanı e-postasıdır.

SMTP aracılığıyla e-posta gönderirken "Gönderen" alanı gereklidir. Mektup göndermek için SMTP kullanma, " İhtisas" - "E-posta" böylece mektuplar posta hizmetleri tarafından tanınır.


Bu yöntemin dezavantajları arasında, posta hizmetlerinin kendileri henüz bu işlevselliği sağlamadığından, alan adı posta portresini "yüklemenin" imkansızlığına dikkat etmek önemlidir.

2019-08-05

Merhaba sevgili ziyaretçi!

Blogun güncellenmesindeki gecikmeden dolayı lütfen beni bağışlayın. Ancak bunun tamamen anlaşılır bir açıklaması var. Sonuçta yaz mevsimi, yazlık ev, misafirler, orman, su ve çok daha fazlası, bir web sitesi oluşturma sorunlarını çözmeme izin vermedi. Ama artık biraz özgürleştim, misafirler gitti ve artık buna kesinlikle gereken önemi verebileceğimi düşünüyorum.

Son yazımızda alan adımızın maillerini mail hizmetlerinden birine bağladıktan sonra şimdi siteden nasıl email gönderebileceğinizi görelim. Üstelik mektuplarımız SPAM'a düşmeden, güvenilir ve yüksek olasılıklı bir şekilde alıcılarımıza ulaştırılacaktır.

Genel olarak PHP'de mektup göndermek için yerleşik bir mail() işlevi vardır. Ancak, bu yöntemin basitliğine rağmen (bu durumda, mektup göndermek için belirli parametrelerle yalnızca bir kod satırı belirtmek yeterlidir), bu seçeneğin kullanımının SPAM sorunuyla ilişkili önemli bir dezavantaja sahip olduğu unutulmamalıdır. .

Gerçek şu ki, alıcı tarafındaki posta sunucularının SPAM önleme filtreleri, mail() işlevi yoluyla gönderilen mektupları pek desteklemez. Çoğu durumda bu tür mesajlar muhatabına ulaşmadan önce filtrelenir, hatta silinir.

Ve bu gibi durumları olabildiğince ortadan kaldırmak için, genellikle mektupların sanki üçüncü taraf bir posta servisi tarafından yapılıyormuş gibi gönderildiği başka bir seçenek kullanılır.

Bu yönteme SMTP üzerinden yetkilendirme ile posta gönderme adı verilmektedir. Bugün form gönderme örneğini kullanarak buna bakacağız. geri bildirim. Üstelik bunun için SMTP yoluyla mektup göndermeyi oldukça basit bir şekilde organize etmenize olanak tanıyan oldukça iyi bilinen ve popüler PHPMailer kütüphanesini kullanacağız.

  • Geri bildirim mektuplarını nasıl göndereceğiz?
  • Geri bildirim formu oluşturma
  • PHPMailer kütüphanesini kurma
  • SMTP aracılığıyla posta göndermek için bir komut dosyası oluşturuyoruz
  • E-posta gönderimi kontrol ediliyor
  • Site kaynak dosyaları

Geri bildirim mektuplarını nasıl göndereceğiz?

Başlamadan önce pratik iş Geri bildirim mektuplarını gönderdikten sonra öncelikle bunu nasıl yapacağımıza karar vereceğiz.

Geri bildirim formu, kullanıcının site yöneticisi ile iletişim kurarak mesajını iletmesine olanak sağlayacak şekilde tasarlanmıştır. Genellikle bu form birkaç alandan ve bir "Gönder" düğmesinden oluşur.

Prensip olarak, bir e-posta göndermek için kullanıcı ve mesajın içeriği hakkında yeterli bilgi sağlayan yalnızca birkaç alanı kullanmak yeterlidir, örneğin:

  • "Ad" - mesajı gönderenin adını girmek için;
  • "E-posta" - adres için E-posta gönderen;
  • "Mesaj Konusu";
  • "Mesaj metni".

Yine de başkalarını da ekleyebilirsiniz. Örneğin, gerçekten gerekliyse bir telefon numarası.

Bizim durumumuzda bu tür mektuplar, alan adımızın bağlı olduğu posta hizmetindeki yetkilendirmeye sahip gerçek bir posta kutusundan site yöneticisinin adresine gönderilecektir.

Önceki makalede alan adı postasının Yandex.Mail hizmetine bağlantısını kontrol etmeye odaklandığımız için bu seçenek için posta göndereceğiz. Bu önemli olmasa da. Aşağıda, değiştirildiğinde e-posta göndermenize izin verecek seçenekleri göreceksiniz. posta sunucusu Mail.ru.

Mektupların gönderileceği gerçek bir posta kutusu olarak, yeni oluşturulan bir alan adı posta kullanıcısının hesabını, örneğin adresle birlikte kullanacağız. [e-posta korumalı]. Ve bu mektupları şu adrese göndereceğiz: Posta kutusu yönetici [e-posta korumalı], daha önce önceki makalede oluşturduğumuz.

Böylece geri bildirim formundaki mektubun göndereni posta kutusu olacaktır. [e-posta korumalı]. ve alıcı - [e-posta korumalı]. Bu durumda mesajı gönderen kullanıcıya ait tüm bilgiler içeriğiyle birlikte gönderilen mektubun gövdesinde iletilecektir.

Geri bildirim formu oluşturma

Mektup gönderme prosedürüne karar verdikten sonra şimdi bunu yapacağımız bir geri bildirim formu oluşturacağız.

Aşağıda "Kişiler" sayfasına yerleştireceğimiz bu formun HTML kodu bulunmaktadır (makaleler dizinindeki kontakty.php dosyası).

    "madde" >

    Kişiler

    Geri bildirim

    "temas etmek" eylem = "#" yöntem = "postalamak" >

    Geri bildirim formu

    Tüm soru, istek ve iş önerileriniz için aşağıdaki geri bildirim formunu kullanarak bizimle iletişime geçebilirsiniz.

    "iletişim bloğu" >

    "kontak girişi" >

    "metin" kimlik = "kişi adı" isim = "kişi adı" başlık = "Ad Rusça olmalı ve en az 3 karakter içermelidir" desen = "{3,}" gerekli >

  1. "boş kontak" >

    "kontak girişi" >

    "e-posta" kimlik = "İletişim E-posta" isim = "İletişim E-posta" gerekli >

  2. "İletişim konusu" >

  3. "iletişim-yorum" >

  4. "iletişim düğmesi" >

    "göndermek" isim = "iletişim düğmesi" değer = "Göndermek" >

Şekil 1 Geri bildirim formunun HTML kodu

Burada gösterilen geri bildirim formunun sonuçta nasıl göründüğünü aşağıdaki ekran görüntüsünde görebilirsiniz.

Böylece gerekli form yarattı. Artık verileri e-posta mesajı biçiminde işleme ve gönderme konularına geçebilirsiniz.

PHPMailer kütüphanesini kurma

Daha önce de belirtildiği gibi, posta göndermek için PHPMailer kitaplığını kullanacağız; bu kitaplık, e-posta göndermeyi büyük ölçüde kolaylaştıracak. SMTP protokolüüçüncü taraf bir posta hizmetinde yetkilendirme ile.

Yüklemek için indirmeniz gerekir gerekli dosyalar. Bu, Composer (PHP için bir paket bağımlılık yöneticisi) kullanılarak GitHub web hizmetinden yapılabilir. Veya gerekli dosyaları her zamanki gibi indirin.

ekran görüntüsü 73

Aşağıda, PHPMailer kitaplığının düzenli olarak indirilmesine yönelik bağlantının işaretlendiği GitHub web hizmeti sayfası bulunmaktadır.

Ayrıca, En son sürüm Bu makalenin yazıldığı sırada kaydedilen 6.0.7, ekteki materyallerden indirilebilir.

Her durumda, ortaya çıkan arşiv dosyası açılmalı ve ardından çıkarılan PHPMailer-master klasörü tüm içeriğiyle birlikte sitenin köküne yerleştirilmelidir. Aynı zamanda basitlik açısından PHPMailer olarak yeniden adlandırabilirsiniz. Aşağıda sitenin kök dizinine yerleştirilen PHPMailer klasörünün içeriği yer almaktadır.

Böylece PHPMailer kütüphanesini kurduk. Bundan sonra web sitemizden e-posta mesajları göndereceğimiz bir komut dosyası oluşturmaya başlayabiliriz.

SMTP aracılığıyla posta göndermek için bir komut dosyası oluşturuyoruz

Komut dosyasını oluşturmak için daha önce kütüphaneyi indirmek için kullandığımız GitHub sayfasında verilen PHPMailer kullanım önerilerini kullanmak yeterlidir.

Özellikle betiğin başında PHPMailer sınıflarının global ad alanına aktarılması gerektiğini belirtirler. Ve karşılık gelen kodun belirli satırları verilmiştir. Ayrıca, SMTP yoluyla posta gönderme seçeneği de dahil olmak üzere, PHPMailer'in özelliklerini ve yöntemlerini kullanma örnekleri de vardır.

Ancak bu yeterli değilse, bu kitaplığın tüm özelliklerinin ve yöntemlerinin açıklamasını içeren belgeleri de kullanabilirsiniz.

ekran görüntüsü 74

Geri bildirim formundan SMTP aracılığıyla yetkilendirme ile posta göndermek için kullanılan komut dosyası kodu aşağıdadır. PHPMailer ile ilgili tüm satırların açıklandığı ve açık renkli bir arka planla vurgulandığı yer.

Daha önce diğer işlemcilerde kullanmak zorunda kaldığımız formdan veri alma ve işlemeyle ilgili parçalar da dahil olmak üzere bölümün geri kalanı koyu bir arka planla belirtiliyor. Bunlar daha önce özellikle PHP'deki bir formdan veri alma ve doğrulama konularına ayrılmış bir makalede ayrıntılı olarak tartışılmıştı. Form verilerini doğrulamak ve işlemek için evrensel kullanıcı işlevinden de bahsettik check_symbol().

Bu betiği daha önce geri bildirim formunu oluşturduğumuz kontakty.php dosyasına yerleştireceğiz.

    //---- PHPMailer kullanarak SMTP yoluyla posta göndermek için komut dosyası----

    //PHPMailer sınıflarını global ad alanına aktarın. Fonksiyonun içinde değil, betiğin üstünde olmalılar

    kullanmak PHPMailer\PHPMailer\PHPMailer ;

    kullanmak PHPMailer\PHPMailer\Exception ;

    eğer (!boş($_POST["iletişim düğmesi" ])) (

    $isim = $_POST["kişi-adı" ];

    $isim = check_symbol ($isim, "Ad" , "1" , "/^+\z/iu" );

    $e-posta = $_POST["iletişim-e-postası" ];

    $e-posta = check_symbol ($e-posta, "E-posta", "1", "/^+@(+\.)+(2,6)\z/i");

    $konu = $_POST["kişi-konusu" ];

    $konu = check_symbol ($konu, "Mesaj Konusu" , "1" , "0" );

    $yorum = $_POST["iletişim-yorum" ];

    $yorum = check_symbol ($yorum, "Mesaj metni", "1" , "0" );

    eğer (!boş($GLOBALS["uyarı" ])) (

    $uyarı = "Form verileri gönderilmedi. Aşağıdaki hatalar bulundu:\n".$uyarı;

    katmak"uyarı.php" ;

    başka {

    //Kütüphaneyi bağlama

    gerekmek"PHPMailer/src/PHPMailer.php" ;

    gerekmek"PHPMailer/src/Exception.php" ;

    gerekmek"PHPMailer/src/SMTP.php" ;

    $posta = yeni PHPMailer(); //Sınıf başlatma

    $gönderen = " [e-posta korumalı]" ; //Mektubun gönderildiği e-posta adresi

    $-için = " [e-posta korumalı]" ; //Alıcının adresi

    $posta -> isSMTP(); //SMTP protokolünü kullan

    $posta -> Ana Bilgisayar = "smtp.yandex.ru" ; //Posta sunucusu adresi

    $mail -> SMTPAuth = doğru ; //Yetkilendirme modunu etkinleştir

    $mail -> Kullanıcı adı = " [e-posta korumalı]" ; //Üçüncü taraf bir e-posta hizmetine (bu durumda Yandex.Mail) bağlı bir etki alanı e-postasından giriş yapın

    $mail -> Şifre = "27MrDon89" ; //Alan postası için şifre

    $mail -> SMTPSecure = "ssl"; //Şifreleme protokolü

    $mail -> Bağlantı Noktası = "465" ; //SMTP sunucu bağlantı noktası

    $mail -> CharSet = "UTF-8" ; //Kodlama

    $mail -> setFrom ($from, "Yönetici" ); //Gönderenin adresi ve adı

    $mail -> addAddress ($to, "Yönetici" ); //Alıcının adresi ve adı

    $posta -> isHTML ( doğru ); //E-posta biçimini HTML'ye ayarla

    $posta -> Konu = "Geri bildirim formu gönderildi"; //E-posta konusu (başlık)

    $posta -> Gövde = "

    Gönderen adı: $isim

    Gönderenin adresi: $e-posta

    Mesaj Konusu: $konu

    Mesaj içeriği: $yorum



    " ; //Mesaj içeriği

    $mail -> AltBody = "Alternatif mektup metni"; //E-posta istemcisi HTML biçimini desteklemiyorsa alternatif e-posta

    $mail -> SMTPDebug = 0; //SMTP hata ayıklamasını etkinleştir: 0 - kapalı (normal kullanım için), 1 = istemci mesajları, 2 - istemci ve sunucu mesajları

    eğer($mail -> gönder()) (

    $uyarı = "Mesajı gönderildi"; //Tarayıcı iletişim kutusuna mektubun başarıyla gönderildiğine dair bir mesaj çıktısı

    başka {

    $uyarı = "Hata, e-posta gönderilemiyor: ".$mail -> ErrorInfo ; //Bir hata mesajı çıktısı

    katmak"uyarı.php" ;

Şekil 5 Yetkilendirme ile SMTP yoluyla e-posta göndermek için komut dosyası

Gördüğünüz gibi, gerekli yöntem ve özelliklerin belirtildiği bir e-posta mesajının gönderilmesiyle doğrudan ilgili tüm satırlara yorumlar eşlik ediyor. Bu nedenle, kendimizi tekrarlamanın bir anlamı yok, ancak bunlardan yalnızca bazıları üzerinde durabiliriz, bunlar aslında ek açıklamalar gerektirir:

1. Mektubun üçüncü taraf bir posta hizmetinden gönderilmesi nedeniyle, burada belirli SMTP sunucusuna karşılık gelen ayarlar uygulanır. Bu durumda Yandex.Mail sunucusunun kullanımı için aşağıdaki özellik değerleri uygulanır:

  • Mülk Ev sahibi(konum 28) - smtp.yandex.ru değerine sahip posta sunucusu adresi;
  • Mülk SMTP Güvenli
  • Mülk Liman

Bu özellik değerleri aşağıdaki ekran görüntüsünde gösterilen Yandex.Yardım sayfasından alınmıştır.

Ancak bu tür bilgiler başka kaynaklardan da elde edilebilir. Bunu yapmak için arama motoruna uygun sorguyu girmeniz yeterlidir; örneğin: "Yandex smtp sunucusu". Bu konuyla ilgili çok sayıda referansı nerede bulabilirsiniz?

Benzer şekilde diğer SMTP sunucularından da ayar değerleri alınabilir. Aşağıda Mail.ru posta hizmetinin SMTP sunucusunun ayarlarını görüntüleyen Mail.ru Yardım sayfasının ekran görüntüsü bulunmaktadır.

Ve böylece, Mail.ru'nun üçüncü taraf SMTP sunucusu olarak kullanılması durumunda, PHPMailer sınıfının özelliklerinin aşağıdaki değerleri uygulanmalıdır:

  • Mülk Ev sahibi(konum 28) - Posta sunucusu adresi (smtp.mail.ru);
  • Mülk SMTP Güvenli(konum 32) - Şifreleme protokolü (ssl);
  • Mülk Liman(konum 33) - SMTP sunucusu bağlantı noktası (465).

Diğer e-posta hizmetlerine de benzer bir yaklaşım uygulanmalıdır.

2. Mülkte Kullanıcı adı(konum 30) etki alanı posta kutusunun tam adresini belirtmek gerekir. Bu durumda, " [e-posta korumalı]".

Ancak, mektup göndermek için etki alanı posta hesabı dışında bir hesap kullanıyorsanız ancak doğrudan posta hizmetiyle ilgili bir adres kullanıyorsanız, örneğin " [e-posta korumalı]", bu durumda oturum açma adresin yalnızca "@" işaretine kadar olan kısmı olmalıdır. Bu durumda oturum açma bilgisi "geribildirim" değerine sahip olacaktır.

3. PHPMailer bir özellik sağlar SMTP Hata Ayıklama(konum 50), tarayıcı ekranında farklı düzeylerdeki hataları görüntülemenize olanak tanır. Bu özellik, bir komut dosyasında hata ayıklarken sorunların bulunmasını büyük ölçüde kolaylaştırır.

Tipik olarak normal modda, değer 0'a ayarlandığında ayrıntılı hata bilgilerinin çıkışı devre dışı bırakılır. Ancak posta göndermede veya hata ayıklama sırasında sorunlar ortaya çıkarsa, hata hakkında daha anlamlı bilgiler görüntülemek için diğer değerleri kullanmak mümkündür.

Bunun pratikte nasıl göründüğünü görmek için, geçici olarak ayarlara bazı hatalar ekleyelim. Örneğin, etki alanı posta şifresinde (özellik Şifre, konum 31). Ayrıca, özellikte geçici olarak ayarlanan hatayla ilgili ayrıntılı bilgileri görüntülemek için SMTP Hata Ayıklama(konum 50) değer 1. Her şey hata ayıklanıp kontrol edildikten sonra, 1'i 0 ile değiştirerek SMTP hata ayıklama modunu devre dışı bırakacağız.

Betiğin son bölümünde gerekli tüm özellik ve yöntemler belirtildikten sonra mektubun gönderilmesi için yöntem kullanılır. Göndermek()) (konum 51). Ve eğer mektup gönderilirse ve yöntem Göndermek() nesne için $posta true değerini döndürür, ardından tarayıcı iletişim kutusunda değişken aracılığıyla $ uyarı Başarılı posta gönderimiyle ilgili bir mesaj görüntülenecektir (konum 52).

Herhangi bir nedenden dolayı posta gönderilemezse ve buna göre yöntem doğru döndüremezse, bu duruma karşılık gelen bir hata mesajı eşlik edecektir (konum 55).

E-posta gönderimi kontrol ediliyor

Posta göndermek için bir script oluşturduktan sonra doğal olarak “yaratıcılığımızın” sonucuna bakmamız gerekiyor. Burada her şeyi hesaba kattık mı ve hiç hata yapmadık mı?

Bunun için amaçlandığı gibi geri bildirim formundan kullanıcıdan site yöneticisine mesaj göndermeyi deneyelim. Aşağıda, geri bildirim formunun gönderilmeden önce doldurulan alanları gösteren ekran görüntüsü bulunmaktadır.

Ve işte formu göndermenin sonucu.

Tarayıcı iletişim kutusundaki mesajdan, SMTP bağlantısındaki bir sorun nedeniyle mektubun gönderilemediği açıktır.

Ancak şu andan itibaren mülk SMTP Hata Ayıklama(konum 50) 1 değeri atanırsa, oluşan hata hakkında ayrıntılı bilgi görebilir ve oluşma nedenini öğrenebiliriz.

Aşağıdaki ekran görüntüsü, bağlanmaya çalışırken bir kimlik doğrulama hatasının algılandığını, yani yanlış kullanıcı adı veya parolanın kullanıldığını göstermektedir.

Şifre uyumsuzluğunu giderdikten sonra (hatayla ilgili ek bilgilerin çıktısını kontrol edebilmek için daha önce yanlış şifre kullanılıyordu), postayı tekrar göndermeyi deneyeceğiz.

Bu sefer her şey yolunda gitti ve postanın başarıyla gönderildiğine dair bir mesaj aldık. Görünüşe göre, alan adı posta şifresine kasıtlı olarak girilen geçici hata dışında başka bir hata yapmadık.

Ancak mektubun gerçekten muhatabına teslim edildiğinden emin olmak için adresi içeren postayı girelim. [e-posta korumalı] ve sonuca bakın.

Gördüğünüz gibi adresten gelen mektup [e-posta korumalı]"Geri Bildirim" isimli bir e-posta mesajı gönderdiğimiz site yöneticisine başarıyla ulaştı. Aynı zamanda mektubun gövdesi, geri bildirim formundan alınan verileri kullanarak komut dosyasında oluşturduğumuz tüm içeriği içerir:

  • Gönderenin adı: Nikolay;
  • Gönderenin adresi: [e-posta korumalı];
  • Mesaj konusu: Posta gönderimi kontrol ediliyor;
  • Mesaj içeriği: Test mesajı.

Artık posta gönderimini başarıyla kontrol ettikten sonra, özelliği atayarak SMTP hata ayıklama modunu devre dışı bırakabilirsiniz. SMTP Hata Ayıklama(konum 50) değeri 0.

Böylece, üçüncü taraf bir posta sunucusu kullanarak SMTP üzerinden yetkilendirme ile posta göndermek için bir araç oluşturma görevini tamamladık.

Örneğin bir sonraki makalede kayıtlı kullanıcı hesabı verilerini kurtarmak için onay e-postalarının nasıl gönderileceğine bakacağız.

Site kaynak dosyaları

Bu makalede yapılan güncellemeleri içeren sitenin kaynak dosyaları, ekteki ek materyallerden indirilebilir:

  • www dizin dosyaları
  • MySQL Veritabanı Tabloları

Yerel bir sunucudan SMTP yoluyla posta göndermek, yerel bir makinede bulunan bir siteden veya daha basit bir ifadeyle yerel bir sunucudan mesaj göndermeyi test etmenize olanak tanır. Bunu yapmak için herhangi bir Yandex, Google veya mail.ru posta hizmetini kullanabilirsiniz.

Öncelikle SMTP (Basit Posta Aktarım Protokolü), TCP/IP ağları üzerinden e-posta aktarımı için tasarlanmış, yaygın olarak kullanılan bir ağ protokolüdür. Ve tüm popüler e-posta hizmetlerinin bu tür protokolleri vardır.

Yerel sunucuların ortaya çıkmasıyla birlikte, bireysel komut dosyalarının veya cms sistemlerinin performansını kontrol etmek için artık bir barındırma sağlayıcısı seçmeye gerek kalmadı, bunun için çok daha az ödeme yapın. Her şeyi bilgisayarda test etmek çok daha kolaydır ve ardından herkese ne "yaptığınızı" gösterebilirsiniz.

Bu sunucuların birçoğu zaten yerleşik yazılıma ve postayla çalışmak için gerekli işlevselliğe sahiptir; yalnızca onu doğru şekilde yapılandırmanız yeterlidir.

Bu tür bir postanın işlevselliğini kontrol etmek için minimum düzeyde gereklidir:

  • Openserver'ı yerel sunucu olarak kullanabilirsiniz.
  • Ve şablonunu hemen aşağıda bulabileceğiniz basit bir komut dosyası.
  • Herhangi bir posta sunucusunu kullanabilirsiniz.

SMTP komut dosyası kurulumu aracılığıyla php postası gönderme

Aşağıdan kopyalanabilecek veya yüzlerce benzer siteden indirilebilecek basit bir komut dosyası şablonunun düzenlenmesi gerekiyor.

Öncelikle script şablonundaki bazı değerleri değiştirmeniz gerekiyor.
ile — posta mesajının gönderileceği posta adresini değiştirin.
ders - mektup konusu
İleti — mesajın kendisi veya mektubun gövdesi.

Senaryomun örneği:

Elbette işlevselliği biraz genişletebilir ve komut dosyasının posta göndermeyle ilgili bir mesaj görüntülemesini sağlayabilirsiniz. Aslında gönderimi yapan SMTP sunucusudur ve komut dosyası yalnızca mesajı oluşturur.

Örneğin şunu yazabilirsiniz:

Değiştirilen tüm değerler tırnak içinde olmalıdır, aksi takdirde script hata verecektir. Bundan sonra betiği yerel sunucu klasörüne kaydedebilirsiniz.

Örneğin: etki alanları/send/index.php ve SMTP openrerver aracılığıyla posta göndermeyi ayarlamaya başlayın.

Posta, değer yerine komut dosyasında belirtilecek herhangi bir adrese ulaşacaktır 'ile' , ancak bu posta tam olarak açık sunucu ayarlarında belirtilecek olan SMTP tarafından işlenecek ve gönderilecektir.

  1. Sunucuyu başlatma
  2. “Posta” menüsündeki ayarlarla openserver modülünü açın
  3. Gerçek bir Yandex posta kutusundan kullanıcı adını, gönderenin e-postasını ve şifresini değiştirirken tüm alanları resimdeki gibi dolduruyoruz.

Ayarları kaydediyoruz ve sunucu yeniden başlatıldıktan sonra betiğin kendisine erişebilirsiniz. “Sitelerim” klasöründen, önceden kaydedilmiş index.php betiğinin bulunduğu “gönder” klasörünü açın.

Bu betiğe erişildiği anda, yeni bir tarayıcı penceresinde betiğin tamamlandığını belirten bilgiler görünecektir.

Bundan sonra mektubun gelip gelmediğini kontrol etmek için adresi scriptte belirtilen posta kutunuzu kontrol etmelisiniz.

Orada değilse, bu, bir şeyin doğru şekilde yapılandırılmadığı veya mektubun spam klasörüne düştüğü anlamına gelir.

Diğer tüm ayarlar benzer görünüyor, ancak her ihtimale karşı ek bilgilerin zararı olmaz.

SMTP mail ru aracılığıyla posta göndermeyi ayarlamak için Yandex parametrelerini mail ru parametreleriyle değiştirmeniz yeterlidir.

Yerel sunucuyu her seferinde yeniden oluşturmamak için farklı açık sunucu profilleri yapılandırmak en iyisidir. Bunun nasıl yapılacağı video eğitiminde gösterilmiştir.

Bu durumda sadece profili yüklemek yeterli olacaktır ve bu profil için belirlenen tüm ayarlar sunucuyu yeniden başlattıktan sonra kullanılabilir olacaktır. Bu çok kullanışlı bir şey ve çok basit bir şekilde çalışıyor.

Her profil için (nasıl adlandırılacağı hiç önemli değil), elbette farklı parametrelere sahip komut dosyalarını, cms sistemlerini ve uygulamaları kullanmayı planlamıyorsanız, kendi ayarlarının yapılması gerekir.
Değilse, varsayılan ayarlarla idare edebilirsiniz.

SMTP mail ru'ya gelince, burada her şey aynı.

Yandex verileri mail ru verilerine değiştirildi

Smtp google aracılığıyla posta gönderme

Google SMTP aracılığıyla posta göndermeyi ayarlamak biraz çaba gerektirir.

Öncelikle Google'da profil oluşturmak diğer Yandex ve mail ru sistemlerinden daha zordur.
İkinci olarak, giriş bilgilerinizi verseniz bile sistem mektubun iletilmesine izin vermeyecektir. Başlangıç ​​olarak, daha sonraki talimatlar hakkında gerekli tüm bilgileri içeren bir mektup gönderecektir.

Aksi takdirde Google için de tamamen aynı şekilde yapılandırılmıştır. Yalnızca tüm veriler değişir.

Diğer SMTP yoluyla posta göndermeyi yapılandırmak için tüm veriler yaklaşık olarak aynı olacaktır.

Sizin için her şey yolunda gittiyse ve mektuplar belirtilen muhataba ulaştıysa, her şey doğru yapılmış demektir. Deneyimlerinizi yorumlarda paylaşırsanız harika olur.

Belirli bir web sitesinin verimli ve verimli çalışma fırsatına sahip olabilmesi için, oluşturulmasına mümkün olduğunca sorumlu ve dikkatli yaklaşılmalıdır. Çevrimiçi bir mağaza oluşturmak için kullanılacak sistemin seçimi özel ilgiyi hak ediyor. Gerçek şu ki, mal veya hizmet satışında uzmanlaşmış ticari bir platform, hem sitelerin bakımı ve doldurulması ile ilgilenen yöneticiler hem de çevrimiçi mağazaların müşterileri için gerekli tüm işlevlerin uygulanmasına izin vermeli ve kullanımı kolay olmalıdır. Kendisi için uygun bir CMS seçme sorunuyla karşı karşıya kalan birçok kişi ve şirket, Magento'yu mu yoksa OKCMS'yi mi seçeceğini analiz ediyor. Bu web sitesi motorlarının özelliklerini ve yeteneklerini karşılaştıralım.

Kendi web sitenizde çalışırken, bir kişinin veya şirketin çok fazla çaba harcaması gerekecektir - yalnızca bu durumda olumlu sonuçlara ve gerçekten etkili bir araç elde etmeye güvenebilirsiniz. Bir web sitesi oluşturmaya başlamadan önce çözülmesi gereken temel sorulardan biri, en uygun CMS seçeneğine nasıl karar verileceği olacaktır. Daha sonra iki CMS'yi karşılaştıracağız: Joomla veya OKCMS ve her birinin özelliklerine dikkat edeceğiz.

Kendi web sitenize sahip olmak, etkili ve başarılı bir şekilde çalışan bir işletmenin temel gereksinimlerinden biridir. İstatistikler, İnternet üzerinden çeşitli mal satın alma ve hizmet siparişlerinin sayısında açıkça bir artış olduğunu göstermektedir. Bunu dikkate alarak çoğu ticari şirket kendi web sitesine sahip olma ihtiyacının zaten farkındadır. Ancak, yalnızca bir İnternet kaynağına sahip olmak, onun etkinliğine, kârlılığına ve beklenen ticari faydalarına güvenmek için yeterli değildir.

Kendi web sitenizi oluşturmaya veya çevrimiçi bir mağaza açmaya hazırlanırken, çeşitli sorunları çözmenin yanı sıra birçok konuyu dikkate almanız ve analiz etmeniz gerekir. Ancak bu durumda projenizin olumlu sonuçlar getireceğine ve beklentilerinizi tam olarak karşılayabileceğine güvenebilirsiniz. Bir çevrimiçi mağazanın geliştirilmesiyle ilgili çeşitli konular arasında CMS seçimi konusu özel ilgiyi hak ediyor. Kendiniz için en uygun motora karar vermenizi kolaylaştırmak için

Gelecekteki bir çevrimiçi mağaza için kendi web sitesini oluşturmayı planlarken, oldukça fazla sayıda kişi ve hatta satış konusunda uzmanlaşmış şirketler bile zor ve son derece önemli bir seçimle karşı karşıya kalıyor: mevcut CMS'lerden hangisini seçecekleri. Neyi seçeceğinizi düşünüyorsanız: PrestaShop veya OKCMS, bu iki sistemi İnternet siteleri, özellikle de çevrimiçi mağazalar oluşturmak için karşılaştıracağımız bu makaleyi okumanızı öneririz.

Sanal Windows barındırma sunucularından anonim mesaj göndermek yasak olduğundan, mektup gönderme, posta sistemimizi kullanmanın da mümkün olduğu bir SMTP sunucusu aracılığıyla yapılmalıdır.

PHP kullanarak e-posta nasıl gönderilir?

Smtp sunucusunda yetkilendirmeyi destekleyen herhangi bir PHP sınıfının kullanılması. Örneğin PHPMailer sınıf setini kullanabilirsiniz.

Yetkilendirme gerektiren bir smtp sunucusu kullanarak mektup göndermeyi uygulayan örneğimizi de kullanabilirsiniz. Bu nedenle, betiğe uygun erişim ayrıntılarını eklemeyi unutmayın, örneğin:

// SMTP oturum günlüğünü göstermeniz gerekiyorsa aşağıdaki satırın açıklamasını kaldırabilirsiniz. // $_SERVER["hata ayıklama"] = doğru; function MailSmtp ($alıcı, $konu, $içerik, $başlıklar, $hata ayıklama = 0) ( $smtp_server = "smtp.site"; // SMTP sunucu adresi$smtp_port = 25; // SMTP sunucu bağlantı noktası$smtp_kullanıcı = " [e-posta korumalı]" ; // SMTP sunucusunda yetkilendirme için kullanıcı adı$smtp_password = "pAsSwORd"; // SMTP sunucusunda yetkilendirme için şifre$mail_from = " [e-posta korumalı]" ; // Mektubun gönderildiği posta kutusu$sock = fsockopen ($smtp_server, $smtp_port, $hata, $hata, 30); $str = fgets ($çorap, 512); if (! $sock ) ( printf ( "Soket oluşturulmadı\n" ); çıkış(1 ); ) smtp_msg ($sock , "HELO " . $_SERVER [ "SUNUCU_ADI" ]); smtp_msg($sock, "KİMLİK GİRİŞİ"); smtp_msg ($sock, base64_encode ($smtp_user)); smtp_msg ($sock, base64_encode ($smtp_password)); smtp_msg ($sock , "MAIL FROM:<" . $mail_from . ">" ); smtp_msg ($sock , "RCPT TO:<" . $reciever . ">" ); smtp_msg ($sock , "VERİ" ); $başlıklar = "Konu: " . $konu . "\r\n" . $başlıklar ; $veri = $başlıklar . "\r\n\r\n" . $içerik . "\r\n." ; smtp_msg ($sock , $veri ); smtp_msg ($sock , "QUIT" ); fclose ($sock ); ) function smtp_msg ($sock , $msg ) ( if ( ! $sock ) ( printf ("Bozuk soket!\n" ); çıkış(1 ); ) if (isset($_SERVER [ "hata ayıklama" ]) && $_SERVER [ "hata ayıklama" ]) ( printf ( "Bizden gönder : %S
" , nl2br (htmlspecialchars ($msg )); ) fputs ($sock , " $msg \r\n" ); $str = fgets ($sock , 512 ); if (! $sock ) ( printf ( "Socket is aşağı\n" ); çıkış(1); ) else ( if (isset($_SERVER [ "hata ayıklama" ]) && $_SERVER [ "hata ayıklama" ]) ( printf ("Sunucudan alındı: %s
" , nl2br (htmlspecialchars ($str )); ) $e = patlama (" " , $str ); $code = array_shift ($e ); $str = implode ( " " , $e ); if ($code > 499 ) ( printf ( "SMTP görüşmesinde sorunlar var.

Kod %d.
Mesaj %s
"
, $kod , $str); çıkış(1); )) ) ) ?>

MailSmtp() işlevine sahip hazır bir komut dosyası örneğini indirin: smtpauth.php.sample

Mail() işlevini doğrudan değiştirmek için yukarıda açıklanan MailSmtp() işlevini kullanabilirsiniz; PHP'deki en basit formun bir örneğini düşünün:

// Mesaj başlıkları, mesaj kodlamasını, Kimden, Kime alanlarını vb. tanımlar.$headers = "MIME Sürümü: 1.0\r\n" ; $başlıklar .= "İçerik türü: metin/html; karakter kümesi=windows-1251\r\n"; $headers .= "Kime: $hedef \r\n" ; $başlıklar .= "Gönderen: Gönderenin adı " ; // posta ($alıcı, $konu, $mesaj, $başlıklar); require_once "smtpauth.php"; MailSmtp ($alıcı, $konu, $mesaj, $başlıklar); ) ?>
Kime: Ders: Metin: 
 
 

Bu formun mail() fonksiyonu olmadan çalışabilmesi için smtpauth.php dosyasını require_once aracılığıyla dahil ettik ve içinde anlatılan MailSmtp() fonksiyonunu mail() benzeri argümanlarla çağırdık. Aynı zamanda, betiği çalıştırırken hataları önlemek için mail() çağrısının kendisini kodda yorumladık.

ASP.NET kullanarak e-posta nasıl gönderilir?

Sürüm 2.0 kullanıyorsanız MailMessage sınıfını kullanın System.Net.Mail), iyi tanımlanmış.

Aşağıda C# ve VisualBasic dilleri için kullanımına ilişkin örnekler verilmiştir:

C# dili için örnek:

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // yeni bir harf oluşturuyoruz message.To.Add(" [e-posta korumalı]"); //alıcı adresi ekleniyor message.From = new MailAddress("from@ alan adı.tld", "Gönderen adı"); // gönderenin adını ve adresini belirtiyoruz message.Subject = "Mesaj konusu"; // mektubun konusunu belirtiyoruz message.BodyEncoding = System.Text.Encoding.UTF8; // harf kodlamasını belirtiyoruz message.IsBodyHtml = false; // harf formatını belirtme (doğru - HTML, yanlış - HTML değil) message.Body = "Mesaj metni"; // mektubun metnini (gövdesini) belirtme SmtpClient istemcisi = new SmtpClient("smtp.site",25); // "smtp.site" sunucusuna yeni bir bağlantı oluşturuluyor client.DeliveryMethod = SmtpDeliveryMethod.Network; // mesaj gönderme yöntemini tanımlar client.EnableSsl = false; // sunucuya güvenli bir bağlantı kullanma ihtiyacını devre dışı bırakır client.UseDefaultCredentials = false; // varsayılan yetkilendirme ayrıntılarının kullanımını devre dışı bırakın client.Credentials = new NetworkCredential("postmaster@ alan adı.tld", "***şifre***"); // SMTP sunucusunda yetkilendirme için gerekli detayların (kullanıcı adı ve şifre) belirtilmesi client.Send(mesaj); // mesaj gönder %>

Bu yöntemin kullanımını gösteren tamamlanmış formun bir örneğini indirin: MailForm.aspx.

VisualBasic dili için örnek:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% Dim smtpMssg AS new MailMessage smtpMssg.From = New MailAddress ("admin@alan adı.tld", "Gönderen_adı") smtpMssg.To.Add (" [e-posta korumalı]") " alıcı adresi ekleniyor smtpMssg.Subject = "E-posta konusu" "Mektubun konusunun belirtilmesi smtpMssg.Body = "Mesaj metni" " Mektubun metninin (gövdesinin) göstergesi smtpMssg.BodyEncoding = System.Text.Encoding.UTF8 " harf kodlamasının göstergesi smtpMssg.IsBodyHtml = yanlış " harf formatının göstergesi (doğru - HTML, yanlış - HTML değil) SmtpMail'i Yeni SmtpClient Olarak Dim("smtp.site", 25) ""SmtpClient" türünde yeni bir nesnenin bildirimi SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network "mektup teslim yönteminin belirtilmesi SmtpMail.UseDefaultCredentials = Yanlış "yetkilendirme kimlik bilgilerinin kullanımını varsayılan olarak devre dışı bırakma" SmtpMail.EnableSsl = Yanlış " sunucuyla güvenli bir bağlantı kullanma ihtiyacını devre dışı bırakır SmtpMail.Credentials = new NetworkCredential("postmaster@) alan adı.tld", "***şifre***") "SMTP sunucusunda yetkilendirme için gerekli ayrıntıların (kullanıcı adı ve şifre) belirtilmesi SmtpMail.Send(smtpMssg) "mesaj gönderiyorum %>

Ayrıca kullanımdan kaldırılmış (ve kullanımdan kaldırılmış) bir SmtpMail sınıfı da vardır (ad alanını kullanan System.Web.Mail). Aşağıda VisualBasic dili için kullanımına bir örnek verilmiştir:

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage ""MailMessage" türünde yeni bir nesnenin bildirimi smtpMssg.From = "Gönderenin_adı alan adı.tld>" "Gönderenin adının ve adresinin belirtilmesi smtpMssg.To = "yönetici@ alan adı.tld" "alıcının adresinin belirtilmesi smtpMssg.BodyFormat = MailFormat.Text " harf formatının göstergesi smtpMssg.BodyEncoding = Kodlama.UTF8 "harf kodlamasını belirten smtpMssg.Subject = "E-posta konusu" "Mektubun konusunun belirtilmesi smtpMssg.Body = "Mesaj metni" "mektubun metninin göstergesi smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1) "sunucuda SMTP yetkilendirmesi gerektiğini belirtiyor smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin@ alan adı.tld") "yetkilendirme için kullanıcı adı smtpMssg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "***password***") "yetkilendirme şifresi SmtpMail.SmtpServer = "smtp.site" " SMTP sunucu adresini belirtme SmtpMail.Send(smtpMssg) "mesaj gönderiyorum %>

ASP kullanarak e-posta nasıl gönderilir?

Lütfen smtp sunucumuzu kullanırken yetkilendirmenin gerekli olduğunu unutmayın, bu nedenle komut dosyasına uygun erişim ayrıntılarını eklemeyi unutmayın, örneğin:

<% iConfig = Server.CreateObject("CDO.Configuration") Set iConfig = Server.CreateObject("CDO.Configuration") With iConfig.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru" .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@alan adı.tld" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Set ile Güncelleme Sonu cdoMessage = CreateObject("CDO.Message") cdoMessage Set ile .Configuration = iConfig .From = "Kullanıcıyı test et alan adı.tld>" .To = "Kullanıcı " .Subject = "Merhaba, Kullanıcı" .TextBody = "Bu mesajı ASP betiğinden yazıyorum." .Set ile Gönder Sonu cdoMessage = Ayarlanan Hiçbir Şey iConfig = Hiçbir Şey %>

Bazı CMS'lerde yazışmaların veya ilgili modüllerin gönderilmesi için yerleşik araçlar bulunur; en popüler olanlara bakalım.

Wordpress

Bu CMS için özel bir "WP Mail SMTP" modülü vardır, yapılandırmasının bir örneği modül sayfasında açıklanmaktadır.

Örnekteki resme dikkat edin; mail sistemimizde 25 numaralı portun kullanılması gerekmektedir ve SSL şifrelemeye gerek yoktur.

Joomla

Yönetim panelinde “Genel Ayarlar” bölümüne gidin, “Sunucu” sekmesini seçin. “Posta” alanında, gönderme yöntemini “SMTP sunucusu” olarak seçmeniz, “SMTP sunucu adresi” ve “SMTP girişi” ve “SMTP şifresi” alanlarında posta sisteminin uygun ayrıntılarını belirtmeniz gerekir, örneğin: smtp.site, box@alan_adınız ve karşılık gelen şifre.

Drupal

Bu CMS'nin ayrıca SMTP sunucusuyla çalışmak için kendi modülü vardır. PHPMailer.dll Bu modülü CMS Drupal web sitesindeki sayfasından indirebilirsiniz; modülün kurulumuna ilişkin bir açıklama onunla birlikte arşivde mevcuttur.

NetCat

Bu CMS'nin bir SMTP sunucusuyla çalışmaya yönelik yerleşik işlevleri yoktur. Site komut dosyalarını kullanarak posta göndermek için çözümümüzü kullanmayı önerebiliriz; bağlamak için aşağıdaki adımları uygulamanız gerekir:

  • Web sitemizden gerekli dosyaları içeren bir arşiv indirin ( send_auth_mail.php Ve mail.inc.php) ve bilgisayarınızda paketini açın;
  • Dosya düzenle send_auth_mail.php arşivden, istenen SMTP sunucusuna bağlantı ayrıntılarını belirterek:

    • $mail_smtpServer = "smtp.site"; (SMTP sunucu adresi)
    • $mail_port = "25" ; (bağlantı noktası)
    • $mail_kullanıcıadı = "[e-posta korumalı]" ; (SMTP sunucusunda yetkilendirme için kullanıcı adı)
    • $mail_password = "Şifre"; (SMTP sunucusunda yetkilendirme şifresi)
  • Dosyanın yedek kopyasını oluşturun domain.tld/www/netcat/admin/mail.inc.php;
  • dosyaları indir send_auth_mail.php Ve mail.inc.php dizindeki sanal siteye etki alanı.tld/www/netcat/admin/

alan adı.tld alan adınızla değiştirilmelidir.

Önerilen çözüm, posta göndermek için bu CMS'nin standart işlevlerini kullanan tüm NetCat modülleriyle çalışır.




Tepe