Posta gönderme (SMTP ve posta PHP'si). SMTP kullanarak PHP'den posta gönderme (ekli) Smtp kullanarak nasıl posta gönderilir

  • 21.11.2020

Sanal Windows barındırma sunucularından anonim mesajlar 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ı kullanmak. Örneğin, bir dizi PHPMailer sınıfı kullanılabilir.

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

// SMTP oturumunun günlüğünü göstermek istiyorsanız, sonraki satırın açıklamasını kaldırabilirsiniz. // $ _SERVER ["hata ayıklama"] \u003d doğru;işlevi MailSmtp ($ alıcı, $ konu, $ içerik, $ başlıklar, $ hata ayıklama \u003d 0) ($ smtp_server \u003d "smtp.site"; // SMTP sunucu adresi$ smtp_port \u003d 25; // SMTP sunucusu bağlantı noktası$ smtp_user \u003d "kullanıcı@domen.ru"; // SMTP sunucusunda yetkilendirme için kullanıcı adı$ smtp_password \u003d "pAsSwORd"; // SMTP sunucusunda yetkilendirme için şifre$ mail_from \u003d "[email protected]"; // Mektubun gönderildiği posta kutusu$ çorap \u003d fsockopen ($ smtp_server, $ smtp_port, $ errno, $ hatastr, 30); $ str \u003d fgets ($ sock, 512); eğer (! $ sock) (printf ("Soket oluşturulmadı \\ n"); exit (1);) smtp_msg ($ sock, "HELO". $ _SERVER ["SERVER_NAME"]); smtp_msg ($ sock, "AUTH LOGIN"); smtp_msg ($ sock, base64_encode ($ smtp_user)); smtp_msg ($ sock, base64_encode ($ smtp_password)); smtp_msg ($ sock, "MAIL:<" . $mail_from . ">"); smtp_msg ($ sock," RCPT TO:<" . $reciever . ">"); smtp_msg ($ sock," DATA "); $ başlıklar \u003d" Konu: ". $ konu" \\ r \\ n ". $ başlıklar; $ veri \u003d $ başlıklar." \\ r \\ n \\ r \\ n " . $ içerik. "\\ r \\ n."; smtp_msg ($ sock, $ data); smtp_msg ($ sock, "QUIT"); fclose ($ sock);) işlev smtp_msg ($ sock, $ msg) (if ( ! $ sock) (printf ("Kırık soket! \\ n"); exit (1);) if (isset ($ _ SUNUCU ["hata ayıklama"]) && $ _SERVER ["hata ayıklama"]) (printf ("Bizden gönder :% s
", nl2br (htmlspecialchars ($ msg)));) fputs ($ sock," $ msg \\ r \\ n "); $ str \u003d fgets ($ sock, 512); if (! $ sock) (printf (" Soket aşağı \\ n "); çıkış (1);) else (if (isset ($ _ SUNUCU [" hata ayıklama "]) && $ _SERVER [" hata ayıklama "]) (printf (" Sunucudan alındı:% s
", nl2br (htmlspecialchars ($ str)));) $ e \u003d patlatma (" ", $ str); $ kod \u003d dizi_shift ($ e); $ str \u003d implode (" ", $ e); if ($ kod \u003e 499) (printf ( "SMTP görüşmesiyle ilgili sorunlar.

% D kodu.
Mesaj% s
"
$ kod, $ diz); çıkış (1); )))?\u003e

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

Yukarıda açıklanan MailSmtp () işlevini doğrudan mail () işlevini değiştirmek için kullanabilirsiniz, PHP'deki en basit biçime bir örnek düşünün:

// Mesaj başlıkları, mesaj kodlamasını, Kimden, Kime alanlarını vb. Tanımlar.$ başlıklar \u003d "MIME Sürümü: 1.0 \\ r \\ n"; $ üstbilgiler. \u003d "İçerik türü: text / html; charset \u003d windows-1251 \\ r \\ n"; $ başlıklar. \u003d "Kime: $ - \\ r \\ n"; $ üstbilgiler. \u003d "Gönderen: Gönderenin adı " ; // mail ($ to, $ konu, $ mesaj, $ başlıklar);required_once "smtpauth.php"; MailSmtp ($ to, $ konu, $ ileti, $ başlıklar); )?\u003e
Kime:  Tema:  Metin: 
 
 

Bu formun mail () işlevi olmadan çalışması için smtpauth.php dosyasını require_once yoluyla ekledik ve mail () için aynı argümanlarla içinde açıklanan MailSmtp () işlevini çağırdık. Aynı zamanda, komut dosyasını çalıştırırken bir hatayı önlemek için kodda mail () çağrısının kendisine yorum yaptık.

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

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

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 e-posta oluştur message.To.Add ("[email protected]"); // alıcı adresini ekle message.From \u003d new MailAddress ("from @ domain.tld", "Gönderen adı"); // gönderenin adını ve adresini belirtmek message.Subject \u003d "Mesaj konusu"; // konu satırını belirtmek message.BodyEncoding \u003d System.Text.Encoding.UTF8; // mektubun kodlamasını belirleme message.IsBodyHtml \u003d false; // mesaj biçimini belirtme (doğru - HTML, yanlış - HTML değil) message.Body \u003d "Mesaj metni"; // mektubun metnini (gövdesini) belirleme SmtpClient istemcisi \u003d yeni SmtpClient ("smtp.site", 25); // "smtp.site" sunucusuna yeni bir bağlantı oluşturun client.DeliveryMethod \u003d SmtpDeliveryMethod.Network; // mesaj gönderme yöntemini tanımlar client.EnableSsl \u003d false; // sunucuya güvenli bir bağlantı kullanma ihtiyacını devre dışı bırakır client UseDefaultCredentials \u003d false; // "varsayılan" yetkilendirme ayrıntılarının kullanımını devre dışı bırakın client.Credentials \u003d new NetworkCredential ("postmaster @ domain.tld"," *** parola *** "); // SMTP sunucusunda yetkilendirme için gerekli ayrıntıları (kullanıcı adı ve şifre) belirleme client.Send (mesaj); // mesaj gönder %>

Bu yöntemin kullanımını gösteren hazır bir form ö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@domain.tld"," Gönderen_adı ") smtpMssg.To.Add (" kullanıcı@tomail.tld ") "alıcı adresini ekle smtpMssg.Subject \u003d "E-posta Konusu" "mektubun konusunu belirterek smtpMssg.Body \u003d "E-posta gövdesi" "mektubun metnini (gövdesini) belirterek smtpMssg.BodyEncoding \u003d System.Text.Encoding.UTF8 "harf kodlamasının göstergesi smtpMssg.IsBodyHtml \u003d false "mesaj biçimini belirtme (doğru - HTML, yanlış - HTML değil) Dim SmtpMail As New SmtpClient ("smtp.site", 25) "SmtpClient" türünde yeni bir nesne bildirme SmtpMail.DeliveryMethod \u003d SmtpDeliveryMethod.Network "mektup teslim yönteminin göstergesi SmtpMail UseDefaultCredentials \u003d Yanlış "varsayılan yetkilendirme ayrıntılarının kullanımını devre dışı bırak" SmtpMail.EnableSsl \u003d Yanlış "sunucuyla güvenli bir bağlantı kullanma ihtiyacını devre dışı bırakır SmtpMail.Credentials \u003d new NetworkCredential ("postmaster @ domain.tld"," *** parola *** ") "SMTP sunucusunda yetkilendirme için gerekli ayrıntıları (kullanıcı adı ve şifre) belirterek SmtpMail.Send (smtpMssg) "mesaj göndermek %>

Ayrıca kullanımdan kaldırılmış (ve kullanımdan kaldırılmış) SmtpMail sınıfı da vardır (ad alanını kullanarak 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 nesne bildirme smtpMssg.From \u003d "Gönderenin_adı domain.tld>" "gönderenin adını ve adresini belirterek smtpMssg.To \u003d "yönetici @ domain.tld" "alıcının adresinin göstergesi smtpMssg.BodyFormat \u003d MailFormat.Text "mektubun formatını belirterek smtpMssg.BodyEncoding \u003d Kodlama.UTF8 "harf kodlamasının göstergesi smtpMssg.Subject \u003d "E-posta Konusu" "mektubun konusunu belirterek smtpMssg.Body \u003d "E-posta metni" "mektubun metnini belirterek smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1) "sunucuda SMTP yetkilendirmesi ihtiyacını belirtir smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin @ domain.tld") "yetkilendirme için kullanıcı adı smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/sendpassword", "*** şifre ***") "yetkilendirme şifresi SmtpMail.SmtpServer \u003d "smtp.site" "SMTP sunucusunun adresini belirterek SmtpMail.Send (smtpMssg) "mesaj göndermek %>

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

Lütfen smtp sunucumuzu kullanırken yetkilendirme gerektiğini 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@domain.tld".Item (" http://schemas.microsoft.com/cdo/configuration/sendpassword ") \u003d" password ". Güncelleme Sonu Set ile cdoMessage \u003d CreateObject (" CDO.Message ") cdoMessage Set ile .Configuration \u003d iConfig .From \u003d "Kullanıcıyı test et domain.tld\u003e ".To \u003d" Kullanıcı ".Subject \u003d" Merhaba, Kullanıcı ".TextBody \u003d" Bu mesajı ASP betiğinden yazıyorum. ". Sonu Ayarla Gönder cdoMessage \u003d Hiçbir Şey Ayarlanmadı iConfig \u003d Hiçbir Şey%\u003e

Bazı CMS, yazışma veya ilgili modülleri göndermek için zaten yerleşik araçlara sahiptir, en popüler olanlarını düşünelim.

Wordpress

Bu CMS için özel bir "WP Mail SMTP" modülü vardır, bunun konfigürasyonunun bir örneği modül sayfasında açıklanmıştır.

Örnekteki resme dikkat edin, posta sistemimiz 25. bağlantı noktasının kullanılmasını gerektirmektedir ve SSL şifreleme gerekli değildir.

Joomla

Yönetim panelinde "Genel ayarlar" bölümüne gidin, "Sunucu" sekmesini seçin. "Mail" alanında, "SMTP server address" ve "SMTP login" ve "SMTP password" alanlarında gönderme yöntemini "SMTP server" olarak seçmeniz gerekir, posta sisteminin uygun ayrıntılarını belirtin, örneğin: smtp sitesi, mailbox @ alan_adiniz ve karşılık gelen parola.

Drupal

Bu CMS ayrıca bir SMTP sunucusuyla çalışmak için kendi modülüne sahiptir. PHPMailer. Bu modülü CMS Drupal web sitesindeki sayfasından indirebilirsiniz, modülün kurulumunun bir açıklaması onunla birlikte arşivde mevcuttur.

NetCat

Bu CMS, bir SMTP sunucusuyla çalışmak için yerleşik işlevlere sahip değildir. Site komut dosyalarıyla posta göndermek için çözümümüzü kullanmanızı önerebiliriz; bağlamak için aşağıdakileri yapmanız gerekir:

  • Web sitemizden gerekli dosyaları içeren arşivi indirin ( send_auth_mail.php ve mail.inc.php) ve bilgisayarınızda ambalajından çıkarın;
  • Dosya düzenle send_auth_mail.php arşivden, istenen SMTP sunucusuna bağlanmanın ayrıntılarını belirterek:

    • $ mail_smtpServer \u003d "smtp.site"; (SMTP sunucu adresi)
    • $ mail_port \u003d "25" ; (bağlantı noktası)
    • $ mail_username \u003d "[email protected]"; (SMTP sunucusunda yetkilendirme için kullanıcı adı)
    • $ mail_password \u003d "Parola"; (SMTP sunucusunda yetkilendirme şifresi)
  • Yedek dosya domain.tld / www / netcat / admin / mail.inc.php;
  • dosyaları indir send_auth_mail.php ve mail.inc.php dizindeki sanal siteye domain.tld / www / netcat / admin /

domain.tld alan adınız ile değiştirilmelidir.

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

PHP'de, mektup gönderme sürecini otomatikleştiren betikleri kullanmak oldukça popülerdir. Bu makalede, SMTP kullanarak alıcıların postalarına mektuplar gönderen basit bir komut dosyasına bakacağız ( Basit Posta Aktarım Protokolü ). Kendimizi sadece bu işlevsellikle sınırlamak çok kolay olurdu, komut dosyası ekleri de destekler, yani mektubunuza bir pdf, txt veya doc dosyası ekleyebilirsiniz.

Komut dosyasını kurmak oldukça basittir, sadece göndericinin verilerine, giriş bilgilerine, şifresine mektupların gönderileceği e-postadan ihtiyacınız vardır.

Komut dosyası km_smtp_class.php sınıfıyla çalışır, sınıf iyidir çünkü güvenli veri iletimi sağlayan farklı SSL ve TLS protokollerini destekler.

İşte komut dosyasının kendisi:

"smtp.mail.ru", "SMTP_port" \u003d\u003e "25", "SMTP_email" \u003d\u003e "[email protected]", "SMTP_pass" \u003d\u003e "1111111", "SMTP_type" \u003d\u003e "boş"); // Alıcının e-postası $ Alıcı \u003d "[email protected]"; // Mesajın konusu $ Subject \u003d "PHP'den bir e-posta gönderiliyor"; // Mesaj metni (HTML olarak) $ Text \u003d "Merhaba!
Komut dosyasından gönderilen mesaj Mowshon Site: http: // site "; // Mektuptaki ek - $ Attachment \u003d" "; / * $ mail \u003d new KM_Mailer (server, port, user, password, type); * / / * dosya adresi : , tls veya ssl * / $ mail \u003d new KM_Mailer ($ SenderConfig ["SMTP_server"], $ SenderConfig ["SMTP_port"], $ SenderConfig ["SMTP_email"], $ SenderConfig ["SMTP_pass"], $ SenderConfig [" SMTP_type "]); if ($ mail-\u003e isLogin) (// Bir dosya ekle if ($ Attachment) ($ mail-\u003e addAttachment ($ Attachment);) // Daha fazla alıcı ekle $ mail-\u003e addRecipient (" user @ mail .ru "); $ mail-\u003e addRecipient (" [email protected] "); / * $ mail-\u003e gönder (Kimden, İçin, Konu, Metin, Başlık \u003d isteğe bağlı) * / $ SendMail \u003d $ mail-\u003e gönder ($ SenderConfig ["SMTP_email"], $ Receiver, $ Subject, $ Text); // Alıcı listesini temizle $ mail-\u003e clearRecipients (); $ mail-\u003e clearCC (); $ mail-\u003e clearBCC (); $ mail -\u003e clearAttachments ();) else (echo "SMTP sunucusuna bağlanırken bir hata oluştu";)?\u003e

Komut dosyası ayarları temel olarak $ SenderConfig dizisine dayanır, burada SMTP'yi belirtmeliyiz: sunucu, bağlantı noktası, kullanıcı adı ve e-postadan şifre. Dizinin her bir anahtarını tanımlayalım:

SMTP_server - SMTP sunucu adresi (farklı postalar için bireysel 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 olmayan smtp sunucularının adresine ihtiyacınız varsa - yorumları yazın)

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

SMTP_email - kullanıcı olmak daha doğru olur, ancak netlik için bir e-posta yazdım, e-posta adresini belirtiyoruz.

SMTP_pass - SMTP_email anahtarında bir değer olarak belirtilen e-postadaki parola


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

Mektuba ekler, $ Attachment değişkeninde (/var/patch/to/file/File.pdf) dosyaya tam adres belirtilerek millet eklenebilir.

Herhangi bir sorunuz varsa, aşağıdaki yorumlara yazın.

PHPMailer, sitenizden e-posta mesajları göndermek için çok kullanışlı ve popüler bir kitaplıktır. Bu makale temel kitaplık ayarlarını açıklar ve mesaj göndermek için kod örnekleri sağlar. PHPMailer ürün yelpazesinde postayla çalışmaktan isteyebileceğiniz her şeye sahiptir: farklı yollarla, farklı sunucular aracılığıyla göndermek, dahil. smtp aracılığıyla, mektuplarınızı spam ile sonuçlanmaması için şifreleme ve imzalama yeteneği ve çok daha fazlası.

PHPMailer kitaplığını https://github.com/PHPMailer/PHPMailer adresinden indirebilirsiniz ("Klonla veya indir" düğmesi).

Başlangıç \u200b\u200bolarak, PHPMailer kullanarak e-postaların nasıl gönderileceğinin açık olması için birkaç basit örneği analiz edeceğim.

PHPMailer kullanarak mail () işlevi aracılığıyla e-posta gönderme

Barındırma sisteminizden posta sunucunuz aracılığıyla mektup göndermek istiyorsanız, her şey oldukça basittir ve şuna benzer:

// PHPMailer kitaplığını dahil edin, PHPMailer \\ PHPMailer \\ PHPMailer kullanın; "PHPMailer / PHPMailer.php" gerektirir; // Bir posta oluşturun $ mail \u003d new PHPMailer (); $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); // kimden (e-posta ve ad) $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); // kime (e-posta ve ad) $ mail-\u003e Konu \u003d "Test"; // e-posta konusu // html e-posta metni $ mail-\u003e msgHTML ("

Merhaba!

Bu bir test mektubu.

"); // Gönder if ($ mail-\u003e send ()) (echo" Mektup gönderildi! ";) Else (echo" Error: ". $ Mail-\u003e ErrorInfo;)

Gördüğünüz gibi, her şey oldukça basit: kütüphaneyi birbirine bağlıyoruz, kime, kime, mektubun konusunu ve metnini doldurup gönderiyoruz. Bu şekilde mektup göndermek yalnızca etki alanınızın e-posta adreslerinden çalışacaktır (diğer postacılara bağlı olmadıkları sürece).

PHPMailer'ı kullanarak Yandex ve Google'ı örnek olarak kullanarak SMTP aracılığıyla e-posta gönderme

Ayrıca başka bir posta yoluyla da mektup gönderebilirsiniz; örneğin, Yandex... Kod şunun gibi görünecek:

// PHPMailer kitaplığını dahil edin PHPMailer \\ PHPMailer \\ PHPMailer kullanın; PHPMailer \\ PHPMailer \\ SMTP kullanın; "PHPMailer / PHPMailer.php" gerektirir; "PHPMailer / SMTP.php" gerektirir; // Bir posta oluşturun $ mail \u003d new PHPMailer (); $ mail-\u003e isSMTP (); // SMTP üzerinden gönderme $ mail-\u003e Host \u003d "smtp.yandex.ru"; // SMTP sunucu adresi $ mail-\u003e SMTPAuth \u003d true; // SMTP kimlik doğrulamasını etkinleştir $ mail-\u003e Kullanıcı Adı \u003d "login"; // kullanıcı adınız (etki alanı ve @ yok) $ mail-\u003e Şifre \u003d "şifre"; // şifreniz $ mail-\u003e SMTPSecure \u003d "ssl"; // ssl $ mail-\u003e Bağlantı Noktası \u003d 465; // bağlantı portu $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); // kimden $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); // kime $ mail-\u003e Subject \u003d "Test"; $ mail-\u003e msgHTML ("

Merhaba!

Bu bir test mektubu.

"); // Gönder if ($ mail-\u003e send ()) (echo" Mektup gönderildi! ";) Else (echo" Error: ". $ Mail-\u003e ErrorInfo;)

Google üzerinden e-posta gönderme bir uyarısı var: bir google hesabına ihtiyacınız var güvenilmeyen uygulamalara erişime izin ver... Bunu yapmak için, https://myaccount.google.com hesabınıza giriş yapmanız, güvenliğe gitmeniz, "Hesabınıza erişimi olan güvenilmez uygulamalar" bölümüne gitmeniz ve buradan "İzin Verildi" seçeneğine geçmeniz gerekir. Bu yazının yazıldığı sırada bu https://myaccount.google.com/u/0/lesssecureapps.

$ mail-\u003e Host \u003d "smtp.gmail.com"; // SMTP sunucu adresi $ mail-\u003e SMTPAuth \u003d true; // SMTP kimlik doğrulamasını etkinleştir $ mail-\u003e Kullanıcı Adı \u003d "login"; // kullanıcı adınız $ mail-\u003e Parola \u003d "parola"; // şifreniz $ mail-\u003e SMTPSecure \u003d "ssl"; // ssl $ mail-\u003e Bağlantı Noktası \u003d 465; // bağlantı noktası

Gönderme programını smtp aracılığıyla ilk kez çalıştırıyorsanız, göndermeden önce ek olarak kullanmanız önerilir. $ mail-\u003e SMTPDebug \u003d 1; tüm istemci ve smtp sunucu mesajlarını almak için, örn. Programınızın hatalarını ayıklamak için çok yararlı olan tüm bağlantı, yetkilendirme vb. işlemler ekranda görüntülenecektir.

PHPMailer kullanarak ekli bir e-posta gönderme

Burada her şey oldukça basit, sadece yöntemi kullanmanız gerekiyor addAttachment... Aynı zamanda birkaç ek özelliği daha gösteren bir örnek vereceğim:

// PHPMailer kitaplığını dahil edin PHPMailer \\ PHPMailer \\ PHPMailer kullanın; PHPMailer \\ PHPMailer \\ Exception kullanın; "PHPMailer / PHPMailer.php" gerektirir; "PHPMailer / Exception.php" gerektirir; // Bir posta oluşturun $ mail \u003d new PHPMailer; $ mail-\u003e CharSet \u003d "UTF-8"; $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); // kimden $ mail-\u003e addReplyTo ("[email protected]", "Ivan Ivanov"); // iade adresi $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); // kime $ mail-\u003e Subject \u003d "Test"; // konu $ mail-\u003e msgHTML (file_get_contents ("içindekiler.html"), __DIR__); // mektubun "gövdesini" $ mail-\u003e AltBody \u003d "Düz metinde harf"; // istemci html $ mail-\u003e addAttachment ("my_file.txt") desteklemiyorsa düz metin; // bir dosya ekleyin $ mail-\u003e addAttachment ("phpmailer.jpg"); // ikinci dosyayı ekle // Gönder if ($ mail-\u003e send ()) (echo "Email gönderildi!";) else (echo "Error:". $ mail-\u003e ErrorInfo;)

AddAddress kullanılarak birden çok alıcı adresi eklenebilir. Veya gerekirse, yöntemi kullanarak tüm alıcı adreslerini silebilirsiniz. clearAddresses ()... İle tüm ekleri temizleyebilirsiniz clearAttachments ().

Ayrıca kullanabilirsin AddEmbeddedImage html kodunda kullanılması amaçlanan ve indirilemeyecek olan e-postaya bir ek (genellikle resimler) eklemek için. İndirilemeyen bir mektuptaki resmi kullanmaya bir örnek:

// PHPMailer kitaplığını dahil edin PHPMailer \\ PHPMailer \\ PHPMailer kullanın; "PHPMailer / PHPMailer.php" gerektirir; // E-posta oluştur $ mail \u003d new PHPMailer; $ mail-\u003e IsHTML (doğru); $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); $ mail-\u003e Konu \u003d "Test"; $ mail-\u003e AddEmbeddedImage ("phpmailer.jpg", "testImage"); $ mail-\u003e Gövde \u003d "

HTML kodundaki resim

"; // $ mail-\u003e gönder ();

Böylece gönderebilirsin resimli harflere-postanın yalnızca gövdesinde bulunan ancak ek olarak indirilemez. Bu görüntüler, mektubun html kodunun herhangi bir yerinde kullanılabilir, sadece AddEmbeddedImage'da kullandığınız url yerine görüntünün cid'ini belirtmeniz yeterlidir.

PHPMailer aracılığıyla imzalanmış ve şifrelenmiş bir e-posta gönderme

Varsayılan olarak, PHPMailer gönderilen tüm mesajları şifreler. E-posta şifrelemesini yalnızca şu kodu kullanarak SMTP yoluyla e-posta gönderirken devre dışı bırakabilirsiniz:

$ mail-\u003e SMTPSecure \u003d yanlış; $ mail-\u003e SMTPAutoTLS \u003d false;

İçin mektubu DKIM imzasıyla imzalayın, birkaç şey yapmanız gerekiyor:

  • Alanınız için özel ve genel anahtarlar oluşturun
  • Genel anahtarlı TXT alanı için DNS kaydı ekleyin
  • E-posta göndermeden önce PHPMailer'da DKIM imzasını yapılandırın

Şimdi her adımı biraz daha ayrıntılı olarak anlatacağım.

Özel ve genel anahtarlar oluşturma

Linux barındırma hizmetiniz varsa ve Shell'e erişiminiz varsa, o zaman anahtar dosyalar oluşturmak armut bombardımanı yapmak kadar kolaydır, yalnızca kullanıcınızın normal haklarıyla 2 komut çalıştırmanız gerekir:

Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout

Sırasıyla, test-private.pem ve test-public.pem özel ve genel anahtarlardır. Bunları site ziyaretçilerinin veya sizden başka kimsenin erişemeyeceği bir klasöre kaydetmeniz gerekir.

Komutların kabukta çalıştırılması mümkün değilse, özel ve genel anahtarlar oluşturmak ve bunları dosyalara kaydetmek için aşağıdaki kodu kullanabilirsiniz:

$ alan \u003d "test.ru"; // etki alanınız $ privatekeyfile \u003d "test-private.pem"; // özel anahtarın yazılacağı dosyanın adı $ publickeyfile \u003d "test-public.pem"; // eğer (file_exists ($ privatekeyfile)) (echo "ise, genel anahtarın içine yazılacağı dosyanın adı

Mevcut anahtarları kullanma

"; $ privatekey \u003d file_get_contents ($ privatekeyfile); $ publickey \u003d file_get_contents ($ publickeyfile);) else (echo"

Anahtarlar oluşturun' ); $ publickey \u003d $ pubKey ["anahtar"]; file_put_contents ($ publickeyfile, $ publickey); $ privatekey \u003d file_get_contents ($ privatekeyfile);) echo "

Özel anahtar (bunu gizli tutun!):

". $ privatekey."
"; Eko"

Genel anahtar:

". $ publickey."
";

Dikkat! Dosyaların kaydedileceği klasörün yazılabilir olduğundan emin olun.

Genel anahtarla DNS kaydı ekleme

Mektuplarınızı alacak posta sunucularının alan adınızın DNS kaydını okuyarak mektup üzerindeki imzayı doğrulayabilmesi için bir DNS kaydı gereklidir. Genellikle, etki alanı kontrol panelinize veya barındırma kontrol panelinize bir DNS kaydı eklenebilir. Bir girişi nasıl ekleyeceğinizden emin değilseniz, barındırma sağlayıcınızın desteğiyle iletişime geçin.

Şuna benzeyen bir DNS kaydı eklemeniz gerekir:

Kayıt adı: mail._domainkey.test.ru. (sonunda bir nokta ".")

TTL: 3600 (veya hangisi varsayılan olacaktır)

Kayıt tipi: Txt

Değer: v \u003d DKIM1; h \u003d sha256; t \u003d s; p \u003d YOUR_PUBLIC_KEY

Giriş adına test.ru alan adınızla değiştirilmesi gerekiyor. "YOUR_PUBLIC_KEY" kelimelerini, "----- BEGIN PUBLIC KEY -----" ve "----- END PUBLIC KEY --- olmadan," Genel anahtar "dan sonraki önceki adımda aldığınız metinle değiştirirsiniz. - ", yalnızca anahtarın kendisi. Bu durumda, anahtar ihtiyacın tüm satırları tek bir uzun dizede birleştirböylece satırsonu olmaz.

PHPMailer'da DKIM imzası kurma ve e-posta gönderme

Şimdi geriye kalan tek şey mektubu göndermeden önce birkaç PHPMailer ayarı yapmak ve imzalanacak. Sanırım verilen örnek her şeyi açıklığa kavuşturacak:

// Kütüphaneyi dahil et PHPMailer \\ PHPMailer \\ PHPMailer; "PHPMailer / PHPMailer.php" gerektirir; // Bir posta oluşturun $ mail \u003d new PHPMailer; $ mail-\u003e CharSet \u003d "UTF-8"; $ mail-\u003e setFrom ("[email protected]"); $ mail-\u003e addAddress ("[email protected]"); $ mail-\u003e Konu \u003d "Bu bir testtir"; $ mail-\u003e msgHTML ("

Bu bir test

"); // DKIM imzası ayarlanıyor $ mail-\u003e DKIM_domain \u003d" test.ru "; $ mail-\u003e DKIM_private \u003d" test-private.pem "; $ mail-\u003e DKIM_selector \u003d" mail "; // $ mail- gönderiliyor \u003e gönder ();

Elbette test.ru alan adınızı değiştirmelisiniz ve test-private.pem anahtar oluşturma aşamasında oluşturulan özel anahtar dosyasının tam yolu ve adına.

Şimdi, PHPMailer aracılığıyla gönderilen e-postalarınız özel anahtarınızla DKIM imzalı olacak.

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

Her şeyden önce SMTP (Basit Posta Aktarım Protokolü), e-postayı TCP / IP ağları üzerinden aktarmak için yaygın olarak kullanılan bir ağ protokolüdür. Ve tüm popüler posta servislerinin bu tür protokolleri vardır.

Yerel sunucuların ortaya çıkmasıyla, tek tek komut dosyalarının veya cms sistemlerinin performansını kontrol etmek ve hatta bunun bedelini ödemek için bir barındırma sağlayıcısı seçmeye gerek yoktu. Her şeyi bir bilgisayarda test etmek çok daha kolaydır ve sonra "ne yaptığınızı" herkese gösterebilirsiniz.

Bu tür sunucuların çoğu, yerleşik yazılıma ve postayla çalışmak için gerekli işlevselliğe sahiptir, yalnızca doğru şekilde yapılandırmanız gerekir.

Bu tür postaların performansını kontrol etmek için en az gerekenler:

  • Açılış sunucusu, yerel bir sunucu olarak kullanılabilir.
  • Ve şablonu hemen aşağıdan alınabilen basit bir komut dosyası.
  • Herhangi bir posta sunucusu kullanılabilir.

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

Aşağıda kopyalanabilen veya yüzlerce benzer siteden indirilebilen basit bir komut dosyası şablonunun düzenlenmesi gerekir.

Öncelikle, komut dosyası şablonundaki bazı değerleri değiştirmeniz gerekir.
-e - posta mesajının gönderileceği posta adresini değiştiririz.
konu - mektup konusu
İleti - mesajın kendisi veya mektubun gövdesi.

Senaryomun bir örneği:

Elbette, işlevselliği biraz genişletebilir ve komut dosyasının posta gönderme hakkında bir mesaj görüntülemesini sağlayabilirsiniz. Mesajı gerçekten gönderen SMTP sunucusu olmasına rağmen, komut dosyası yalnızca mesajı oluşturur.

Örneğin şöyle yazabilirsiniz:

Değiştirilen tüm değerler tırnak içinde olmalıdır, aksi takdirde komut dosyası bir hata oluşturur. Bundan sonra, komut dosyasını 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 gönderilecektir. "Kime" , ancak açılış sunucu ayarlarında belirtilecek olan SMTP bu postayı işleyecek ve gönderecektir.

  1. Sunucuyu başlatıyoruz
  2. Açıcı modülünü "posta" menüsündeki ayarlarla açın
  3. Kullanıcı adı, gönderenin e-postası ve şifresi Yandex'deki gerçek bir posta kutusundan değiştirilirken, resimde gösterilen tüm alanları dolduruyoruz.

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

Bu komut dosyası çağrılır çağrılmaz, bilgi komut dosyasının çalıştığı yeni bir tarayıcı penceresinde görünecektir.

