Smtp yetkilendirme kodu. E-posta gönderme (SMTP ve posta PHP). ASP kullanarak e-posta gönderme

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" . $content . "\r\n." smtp_msg ( $sock , $data ) ( 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 , $dizi); çı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: 
 
 

İçin bu form mail() işlevi olmadan çalıştığımızdan, smtpauth.php dosyasını require_once aracılığıyla ekledik ve içinde açıklanan MailSmtp() işlevini, mail()'a benzer 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 %>

Kullanımı gösteren doldurulmuş bir formun örneğini indirin Bu method: 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 belirtilmesi smtpMssg.BodyEncoding = Kodlama.UTF8 "harf kodlamasını belirten smtpMssg.Subject = "E-posta konusu" "Mektubun konusunun belirtilmesi smtpMssg.Body = "Mesaj metni" "mektup 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 adresinin belirtilmesi 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 = Hiçbir Şey Ayarlanmadı iConfig = Hiçbir Şey %>

Bazı CMS'lerde yazışmaların veya ilgili modüllerin gönderilmesi için zaten 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ş” 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 da 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ü kullanarak onu bağlamanızı önerebiliriz; 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 alan adı.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.

Uzun zamandır kullanıcılara PHP'deki mail() işlevi aracılığıyla değil, SMTP posta sunucuları aracılığıyla mektup göndermek için bir çözüm arıyordum. İnternette çok fazla çeşitli bilgi yok ve mevcut olanlar ya tam olarak doğru çalışmıyor ya da hiç çalışmıyor. Bu nedenle her şeyi bir araya getirip sitelerde sunulan hazır kodlardan yola çıkarak kendi kodumu yazdım.

Neden postayla değil de SMTP yoluyla gönderiyorsunuz()

Cevabım oldukça basit - bir süreliğine virüsler sunucum üzerinden tonlarca mektup gönderdi, bu da IP adresimin birçok postacı tarafından, özellikle de gmail.com tarafından yasaklanmasına yol açtı ve bununla bağlantılı olarak kullanıcılar mektup alabildi, bu yüzden ben Alternatif aramak zorunda kaldım ve buldum - bu SMTP

Benim senaryomun neden ortalıkta dolaşan diğerlerinden daha iyi olduğu ilginizi çekebilir?! cevap vereceğim

  1. Yandex, Rambler, Mail ile çalışır (gmail kazanamadı)
  2. Kodu temizle. Yapılandırmak için birkaç satırı değiştirmeniz yeterli
  3. E-postaları HTML formatında gönderir

İşte internette hiçbir yerde bulamadığım ama her birinden ihtiyacım olan her şeyi aldığım senaryomun avantajları. Öyleyse koda bakalım.

