Yeni Cevap 
 
Konuyu Değerlendir
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Php smtp türkçe karakter destekli mail gönderme işlemi
Yazar Mesaj
duzgun Çevrimdışı
Hizmetinizde
*******

Mesajlar: 2,323
Katılım: Jul 2008
Rep Puanı: 17
Mesaj: #1
Php smtp türkçe karakter destekli mail gönderme işlemi
Smtp sunucuya fsockopen ile bağlantı kurup header denilen kodlar ve karşılıkları fputs ile sırayla gönderilir. Karakter setinin türkçe olduğu ise mesaj gönderilen kişinin adı, gönderen kişinin adı ve konu için ' =?ISO-8859-9?B?'. base64_encode($string) ."?=";
şeklinde mesaj içeriğinin türkçe karakter olduğunu belirtmek için ise
"Content-Type: text/html; charset=\"ISO-8859-9\";\r\n";
şeklinde header e bilgi yazılır. Bu şekilde mail gönderildiğinde karakter problemleri yaşanmayacaktır.


PHP Kod:
<?php
class SMTPClient
{
function 
SMTPClient ($from$fromname$to$toname$subject$body)
{
$this->SmtpServer ""// localhost
$this->SmtpServerEhlo ""// your domain name
$SmtpPort "25";
$this->SmtpUser "";
$this->SmtpPass "";
$this->SmtpAuth false;
$this->from $from;
$this->fromname $fromname;
$this->to $to;
$this->toname $toname;
$this->subject $subject;
$this->body $body;
if (
$SmtpPort == "")
{
$this->PortSMTP 25;
}else{
$this->PortSMTP $SmtpPort;
}
}

function 
SendMail ()
{
if(
$this->valid_email($this->to) && $this->valid_email($this->from)){
if (
$SMTPIN fsockopen ($this->SmtpServer$this->PortSMTP)) 
{
           
fputs ($SMTPIN"EHLO ".$this->SmtpServerEhlo."\r\n");  
$talk["hello"] = fgets $SMTPIN1024 );

if(
$this->SmtpAuth){      
fputs($SMTPIN"auth login\r\n");
$talk["res"]=fgets($SMTPIN,1024);
fputs($SMTPIN$this->SmtpUser."\r\n");
$talk["user"]=fgets($SMTPIN,1024);
fputs($SMTPIN$this->SmtpPass."\r\n");
$talk["pass"]=fgets($SMTPIN,256);
}

fputs ($SMTPIN"MAIL FROM: <".$this->from.">\r\n");  
$talk["From"] = fgets $SMTPIN1024 );  
fputs ($SMTPIN"RCPT TO: <".$this->to.">\r\n");  
$talk["To"] = fgets ($SMTPIN1024); 

fputs($SMTPIN"DATA\r\n");
$talk["data"]=fgets$SMTPIN,1024 );
           
$msg  "To: ".$this->mime_header_encode($this->toname)."<".$this->to.">\r\n";
$msg .= "Mime-Version: 1.0;\r\n";
$msg .= "X-Mailer: PHP\r\n";
$msg .= "X-Sender: PHP\r\n";
$msg .= "Importance: High\r\n";
$msg .= "Content-Type: text/html; charset=\"ISO-8859-9\";\r\n";
$msg .= "Content-Transfer-Encoding: 7bit;\r\n";
$msg .= "From: ".$this->mime_header_encode($this->fromname)." <".$this->from.">\r\n";
$msg .= "Subject: ".$this->mime_header_encode($this->subject)."\r\n\r\n\r\n";
$msg .= $this->body."\r\n.\r\n";

fputs($SMTPIN$msg);
$talk["send"]=fgets($SMTPIN,256);
           
fputs ($SMTPIN"QUIT\r\n");  
fclose($SMTPIN);

$talk["error"] = ""
}
else
{
$talk["error"] = "Not Connect";
}
}
else
{
$talk["error"] = $this->to." Email invalid";
}
return 
$talk
}

function 
valid_email($str)
{    
return (
preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/i"$str)) ? true false;
}

function 
truncate_utf8($string$len$wordsafe FALSE$dots FALSE) {
$slen strlen($string);
if (
$slen <= $len) {
return 
$string;
}
if (
$wordsafe) {
$end $len;
while ((
$string[--$len] != ' ') && ($len 0)) {};
if (
$len == 0) {
$len $end;
}
}
if ((
ord($string[$len]) < 0x80) || (ord($string[$len]) >= 0xC0)) {
return 
substr($string0$len) . ($dots ' ...' '');
}
while (--
$len >= && ord($string[$len]) >= 0x80 && ord($string[$len]) < 0xC0) {};
return 
substr($string0$len) . ($dots ' ...' '');
}

function 
mime_header_encode($string$split true$charset ="ISO-8859-9") { //iso-8859-9
if (preg_match('/[^\x20-\x7E]/'$string)) {
if (!
$split)
return 
' =?'.$charset.'?B?'base64_encode($string) ."?=";
$chunk_size floor((75 strlen("=?".$charset."?B??=")) * 0.75);
$len strlen($string);
$output '';
while (
$len 0) {
$chunk $this->truncate_utf8($string$chunk_size);
$output .= ' =?'$charset.'?B?'base64_encode($chunk) ."?=\n";
$c strlen($chunk);
$string substr($string$c);
$len -= $c;
}
return 
trim($output);
}
return 
$string;
}
}

if(
$_SERVER["REQUEST_METHOD"] == "POST")
{

$toname "Mesaj gönderilen kişinin adı";
$to "deneme@deneme.com";
$fromname $_POST['fromname'];
$from $_POST['from'];
$subject $_POST['sub'];
$body $_POST['message']."\n\nIP Adresi:".$_SERVER['REMOTE_ADDR'];
$SMTPMail = new SMTPClient ($from$fromname$to$toname$subject$body);
$SMTPChat $SMTPMail->SendMail();

if(
$SMTPChat["error"]=="")
echo 
"mesaj gönderildi";
else
echo 
"bilgileriniz eksik. mesaj gönderilemedi.";

exit;
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<title>Untitled Document</title>
</head>

<body>
<form method="post" action="">
<table width="500px">
<tr>
<td width="20%">Ad, Soyad : </td>
<td ><input type="text" name="fromname" id="fromname" /></td></tr>
<tr>
  <td>Email :</td><td><input type='text' name="from" /></td></tr>
<tr>
  <td>Konu :</td><td><input type='text' name="sub" /></td></tr>
<tr>
  <td>Mesaj&yacute;n&yacute;z :</td><td><textarea name="message" cols="50" rows="5"></textarea></td></tr>
<tr><td></td><td><input type="submit" value=" Send " /></td></tr>
</table>
</form>
</body>
</html> 
05-11-2010 22:23
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
ayseguul Çevrimdışı
Junior Member
**

Mesajlar: 1
Katılım: Jun 2014
Rep Puanı: 0
Mesaj: #2
RE: Php smtp türkçe karakter destekli mail gönderme işlemi
(En son düzenleme: 27-06-2014 16:32 ayseguul.)
27-06-2014 16:28
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı alıntı yap
Yeni Cevap 


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Karakter Lisan(Dil) Dönüşümleri duzgun 2 2,778 04-08-2011 15:02
Son Mesaj: yasingencpro
  php usort ile türkçe karaktere duyarlı sıralama yöntemi duzgun 1 4,680 07-08-2010 09:51
Son Mesaj: EA-Network

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi