J2ME ile SMTP

#

Sal, 25 Ara 2007 04:24:40

 

Bu Blogumda  J2ME(Java 2 Micro Edition) ile nasıl SMTP servere baglanıp email Mesajı atabilecegimizi açıklamaya çalısacam.

 

J2ME ile SMTP Servere baglanabilmek için javax.microedition.io.Connector classını javax.microedition.io.StreamConnection class'ına cast ederek baglantı saglayacagız.

 

SMTP Server baglantımızı bu şekilde Kurabiliriz

 

StreamConnection connection;
connection = (StreamConnection)Connector.open("socket://" + "smtp.yourdomain.com" + ":25", Connector.READ_WRITE);

 

//SMTP Stream Connectionından DataInputStream ve DataOutputStream çekelim

 

DataOutputStream  out = c.openDataOutputStream();
DataInputStream in = c.openDataInputStream();

 

SMTP Server ile Baglantımız şu anda hazır halde bulunmaktadır  ve input ve utput için beklemektedir. Bundan Sonraki yapacagımız SMTP Protocolunü inceleyip protokol kurallarına uyarak Sockete yazıp ve Socket ten Responsalerı okumalıyız. Fakat bunu yapmadan önce birkaç tane Helper methodu yaratıp

 işmizi kolaylaştırmak lazım.

 

//Verilen Stringi DataOutputStream'ine yazar

private void write(DataoutputStream out, String s)throws java.io.IOException
{

      out.write(s.getBytes(
"utf-8"));
}

 

 //Birsonraki Line Feed'e Kadar Okur

 

private String readline(DataInputStream in)throws java.io.IOException {

    StringBuffer s = new StringBuffer();
   
int i;
   
while ((i=in.readUnsignedByte()) != -1 && (i != '\n')){
        s.append((
char) b);
    }

   
return new String(s);
}

 

 

//Bir Sonraki Input kommandına Kadar Okur ve Input kommandının bitmesi Server'ın input için Hazır olması demektir.
private void skipInput()throws java.io.IOException{
   
int avail;
   
while (in.available() != 0) {
        readResponse();

    }

}

 

Ve sıra Mesajımızı Gondermekte.

Connection Parametrelerinin connect() adlı bir  methodda bulundugunu farz edelim.

 

connect();
readResponse();

write(out,
"HELO pensioner.su\r\n");
skipInput();

write(out,
"MAIL FROM: <eren@domain.tls>\r\n");
readResponse();

write(out,
"RCPT TO: you@domain.tls\r\n");
readResponse();

write(
"DATA\r\n");
readResponse();

write(
"From: <eren@domain.tls>\r\n" +
 
"To: you@omin.tls\r\n" +
 
"Subject: My J2ME SMTP Blog \r\n" +
 
"Content-Type: text/plain;\r\n" +
 
"\tcharset=\"utf-8\"\r\n" +
 
"\r\nBu Bir Test Mesajıdır Lütfen panik yaratmayın.\r\n" +
 
"\r\n.\r\n"
  );

readResponse();
write(
"RSET\r\n");
write(
"QUIT\r\n");
skipInput();

 

 Uymanız gereken e önemli kurallardan biri Yeni Satırın CRLF (Carriage Return + Line Feed) şeklinde yer almasıdır.

 

CRLF  = "\r\n"
LF    = "\n"

 

 

 

 

 

1655 defa izlendi

Bu posta henüz yorum yazılmadı.





Uzerine.com  ©2005 Uzerine.com
Ana Sayfa | Bize Ulaşın | Gizlilik Sözleşmesi | Kullanım Şartları | Üye Girişi