- 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
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:
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:
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() fonksiyonunun ilk argümanı olarak virgülle ayrılmış bir listede birden fazla alıcı belirtilebilir.
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.
Kullanıcıdan gelen tüm içerikleri alıp e-posta olarak göndermesi gerekir.
Aşağıdaki çıktıyı üretecektir:
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
Posta mesajını oluşturmak için aşağıdaki HTML formunu kullanın. Form yukarıdaki phpmail.php betiğine gönderilir.
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.
Aşağıdaki çıktıyı üretecektir:
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
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
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:

