Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP - E-posta Gönderme

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,439
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,280
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 6 Gün
Başarım Puanı
1,051
MmoLira
695,092
DevLira
234
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

E-posta gönderme olanağı, tipik bir PHP destekli web uygulamasının genel olarak ihtiyaç duyduğu özelliklerden biridir. Kayıtlı kullanıcılarınıza bildirimler, güncellemeler ve diğer iletişimleri içeren e-postaları, farklı bir posta hizmeti yerine, PHP uygulamanız aracılığıyla göndermek istersiniz. Bu bölümde açıklanan teknikleri benimseyerek bu yeteneği PHP uygulamanıza ekleyebilirsiniz.

PHP'de e-posta göndermek için yerleşik bir mail() işlevi vardır. Ancak bunu yapabilmek için "php.ini" ayarlarını düzgün bir şekilde yapılandırmanız gerekir. Öncelikle kullandığınız web barındırma platformunun SMTP etki alanını bilmelisiniz. Örneğin, web siteniz GoDaddy barındırma hizmetinde barındırılıyorsa, yapılandırmada kullanmanız gereken SMTP etki alanı "smtp.secureserver.net"tir.

GoDaddy'nin Windows tabanlı barındırmasını kullanıyorsanız, php.ini dosyasında iki yönergenin etkinleştirildiğinden emin olmalısınız. İlki, e-posta sunucunuzun adresini tanımlayan SMTP olarak adlandırılır. İkincisi, kendi e-posta adresinizi tanımlayan sendmail_from olarak adlandırılır.

Windows için yapılandırma aşağıdaki gibi görünmelidir:


[mail function]
; For Win32 only.
SMTP = smtp.secureserver.net

; For win32 only
sendmail_from = webmaster@tutorialspoint.com

Linux kullanıcılarının tek yapması gereken PHP'ye sendmail uygulamalarının yerini bildirmektir. Yol ve istenilen anahtarlar sendmail_path yönergesine belirtilmelidir.

Linux için yapılandırma aşağıdaki gibi görünmelidir:

[mail function]
; For Win32 only.
SMTP =

; For win32 only
sendmail_from =

; For Unix only
sendmail_path = /usr/sbin/sendmail -t -i

PHP'deki mail() fonksiyonu, alıcının e-posta adresini, mesajın konusunu ve mesajın kendisini belirten üç zorunlu argümana ihtiyaç duyar; ayrıca iki isteğe bağlı parametre daha vardır.

mail( to, subject, message, headers, parameters );

Parametreler

  • − Gerekli . E-postanın alıcısını/alıcılarını belirtir
  • konu − Gerekli. E-postanın konusunu belirtir. Bu parametre herhangi bir yeni satır karakteri içeremez
  • mesaj − Gerekli. Gönderilecek mesajı tanımlar. Her satır LF (\n) ile ayrılmalıdır. Satırlar 70 karakteri geçmemelidir
  • başlıklar − İsteğe bağlı. From, Cc ve Bcc gibi ek başlıkları belirtir. Ek başlıklar CRLF (\r\n) ile ayrılmalıdır
  • parametreler − İsteğe bağlı. Posta gönderme programına ek bir parametre belirtir

mail() fonksiyonunun ilk argümanı olarak virgülle ayrılmış bir listede birden fazla alıcı belirtilebilir.


HTML E-posta Gönderme

PHP kullanarak bir metin mesajı gönderdiğinizde tüm içerik basit metin olarak ele alınacaktır. Bir metin mesajına HTML etiketleri ekleseniz bile, basit metin olarak gösterilecektir ve HTML etiketleri HTML sözdizimine göre biçimlendirilmeyecektir. Ancak PHP, bir HTML mesajını gerçek HTML mesajı olarak gönderme seçeneği sunar.

Bir e-posta mesajı gönderirken, bir HTML e-postası göndermek için bir Mime sürümü, içerik türü ve karakter seti belirtebilirsiniz.

Örnek

Aşağıdaki örnek, "xyz@somedomain.com" adresine bir HTML e-posta mesajının "afgh@somedomain.com" adresine kopyalanarak nasıl gönderileceğini gösterir. Bu programı, kullanıcıdan tüm içeriği alacak ve ardından bir e-posta gönderecek şekilde kodlayabilirsiniz.

Kullanıcıdan gelen tüm içerikleri alıp e-posta olarak göndermesi gerekir.

PHP:
<?php
   $to = "xyz@somedomain.com";
   $subject = "This is subject";

   $message = "<b>This is HTML message.</b>";
   $message .= "<h1>This is headline.</h1>";

   $header = "From:abc@somedomain.com \r\n";
   $header .= "Cc:afgh@somedomain.com \r\n";
   $header .= "MIME-Version: 1.0\r\n";
   $header .= "Content-type: text/html\r\n";

   $retval = mail ($to,$subject,$message,$header);

   if( $retval == true ) {
      echo "Message sent successfully...";
   }else {
      echo "Message could not be sent...";
   }
?>

Aşağıdaki çıktıyı üretecektir:

Message could not be sent...
sh: 1: /usr/sbin/sendmail: not found

Localhost'tan E-posta Gönderme

Yukarıdaki PHP mail() çağırma yöntemi localhost'unuzda çalışmayabilir. Bu durumda, e-posta göndermenin alternatif bir çözümü vardır. PHPMailer'ı localhost'tan SMTP kullanarak e-posta göndermek için kullanabilirsiniz.

PHPMailer, SMTP'yi e-posta göndermek için bağlamak üzere açık kaynaklı bir kütüphanedir. Bunu PEAR veya Composer depolarından indirebilir veya adresinden indirebilirsiniz. ZIP dosyasını buradan indirin ve PHPMailer klasörünün içeriğini PHP yapılandırmanızda belirtilen include_path dizinlerinden birine kopyalayın ve her sınıf dosyasını manuel olarak yükleyin.

Örnek

PHPMailer kütüphanesi ile e-posta göndermek için aşağıdaki PHP betiğini kullanın:

Phpmailer.php


PHP:
<?php
   use PHPMailer\PHPMailer\PHPMailer;
   use PHPMailer\PHPMailer\SMTP;
   use PHPMailer\PHPMailer\Exception;

   require_once __DIR__ . '/vendor/phpmailer/src/Exception.php';
   require_once __DIR__ . '/vendor/phpmailer/src/PHPMailer.php';
   require_once __DIR__ . '/vendor/phpmailer/src/SMTP.php'; 
   require 'vendor/autoload.php';

   $mail = new PHPMailer;
   if(isset($_POST['send'])){
  
      // getting post values
      $fname=$_POST['fname'];       
      $toemail=$_POST['toemail'];   
      $subject=$_POST['subject'];   
      $message=$_POST['message'];
      $mail->isSMTP();                          // Set mailer to use SMTP
      $mail->Host = 'smtp.gmail.com';             
      $mail->SMTPAuth = true;                     
      $mail->Username = 'myID@gmail.com';    // SMTP username
      $mail->Password = 'mypassword';         // SMTP password

      // Enable TLS encryption, 'ssl' also accepted
      $mail->SMTPSecure = 'tls';
      $mail->Port = 587;                         
      $mail->setFrom(myID@gmail.com', 'My_Name');
      $mail->addReplyTo(myID@gmail.com', 'My_Name');
      $mail->addAddress($toemail);         // Add a recipient
      $mail->isHTML(true);                // Set email format to HTML
      $bodyContent=$message;
      $mail->Subject =$subject;
      $body = 'Dear'.$fname;
      $body .='<p>'.$message.'</p>';
      $mail->Body = $body;

      if(!$mail->send()) {
         echo 'Message could not be sent.';
         echo 'Mailer Error: ' . $mail->ErrorInfo;
      } else {
         echo 'Message has been sent';
      }
   }
?>

Posta mesajını oluşturmak için aşağıdaki HTML formunu kullanın. Form yukarıdaki phpmail.php betiğine gönderilir.

E-posta.html

PHP:
<h1>PHP - Sending Email</h1>
<form action="PHPmailer.php" method="post">
   <label for="inputName">Name</label>
   <input type="text" id="inputName" name="fname" required>

   <label for="inputEmail">Email</label>
   <input type="email" id="inputEmail" name="toemail" required>

   <label for="inputSubject">Subject</label>
   <input type="text" id="inputSubject" name="subject" required>

   <label for="inputMessage">Message</label>
   <textarea id="inputMessage" name="message" rows="5" required></textarea>

   <button type="submit" name="send">Send</button>
</form>

E-posta ile Ekleri Gönderme

Karma içerikli bir e-posta göndermek için İçerik türü başlığını multipart/mixed olarak ayarlamalısınız. Daha sonra metin ve ek bölümleri sınırlar içinde belirtilebilir.

Bir sınır, e-postanın mesaj kısmında görünemeyecek benzersiz bir sayının ardından gelen iki tire ile başlatılır. Benzersiz bir sayı oluşturmak için 32 basamaklı bir onaltılık sayı oluşturmak üzere bir PHP işlevi md5() kullanılır. E-postanın son bölümünü belirten son sınır da iki tire ile bitmelidir.

Örnek

Aşağıdaki örneğe bir göz atın.

PHP:
<?php

   // request variables     
   $from = $_REQUEST["from"];
   $emaila = $_REQUEST["emaila"];
   $filea = $_REQUEST["filea"];

   if ($filea) {
      function mail_attachment ($from , $to, $subject, $message, $attachment){
         $fileatt = $attachment;         // Path to the file
         $fileatt_type = "application/octet-stream"; // File Type

         $start = strrpos($attachment, '/') == -1 ?
         strrpos($attachment, '//') : strrpos($attachment, '/')+1;

         // Filename that will be used for the file as the attachment
         $fileatt_name = substr($attachment, $start,
         strlen($attachment));

         $email_from = $from;         // Who the email is from
         $subject = "New Attachment Message";

         $email_subject =  $subject; // The Subject of the email
         $email_txt = $message;     // Message that the email has in it
         $email_to = $to;             // Who the email is to

         $headers = "From: ".$email_from;
         $file = fopen($fileatt,'rb');
         $data = fread($file,filesize($fileatt));
         fclose($file);

         $msg_txt="\n\n You have recieved a new attachment message from $from";
         $semi_rand = md5(time());
         $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
         $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . "
         boundary=\"{$mime_boundary}\"";

         $email_txt .= $msg_txt;

         $email_message .= "This is a multi-part message in MIME format.\n\n" .
         "--{$mime_boundary}\n" . "Content-Type:text/html;
         charset = \"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" .
         $email_txt . "\n\n";

         $data = chunk_split(base64_encode($data));

         $email_message .= "--{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" .
         " name = \"{$fileatt_name}\"\n" . //"Content-Disposition: attachment;\n" .
         //" filename = \"{$fileatt_name}\"\n" . "Content-Transfer-Encoding:
         "base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n";

         $ok = mail($email_to, $email_subject, $email_message, $headers);

         if($ok) {
            echo "File Sent Successfully.";
            // delete a file after attachment sent.
            unlink($attachment);
         } else {
            die("Sorry but the email could not be sent. Please go back and try again!");
         }
      }
      move_uploaded_file($_FILES["filea"]["tmp_name"],
      'temp/'.basename($_FILES['filea']['name']));

      mail_attachment("$from", "youremailaddress@gmail.com",
      "subject", "message", ("temp/".$_FILES["filea"]["name"]));
   }
?>
<html>
<head>
   <script language = "javascript" type = "text/javascript">
      function CheckData45() {
         with(document.filepost) {
            if(filea.value ! = "") {
               document.getElementById('one').innerText = "Attaching File ... Please Wait";
            }
         }
      }
   </script>
</head>
<body>
   <table width = "100%" height = "100%" border = "0"
      cellpadding = "0" cellspacing = "0">
      <tr>
         <td align = "center">
            <form name = "filepost" method = "post"
               action = "file.php" enctype = "multipart/form-data" id = "file">
               <table width = "300" border = "0" cellspacing = "0"
                  cellpadding = "0">
                  <tr valign = "bottom">
                     <td height = "20">Your Name:</td>
                  </tr>
                  <tr>
                     <td><input name = "from" type = "text" id = "from" size = "30"></td>
                  </tr>
                  <tr valign = "bottom">
                     <td height = "20">Your Email Address:</td>
                  </tr>
                  <tr>
                     <td class = "frmtxt2"><input name = "emaila" type = "text" id = "emaila" size = "30"></td>
                  </tr>
                  <tr>
                     <td height = "20" valign = "bottom">Attach File:</td>
                  </tr>
                  <tr valign = "bottom">
                     <td valign = "bottom"><input name = "filea" type = "file" id = "filea" size = "16"></td>
                  </tr>
                  <tr>
                     <td height = "40" valign = "middle">
                        <input name = "Reset2" type = "reset" id = "Reset2" value = "Reset">
                        <input name = "Submit2" type = "submit" value = "Submit" onClick = "return CheckData45()">
                     </td>
                  </tr>
               </table>
            </form>
            <center>
               <table width = "400">
                  <tr>
                     <td id = "one"></td>
                  </tr>
               </table>
            </center>
         </td>
      </tr>
   </table>
</body>
</html>

Aşağıdaki çıktıyı üretecektir:

php_sending_emails.jpg
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst