E-posta nasıl gönderilir? Codeateşleyici

⚡ Akıllı Özet

CodeIgniter ile e-posta gönderme, mesajları SMTP veya yerel posta sunucusu aracılığıyla iletmek için çerçevenin yerleşik E-posta kütüphanesine dayanır. Bu örnek, bir e-posta yapılandırma dosyası, bir iletişim formu görünümü ve form girişini okuyup mesajı gönderen bir denetleyici oluşturur.

  • ???? Dahili Kütüphane: E-posta kütüphanesi, minimum kodla e-posta gönderir ve SMTP, Sendmail ve PHP e-posta iletim protokollerini destekler.
  • ⚙️ Merkezi Yapılandırma: Özel bir email.php yapılandırma dosyası, protokolü, sunucuyu, bağlantı noktasını, kullanıcı adını ve şifreyi saklayarak ayarların tek bir yerde kalmasını sağlar.
  • 🔓 SMTP Kimlik Bilgileri: Geçerli smtp_host, smtp_user ve smtp_pass değerleri gereklidir; sahte parametreler asla gerçek bir e-posta göndermeyecektir.
  • 📝 Kontrolöre Gönderilecek Form: İletişim görünümü, alıcıyı, konuyu ve mesajı toplar; denetleyici ise bu bilgileri giriş kütüphanesiyle okur.
  • 📤 Gönderim Akışı: Denetleyici, gönderen, alıcı, konu ve mesajı ayarlar, ardından send() işlevini çağırır ve başarısızlık durumunda hata ayıklama raporu yazdırır.
  • 📎 HTML ve Dosyalar: Mailtype'ı html olarak değiştirip attach() yöntemini çağırarak dosya ekleriyle birlikte biçimlendirilmiş mesajlar gönderebilirsiniz.
  • 🤖 Yapay Zeka Yardımı: Yapay zeka araçları, e-posta denetleyicisini oluşturabilir, form girişini doğrulayabilir ve hata ayıklayıcı çıktısından SMTP bağlantı hatalarını teşhis edebilir.

CodeIgniter E-posta Gönderiyor

Web uygulamalarında e-posta çok önemlidir. Bir kullanıcı kaydolduğunda, e-posta adresini doğrulamak ve aboneliği onaylamasına olanak sağlamak için ona bir e-posta göndermek isteyebiliriz. Ayrıca unutulan şifreleri sıfırlamak ve müşterilere fatura ve makbuz göndermek için de e-posta kullanırız. CodeIgniter, uygulamamızdan çeşitli seçenekler kullanarak e-posta göndermeyi bizim için son derece kolaylaştırıyor.

CodeIgniter'ın e-posta gönderirken kullanabileceğimiz yerleşik bir e-posta kütüphanesi bulunmaktadır.

CodeIgniter E-posta Yapılandırması

E-posta ayarlarını yönetebileceğimiz merkezi bir yere ihtiyacımız var. CodeIgniter, e-postalar için bir yapılandırma dosyasıyla birlikte gelmiyor, bu nedenle kendimiz bir tane oluşturmamız gerekecek.

application/config dizininde email.php adlı bir dosya oluşturun

Aşağıdaki kodu email.php'ye ekleyin

<?php defined('BASEPATH') OR exit('No direct script access allowed');
 
$config = array(
'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp'
'smtp_host' => 'smtp.example.com',
'smtp_port' => 465,
'smtp_user' => 'no-reply@example.com',
'smtp_pass' => '12345!',
'smtp_crypto' => 'ssl', //can be 'ssl' or 'tls' for example
'mailtype' => 'text', //plaintext 'text' mails or 'html'
'smtp_timeout' => '4', //in seconds
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);

İŞTE,

  • 'protocol' => 'smtp', e-posta gönderirken kullanmak istediğiniz protokolü belirtir. Bu, şunlardan biri olabilir: Gmail SMTP ayarları veya sunucunuzdan alınan SMTP ayarları
  • 'smtp_host' => 'smtp.example.com' ifadesi, SMTP sunucusunu belirtir. Örneğin, kullanmak istiyorsanız... Gmail O zaman smtp.gmail.com gibi bir şeyiniz olurdu.
  • 'smtp_port' => 465, belirtilen SMTP sunucusunda SMTP posta için yapılandırılmış açık bir port.
  • 'smtp_user' => 'no-reply@example.com', e-posta gönderirken gönderici olarak kullanılacak e-posta adresi. Bu, sunucuda bulunan geçerli bir e-posta adresi olmalıdır
  • 'smtp_pass' => '12345!', belirtilen SMTP kullanıcı e-postasının parolası
  • 'smtp_crypto' => 'ssl', kullanılacak şifreleme yöntemini belirtir; örneğin SSL, TLS vb.
  • 'mailtype' => 'text', kullanılacak e-posta türünü belirler. Bu, ihtiyaçlarınıza bağlı olarak düz metin veya HTML olabilir.
  • 'smtp_timeout' => '4', ana bilgisayara bağlanmaya çalışırken zaman aşımı istisnası atılmadan önce geçmesi gereken süreyi saniye cinsinden belirtir.
  • 'charset' => 'iso-8859-1', e-posta gönderirken kullanılacak karakter setini tanımlar.
  • 'wordwrap' => TRUE, TRUE olarak ayarlanırsa kelime kaydırma etkinleştirilir. FALSE olarak ayarlanırsa kelime kaydırma etkinleştirilmez.

not: E-postaların işe yaraması için geçerli yapılandırma parametreleri sağlamalısınız. Sahte parametreler e-posta gönderemez.

CodeIgniter E-posta Görünümü

Bu bölümde e-postayı alıcıya gönderecek görünümü oluşturacağız.

Uygulama/görünümlerde yeni bir dizin e-postası oluşturun

application/views/email klasöründe contact.php adında yeni bir dosya oluşturun.

Aşağıdaki kodu application/views/email/contact.php dosyasına ekleyin

<!DOCTYPE html>
<html>
<head>
<title>CodeIgniter Send Email</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>
<h3>Use the form below to send email</h3>
<form method="post" action="<?=base_url(0)?>" enctype="multipart/form-data">
<input type="email" id="to" name="to" placeholder="Receiver Email">
<br><br>
<input type="text" id="subject" name="subject" placeholder="Subject">
<br><br>
<textarea rows="6" id="message" name="message" placeholder="Type your message here"></textarea>
<br><br>
<input type="submit" value="Send Email" />
</form>
</div>
</body>
</html>

İŞTE,

  • E-posta adresini, konuyu ve mesajı kabul eden ve ardından parametreleri e-posta yönlendirme yoluna ileten basit bir HTML formumuz var.

CodeIgniter E-posta Denetleyicisi

Şimdi e-posta gönderme işlemini yönetecek olan denetleyiciyi oluşturalım.

application/controllers/EmailController.php dosyasında yeni bir EmailController.php dosyası oluşturun

Aşağıdaki kodu EmailController.php'ye ekleyin

<?php
 
defined('BASEPATH') OR exit('No direct script access allowed');
 
class EmailController extends CI_Controller {
 
public function __construct() {
parent:: __construct();
 
$this->load->helper('url');
}
 
public function index() {
$this->load->view('email/contact');
}
 
function send() {
$this->load->config('email');
$this->load->library('email');
 
$from = $this->config->item('smtp_user');
$to = $this->input->post('to');
$subject = $this->input->post('subject');
$message = $this->input->post('message');
 
$this->email->set_newline("\r\n");
$this->email->from($from);
$this->email->to($to);
$this->email->subject($subject);
$this->email->message($message);
 
if ($this->email->send()) {
echo 'Your Email has successfully been sent.';
} else {
show_error($this->email->print_debugger());
}
}
}

İŞTE,

  • class EmailController extends CI_Controller {…} üst sınıftan miras alan e-posta denetleyicimizi tanımlar. CodeAteşleme kontrol ünitesi.
  • public function __construct() {…} ana yapıcı yöntemini çağıran alt yapıcıyı tanımlar.
  • public function index() {…} iletişim formunu görüntüleyen indeks yöntemini tanımlar
  • send() fonksiyonu {…} e-postayı gönderen yöntemi tanımlar
    • $this->load->config('email'); e-posta yapılandırma ayarlarını yükler
    • $this->load->library('email'); e-posta kitaplığını yükler
    • $from = $this->config->item('smtp_user'); tanımladığımız e-posta yapılandırma dosyasından gönderici kimliğini alır.
    • $to = $this->input->post('to'); gönderilen formdan to değerini alır
    • $subject = $this->input->post('subject'); formdan e-posta konusunu ayarlar.
    • $message = $this->input->post('message'); formdan e-posta mesajını ayarlar
    • $this->email->set_newline(“\r\n”); e-postalar için yeni satır karakterlerini tanımlar
    • $this->email->from($from); gönderenin e-posta adresini ayarlar
    • $this->email->to($to); alıcının e-posta adresini ayarlar
    • $this->email->subject($subject); e-posta konusunu ayarlar
    • $this->email->message($message); e-posta mesajını ayarlar
    • `$this->email->send())` kodu e-postayı göndermeye çalışır. E-posta başarıyla gönderilirse, "E-postanız başarıyla gönderildi" mesajı gösterilir; aksi takdirde, neyin yanlış gittiğine dair hata ayıklama bilgileri yazdırılır.

Şimdi e-posta rotalarını tanımlayalım.

E-posta Rotaları

Aşağıdaki rotaları application/config/routes.php'ye ekleyin

$route['send-email'] = 'EmailController';
$route['email'] = 'EmailController/send';

Artık iletişim formunu web tarayıcısında yükleyebiliriz.

Dahili PHP sunucusunu başlatalım.

Terminali veya komut satırını açın ve uygulamanızın kök dizinine gidin. Benim durumumda, kök dizin C:\Sites\ci-app sürücüsünde bulunuyor.

cd C:\Sites\ci-app

Sunucuyu aşağıdaki komutu kullanarak başlatın.

php -S localhost:3000

Aşağıdakileri yükleyin URL Web tarayıcınızda: http://localhost:3000/send-email

Aşağıdaki formu görebilmelisiniz

E-posta Rotaları

Alıcı e-posta adresini, konuyu ve e-posta mesajını girin, ardından E-posta Gönder'e tıklayın. E-posta ayarlarınız doğru yapılmışsa, başarı mesajını görmelisiniz.

HTML E-postaları ve Ekleri Nasıl Gönderilir? Codeateşleyici

Aynı e-posta kütüphanesi, zengin formatlı mesajlar ve dosyalar gönderebilir. İki küçük değişiklik, yukarıdaki düz metin örneğini ekli bir HTML e-postaya dönüştürür.

$this->email->set_mailtype('html');
$this->email->message('<h3>Welcome</h3><p>Thanks for joining us.</p>');
$this->email->attach('/path/to/report.pdf');
  • set_mailtype('html'): Bu komut, kütüphaneye e-postanın içeriğinin HTML içerdiğini bildirir; böylece başlıklar ve bağlantılar gibi etiketler alıcının gelen kutusunda görüntülenir.
  • eklemek(): Sunucu yolundan bir dosyayı mesaja ekler; send() işleminden önce her dosya için bir kez çağırın.

HTML e-postaların yine de düz metin alternatifi içermesi gerektiğini ve büyük eklerin katı kurallara sahip posta sunucuları tarafından reddedilebileceğini unutmayın.

SSS

Localhost'ta genellikle posta sunucusu bulunmadığından, posta protokolü sessizce başarısız olur. Protokolü SMTP'ye geçirin ve gerçek bir SMTP sunucusu, kullanıcı adı ve şifresi sağlayın veya aşağıdaki gibi bir hizmet kullanın: MailYerel test için tuzak.

smtp_host'u smtp.gmail.com, smtp_port'u ssl ile 465 ve smtp_user'ı kendi kullanıcı adınızla ayarlayın. Gmail adres. Kullanın Google Uygulama şifresi, normal şifreniz yerine, çünkü Gmail Temel parola girişlerini engeller.

E-posta protokolü, PHP'nin mail() fonksiyonunu kullanır, sendmail sunucunun yerel ikili dosyasını çağırır ve smtp kimlik bilgileriyle harici bir e-posta sunucusuna bağlanır. SMTP, teslimat ve kimlik doğrulama açısından en güvenilir olanıdır.

Evet. Yapay zeka, denetleyiciyi oluşturabilir, alıcı ve konu için form doğrulamasını ekleyebilir ve başarı ve hata yönetimini dahil edebilir. RevÜretim ortamında kullanmadan önce SMTP ayarlarını inceleyin ve hız sınırlaması ekleyin.

Evet. print_debugger() çıktısını yapıştırın, yapay zeka SMTP el sıkışma hatalarını, kimlik doğrulama hatalarını veya port sorunlarını yorumlayabilir ve denenecek düzeltilmiş host, port veya şifreleme değerlerini önerebilir.

Bu yazıyı şu şekilde özetleyin: