Yazan : Şadi Evren ŞEKER
MIME , internet üzerinde kullanılan bir posta (mail) protokolüdür (protocol , teşrifat). Kelime anlamı olarak multi purpose internet mail extenstions (mime, çok amaçlı internet posta uzantıları) kelimelerinin baş harflerinden oluşmaktadır.
Yapı olarak açık ve ASCII karakter kodları ile çalışan protokolde istenirse ASCII olmayan posta ekleri, veya mesaj içerikleri de yollanabilir.SMTP ile yakın ilişkisinden dolayı çoğu yerde SMTP/MIME tabiri de kullanılmaktadır.
Örneğin aşağıda bir örnek MIME mesajının içeriği verilmiştir:
From: Sadi Evren SEKER <sadi@bilgisayarkavramlari.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="XXXXKESME" Ornek bir mime postasinin basligi. --XXXXKESME Content-Type: text/plain Postanin icerigi. --XXXXKESME Content-Type: text/plain; Content-Disposition: attachment; filename="ilave.txt" Posta ile gelecek olan ilave.txt dosyasinin icerigi. --XXXXKESME--
Yukarıdaki mesaj örneğinde görüleceği üzere MIME protokolü ile yollanan bir mesajda çeşitli bölümler bulunmaktadır. Bunlar şöyle sıralanabilir:
Başlık bölümü (header) bu bölümde MIME sürümü (version) ve içerik bilgileri yollanır. Ayrıca mesajın konu kısmı buradadır. Dikkat edilirse başlık kısmında verilen boundary = “” bilgisi mesaj içinde tekrarlanmaktadır. Bu bilgi mesajdaki bölümleri birbirinden ayırmak için kullanılan yazıdır. Tercihen mesajın içerisinde geçmeyecek bir yazı olmalıdır.
Mesajın içeriği bölümü. Bu bölüm, ilk kesmeden sonra başlar ve ikinci kesmeye kadar sürer. Basitçe postamızda yazıların bulunduğu ana bölümdür ve postanın içeriğini belirler.
Ekler bölmü. Bu bölüm 2. kesme ile başlar ve 3. kesmeye kadar devam eder. Burada postanın ekleri yer alır. Birden fazla ek varsa bu kesme sayısı arttırılarak her dosya eki için bir yeni alan açılır. Nihayet son kesme ile MIME protokolündeki posta sona erdirilir.
Bu yazı şadi evren şeker tarafından yazılmış ve bilgisayarkavramlari.com sitesinde yayınlanmıştır. Bu içeriğin kopyalanması veya farklı bir sitede yayınlanması hırsızlıktır ve telif hakları yasası gereği suçtur.
JAVA ile MIME programlama
JAVA dilinde MIME prtokolü için hazır olarak bulunan java.mail. sınıfı bulunmaktadır. Bu sınıfı kullanarak hızlı bir şekilde e-posta oluşturmak ve yollamak mümkündür.
Bu işlem için öncelike J2EE içerisinde de yer alan JavaMail paketinin indirilerek kurulması gerekir. Paketin son sürümüne http://java.sun.com/products/javamail/downloads/index.html adresinden erişebilirsiniz.
İlgili paket indirildikten ve kurulduktan sonra aşağıdaki kod çalıştırılabilir ve SMTP sunucu üzerinden mail yollanması mümkün hale gelir. Elbette postanın yollanması için bir SMTP sunucunun kurulu olması veya internet üzerindeki herhangi bir SMTP sunucuda hesabımızın olması gerekiyor:
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.smtp.SMTPTransport;
public class MIMEDeneme {
private Transport tr;
private Message msg;
private Session sn;
public void setMessage(String fromAddress,String toAddress,
String subject,String content) throws Exception {
String[] addresses = {toAddress};
setMessage(fromAddress,addresses,subject,content);
}
public void setMessage(String fromAddress,String[] toAddresses,
String subject,String content) throws Exception {
sn = Session.getInstance(System.getProperties());
msg = new MimeMessage(sn);
msg.setFrom(new InternetAddress(fromAddress));
InternetAddress[] toIntAdds = new InternetAddress[toAddresses.length];
for (int i=0;i<toAddresses.length;i++)
toIntAdds[i] = new InternetAddress(toAddresses[i]);
msg.setRecipients(Message.RecipientType.TO,toIntAdds);
msg.setSubject(subject);
msg.setSentDate(new java.util.Date());
msg.setText(content);
}
public void setSMTPServer(String host,int port,
String user,String password) throws Exception{
tr = new SMTPTransport(sn,new URLName(host));
tr.connect(host,port,null,null);
}
public void send() throws Exception{
msg.saveChanges();
tr.sendMessage(msg, msg.getAllRecipients());
tr.close();
}
public static void main(String[] args) throws Exception{
MIMEDeneme tms = new MIMEDeneme();
tms.setMessage(“sadi@bilgisayarkavramlari.com”,
new String[]{“test@bilgisayarkavramlari.com”,”test@sadievrenseker.com”},”Deneme Postasi”,”MIME ile mektup yollama denemesidir ” +
“içerik kısmını yazıyoruz”);
tms.setSMTPServer(“localhost”,25,null,null); //smtp sunucunun adresi,port numarasi,kullanici,şifre
tms.send();
}
}