Bundan sonra, adresi komut dosyasında belirtilen posta kutunuzu, mektubun gelip gelmediğini kontrol etmeye değer.

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

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

SMTP mail ru ile posta göndermeyi yapılandırmak için, Yandex parametrelerini mail ru parametreleriyle değiştirmeniz yeterlidir.

Yerel sunucuyu her seferinde yeniden kurmamak için, en iyisi farklı açılış sunucu profillerini yapılandırmaktır. Bunun nasıl yapılacağı eğitim videosunda gösterilmektedir.

Bu durumda sadece profili yüklemek yeterli olacak ve bu profil için belirlenen tüm ayarlar sunucu yeniden başlatıldıktan sonra kullanılabilecektir. Bu çok kullanışlı bir şey ve çok basit çalışıyor.

Her profil için (ne adlandırılacağı önemli değil), elbette parametrelerinde farklı betikler, cms sistemleri ve uygulamaları kullanılması planlanmadıkça kendi ayarları yapılmalıdır.
Değilse, varsayılan ayarlarla geçebilirsiniz.

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

Yandex verileri, posta ru verilerinde değişiklik

Smtp google üzerinden mail gönderme

Google'ın SMTP'si aracılığıyla posta göndermeyi ayarlamak için biraz denemelisiniz.

İlk olarak, profilin kendisini Google'da oluşturmak, diğer Yandex ve mail ru sistemlerinden daha zordur.
İkinci olarak, sistem, oturum açma ayrıntılarınızı belirtseniz bile mektubun geçmesine izin vermeyecektir. Başlamak için, diğer talimatlar hakkında gerekli tüm bilgilerin bulunduğu bir mektup gönderecek.

Dinlenmek için Google için 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.

Her şey sizin için yolunda giderse ve mektuplar belirtilen adrese ulaştıysa, o zaman her şey doğru bir şekilde yapıldı. Çalışmanızı yorumlarda paylaşırsanız harika olur.

Belirli bir sitenin verimli ve üretken bir şekilde çalışma fırsatına sahip olması için, oluşturulmasına mümkün olduğunca sorumlu ve dengeli yaklaşılmalıdır. Online mağaza oluştururken kullanılacak sistemin seçimi özel bir ilgiyi hak ediyor. Gerçek şu ki, malların veya hizmetlerin satışında uzmanlaşmış ticari bir platform, hem sitelerin bakımı ve doldurulmasıyla ilgilenen yöneticiler hem de çevrimiçi mağazaların müşterileri için gerekli tüm işlevselliği uygulamanıza ve kullanımının kolay olmasına izin vermelidir. Kendileri için doğru CMS'yi seçme sorusuyla karşı karşıya kalan birçok kişi ve şirket, analiz edin: Magento veya OkayCMS'yi seçin. Web siteleri için bu motorların özelliklerini ve yeteneklerini karşılaştıralım.

Kendi web sitenizde çalışırken, bir kişi veya şirket büyük çaba sarf etmek zorunda kalacaktır - yalnızca bu durumda, olumlu sonuçlara ve gerçekten etkili bir araç elde etmeye güvenebilirsiniz. Bir site oluşturmaya başlamadan önce çözülmesi gereken temel sorulardan biri, en uygun CMS seçeneğine nasıl karar vereceğiniz olacaktır. Ardından, iki CMS'yi karşılaştıracağız: Joomla veya OkayCMS, her birinin özelliklerine dikkat edin.

Kendi web sitenize sahip olmak, etkili ve başarılı bir iş için temel gereksinimlerden biridir. İstatistikler, İnternet üzerinden çeşitli mal ve hizmet siparişlerinin alımlarının sayısındaki artış lehine kesin olarak tanıklık ediyor. Bunu akılda tutarak, çoğu ticari şirket kendi web sitesine sahip olma ihtiyacının farkına varmaktadır. Ancak, bir İnternet kaynağının mevcudiyeti gerçeği, verimliliğine, karlılığına ve beklenen ticari faydalarına güvenmek için hala yeterli değildir.

Kendi web sitenizi oluşturmaya veya bir çevrimiçi mağaza açmaya hazırlanırken, birçok sorunu hesaba katmanız ve analiz etmeniz ve çeşitli sorunları çözmeniz gerekir. Ancak bu durumda projenizin olumlu sonuçlar getirmesini ve beklentileri tam olarak karşılayabilmesini bekleyebilirsiniz. Bir çevrimiçi mağazanın geliştirilmesiyle ilgili çeşitli konular arasında, bir CMS seçme konusu özel bir ilgiyi hak ediyor. İçerisinde kendiniz için en uygun motoru belirlemenizi kolaylaştırmak için

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