Function smtpmail($mail_to, $subject, $message, $service="yandex") ( $config["smtp_charset"] = "windows-1251"; //mesaj kodlaması (veya UTF-8, vb.) $config [ "smtp_from"] = "mashintop.ru"; //Adınız - veya sitenizin adı okunduğunda "Kimden" alanında gösterilecektir $config["smtp_debug"] = false; hata mesajlarını görmek için false yerine true değerini belirtin $config["smtp_port"] = "25"; // Emin değilseniz çalışma portunu değiştirmeyin"; $config["smtp_email"] = " [e-posta korumalı]"; $config["smtp_username"] = "mashintop"; //Posta kutunuzun adını değiştirin. $config["smtp_host"] = "smtp.yandex.ru"; //posta gönderme sunucusu $config[" smtp_password "] = "moi_parol"; //Şifreyi değiştir ) elseif($service=="rambler") ( $config["smtp_searcher"] = "rambler.ru"; $config["smtp_email"] = " [e-posta korumalı]"; $config["smtp_username"] = "mashintop"; //Posta kutunuzun adını değiştirin. $config["smtp_host"] = "smtp.rambler.ru"; //posta gönderme sunucusu $config[" smtp_password "] = "moi_parol"; //Şifreyi değiştir ) elseif($service=="mail") ( $config["smtp_searcher"] = "mail.ru"; $config["smtp_email"] = " [e-posta korumalı]"; $config["smtp_username"] = "mashintop"; //Posta kutunuzun adını değiştirin. $config["smtp_host"] = "smtp.mail.ru"; //posta gönderme sunucusu $config[" smtp_password "] = "moi_parol"; //Şifreyi değiştir ) elseif($service=="gmail") ( $config["smtp_searcher"] = "gmail.com"; $config["smtp_email"] = " [e-posta korumalı]"; $config["smtp_username"] = "alexeybertram"; //Posta kutunuzun adını değiştirin. $config["smtp_host"] = "smtp.gmail.com"; //posta gönderme sunucusu $config[" smtp_password "] = "moi_parol"; //Şifreyi değiştir ) $header="Tarih: ".date("D, j M Y G:i:s")." +0700rn"; $header.="Gönderen: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$config[" smtp_from"]."))))."?=<".$config["smtp_email"].">rn"; $header.="X-Mailer: Yarasa! (v3.99.3) Professionalrn"; $header.="Reply-To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode(" ".$config["smtp_from"]."")))."?=<".$config["smtp_email"].">rn"; $header.="X-Önceliği: 3 (Normal)rn"; $header.="Mesaj Kimliği:<172562218.".date("YmjHis")."@".$config["smtp_searcher"].">rn"; $header.="Kime: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("")))."? =<$mail_to>rn"; $header.="Subject: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode("".$subject."" )))."?=rn"; $header.="MIME-Version: 1.0rn"; $header.="Content-Type: text/html; charset=windows-1251rn"; $header.="Content-Transfer-Encoding: 8bitrn"; $smtp_conn = fsockopen("".$config["smtp_host"]."", $config["smtp_port"],$errno , $errstr, 10); if(!$smtp_conn) (print "sunuculardan bağlantı başarısız oldu"; fclose($smtp_conn); çıkış;) $data = get_data($smtp_conn) fputs($smtp_conn,"EHLO ". $ config["smtp_searcher"]."rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 250) (print "EHLO karşılama hatası"; fclose($smtp_conn) ; çıkış;) fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 334) (print "sunucu yetkilendirmenin başlamasına izin vermedi"; fclose ($smtp_conn); çıkış;) fputs($smtp_conn,base64_encode("".$config["smtp_username"]."")."rn"); $code = substr(get_data($smtp_conn),0,3000 ) ); if($code != 334) (print "bu kullanıcıya erişimde hata"; fclose($smtp_conn); çıkış;) fputs($smtp_conn,base64_encode("".$config["smtp_password"].""). "rn"); $code = substr(get_data($smtp_conn),0,3000); if($code != 235) (print "yanlış şifre"; fclose($smtp_conn); çıkış;) fputs($smtp_conn,"MAIL FROM:".$config["smtp_email"]."rn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 250) (print "sunucu MAIL FROM komutunu reddetti"; fclose($smtp_conn); çıkış;) fputs($smtp_conn,"RCPT TO:".$mail_to."rn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 250 AND $code != 251) (print "Sunucu RCPT TO komutunu kabul etmedi"; fclose($smtp_conn); çıkış;) fputs($smtp_conn,"DATArn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 354) (print "sunucu VERİ kabul etmedi"; fclose($smtp_conn); çıkış;) fputs($smtp_conn,$header."rn".$message."rn.rn"); $code = substr(get_data($smtp_conn),0.3000); if($code != 250) (print "ileti gönderilirken hata"; fclose($smtp_conn); çıkış;) fputs($smtp_conn,"QUITrn"); fclose($smtp_conn); ) function get_data($smtp_conn) ( $data=""; while($str = fgets($smtp_conn,515)) ( $data .= $str; if(substr($str,3,1) == " " ) ( break; )) return $veri ) $text_email = " Az önce mashintop.ru web sitesine bir reklam eklediniz. Burada görüntüleyebilirsiniz
Anahtarınız: ".$key."

Bu tuşu kullanarak reklamınızı yönetebilirsiniz.

"; $text_email .= " "; smtpmail(" [e-posta korumalı]", "Mashintop.ru'daki reklamın anahtarı", $text_email, "yandex"); //Yandex smtpmail'i kullanın(" [e-posta korumalı]", "Mashintop.ru'daki reklamın anahtarı", $text_email, "mail"); //smtpmail(" e-postasını kullanın) [e-posta korumalı]", "Mashintop.ru'daki reklamın anahtarı", $text_email, "başıboş"); //başıboş smtpmail'i kullanın(" [e-posta korumalı]", "Mashintop.ru'daki reklamın anahtarı", $text_email, "gmail"); // ancak gmail çalışmıyor :(

Hepsi bu, bitmiş komut dosyası sizin elinizde, sadece kopyalayın, $config dizisinin değerlerini değiştirin ve her şey yolunda gidecek.

Şimdi odaklanmak istediğim bazı unsurlara bakalım.

Örneğin Google’a SMTP üzerinden gönderim yapmaya çalıştığımızda aldığımız hata. Başlangıçta şu hata metnini görüyoruz:

Daha spesifik bir şey görmek için kodu biraz değiştirelim

Fputs($smtp_conn,"AUTH LOGINrn"); $code = substr(get_data($smtp_conn),0.3000); echo $kod; if($code != 334) (print "sunucu yetkilendirmenin başlatılmasına izin vermedi"; fclose($smtp_conn); çıkış;)

Ve sonunda çok spesifik bir hata alıyoruz

530 5.7.0 Önce bir STARTTLS komutu verilmeli. x4sm16408296lbn.2 - gsmtp

Tam olarak ne anlama geldiğini bilmiyorum ama güvenli, güvensiz bir bağlantıyla ilgisi olduğuna inanıyorum. Henüz bundan nasıl kurtulacağımı bilmiyorum, bu yüzden Gmail şu anda yenilmezliğini sürdürüyor.



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, 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 geri bildirim formu gönderme örneğini kullanarak buna bakacağız. Ü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?

Geri bildirim mektubu göndermenin pratik çalışmasına başlamadan önce, bunu nasıl yapacağımıza karar verelim.

Geri bildirim formu, kullanıcının site yöneticisi ile iletişim kurarak mesajını iletmesine olanak sağlayacak şekilde tasarlanmıştır. Tipik olarak 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" - gönderenin e-posta adresi için;
  • "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ızdan, bu seçenek için posta göndereceğiz. Bu önemli olmasa da. Aşağıda, değiştirildiğinde Mail.ru posta sunucusu aracılığıyla e-posta göndermenize izin verecek seçenekleri göreceksiniz.

Mektupların gönderileceği gerçek bir posta kutusu olarak, yeni oluşturulan bir etki alanı posta kullanıcısının hesabını, örneğin adresle birlikte kullanacağız. [e-posta korumalı]. Ve bu mektupları yöneticinin posta kutusuna göndereceğiz [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 formu aracılığıyla 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 istenilen form oluşturulur. Artık verileri e-posta mesajı biçiminde işleme ve gönderme konularına geçebilirsiniz.

PHPMailer kütüphanesini kurma

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

Kurulum için gerekli dosyaları indirmeniz gerekmektedir. 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 kütüphanesinin düzenli olarak indirilmesine yönelik bağlantının işaretlendiği GitHub web hizmeti sayfası bulunmaktadır.

Ayrıca bu makalenin yazıldığı sırada kayıtlı olan en son sürüm 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 aracılığıyla 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 script 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ı" ];

    $eposta = check_symbol ($eposta, "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şlatıyoruz

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

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

    $mail -> 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 olarak 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 durumu 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 bulabilirim?

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 SMTPHata 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 SMTPHata 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.

Scriptin 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önderimi hakkında 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 SMTPHata 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 (daha önce hatayla ilgili ek bilgilerin çıktısını kontrol edebilmek için 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 şifresinde kasıtlı olarak oluşturulan geçici hata dışında başka bir hata yapmadık.

Ancak mektubun gerçekten muhatabına teslim edildiğinden emin olmak için postayı adresiyle birlikte 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ın konusu: Mail gönderimleri 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. SMTPHata 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ı

PHP'de mektup gönderme işlemini otomatikleştiren komut dosyalarının kullanılması oldukça popülerdir. Bu yazıda alıcılara SMTP( Basit Posta Aktarım Protokolü ). Kendimizi yalnızca bu işlevsellikle sınırlamak çok kolay olur; komut dosyası ekleri de destekler, yani mektubunuza bir pdf, txt veya doc dosyası ekleyebilirsiniz.

Komut dosyasını ayarlamak oldukça basittir; ihtiyacınız olan tek şey, mektupların gönderileceği e-posta için gönderenin kullanıcı adı ve şifresidir.

Betik km_smtp_class.php sınıfıyla çalışır, sınıfın iyi tarafı güvenli veri aktarımı sağlayan çeşitli SSL ve TLS protokollerini desteklemesidir.

İşte betiğin kendisi:

"smtp.mail.ru", "SMTP_port" => "25", "SMTP_email" => " [e-posta korumalı]", "SMTP_pass" => "1111111", "SMTP_type" => "null"); // Alıcının E-postası $Receiver = " [e-posta korumalı]"; // Mesaj konusu $Subject = "PHP'den bir e-posta gönderiliyor"; // Mesaj metni (HTML olarak) $Text = "Merhaba!
Komut dosyasından gönderilen mesaj Mowshon Web sitesi: http://site"; // Mektuptaki ek - dosyanın adresi $Attachment = ""; /* $mail = new KM_Mailer(sunucu, port, kullanıcı, şifre, tür); */ /* Tür şunlar olabilir: null, tls veya ssl */ $mail = new KM_Mailer($SenderConfig["SMTP_server"], $SenderConfig["SMTP_port"], $SenderConfig["SMTP_email"], $SenderConfig["SMTP_pass"], $ SenderConfig[" SMTP_type"]); if($mail->isLogin) ( // Bir dosya ekleyin if($Attachment) ($mail->addAttachment($Attachment);) // Daha fazla alıcı ekleyin $mail->addRecipient( " [e-posta korumalı]"); $mail->addRecipient(" [e-posta korumalı]"); /* $mail->send(From, For, Subject, Text, Subject = isteğe bağlı) */ $SendMail = $mail->send($SenderConfig["SMTP_email"], $Receiver, $Subject, $Text ); // Alıcıların listesini temizleyin $mail->clearRecipients(); $mail->clearAttachments(); else ( echo "SMTP sunucusuna bağlanırken bir hata oluştu"; ) ?>

Komut dosyası kurulumu temel olarak $SenderConfig dizisine dayanmaktadır; burada SMTP:sunucu, bağlantı noktası, oturum açma adı ve e-posta parolasını belirtmemiz gerekir. Her dizi anahtarını açıklayalım:

SMTP_server - SMTP sunucu adresi (farklı e-postalar için ayrı adres)

Mail.ru postası: smtp.mail.ru bağlantı noktası: 25, 587 ve 465 (SSL şifrelemeli)

Yandex postası: smtp.yandex.ru bağlantı noktası: 25, 587 465 (SSL bağlantı noktası)

Rambler postası: mail.rambler.ru bağlantı noktası: 25, 587 465 (SSL bağlantı noktası)

Yahoo e: smtp.mail.yahoo.com SSL bağlantı noktası: 465

(Listede bulunmayan smtp sunucularının adreslerine ihtiyacınız varsa yorumlara yazın)

SMTP_port - Her smtp sunucusu için yukarıda zaten açıkladık.

SMTP_email - kullanıcı daha kesin olurdu, ancak netlik sağlamak için e-posta yazdım, e-posta adresini belirtiyoruz.

SMTP_pass - SMTP_email anahtarında değer olarak belirtilen e-postanın şifresi


SMTP_type - Varsayılan NULL. Mektupların gönderileceği protokol. Protokoller: SSL ve TLS

$Attachment değişkeninde (/var/patch/to/file/File.pdf) dosyanın tam adresini belirterek bir mektuba ekler ekleyebilirsiniz.

Sorularınız varsa aşağıdaki yorumlara yazın.

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.

Bu dosyayı sitenizin kök dizinine yerleştirin.

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.

Bu yöntemin dezavantajları arasında bu yöntemin tutarlı bir şekilde çalışmadığını belirtmekte fayda var. 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.

Kişisel Yandex hesabınızda yetkilendirme sonrasında https://pdd.yandex.ru/ bağlantısında bir alan adı postası 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.




Tepe