Bu Sayfayı Paylaş:

Kavram

JavaMail API

Tanım: Java'da, mail gönderme, mail alma, mail ile dosya gönderme , mime data oluşturma gibi işlevleri olan bir API. 6. versiyonundan sonra , kullanımı için JavaBeans Activation Framework (JAF) kütüphanesi de gerekmektedir.

Kavram

JavaBeans Activation Framework - JAF

Tanım: Java'da MIME data (MIME veri tipleri) ile ilgili yardımcı sınıfların bulunduğu kütüphane. JavaMail API de bu kütüphaneyi gerektirmektedir

Kavram

MimeMessage

Tanım: JavaMail API'de MIME (Multipurpose Internet Mail Extensions) mesajı oluşturmak için kullanılan sınıf

Kavram

MimePart

Tanım: JavaMail API'de, MIME (Multipurpose Internet Mail Extensions) standartlarında Entity kavramını modelleyen interface

Kavram

MimeBodyPart

Tanım: JavaMail API'de , MIME (Multipurpose Internet Mail Extensions) mesajı oluşturmak için kullanılan içerik bölümü (body part)

Kavram

MimeMultipart

Tanım: JavaMail API'de , MIME (Multipurpose Internet Mail Extensions) standartlarına uygun, birden fazla bölümden oluşan MimeMessage oluşturmak için kullanılan, Part interface'sini sağlayan bir sınıf. Çeşitli DataSource'lar (smil, png, jpg, amr gibi farklı tipde dosya) yaratılıp, MimeMessage sınıfını oluşturmak için kullanılmaktasdır.

İpucu

Java'da Google App E-Mail Hesabından Mail Gönderilmesi

Google App'ta mail hesabınız var ise aşağıdaki gibi mail gönderebilirsiniz :
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import com.sun.mail.smtp.*;
public class MailSender {
	public void sendMail(String address,String subject,String body){
			
	   Properties props = new Properties();
	   props.put("host", "smtp.gmail.com");
	   props.put("mail.smtp.port", "587");
	   props.put("mail.smtp.auth", "true");
	   Session session = Session.getDefaultInstance(props, null);
	   try {
		Message msg = new MimeMessage(session);
		msg.setFrom(new InternetAddress("x@x.com"));
			msg.addRecipient(Message.RecipientType.TO, 
		 new InternetAddress(address));
			msg.setSubject(subject);
			msg.setContent(body, "text/html");            
			SMTPTransport t = (SMTPTransport)session.getTransport("smtp");
			 t.setStartTLS(true);
			 t.connect("smtp.gmail.com", "username", "password");
			 t.sendMessage(msg, msg.getAllRecipients());
			 t.close();
		} catch (AddressException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		 }        
	}
	public static void main(String[] args) {         
			MailSender ms=new MailSender();
			ms.sendMail("test@gmail.com","Test 2", 
		"Test Maili");
	}        
}

Örnek

MMS Göndermek İçin Bir MimeMessage Yaratılma Örneği

MMS, SMIL dili kullanılarak MIME formatı ile GSM operatörleri üzerinden gönderilebilmektedir. Bunun için SMIL ve diğer resim, ses dosyalarından bir MIME mesajı oluşturmanız gerekir. Aşağıda bir MIME mesajı oluşturan bir örnek görülmektedir:
import java.io.*;
import java.util.*;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;
public class MimeMessageGenerator {
	private File smil;
	private File[] files;	
	public MimeMessageGenerator(File smil,File[] files) {
		this.smil=smil;
		this.files=files;
	}	
	public MimeMessage generate() 
				throws MessagingException, IOException{
		Session session = Session.getDefaultInstance(new Properties());
		MimeMessage mimemessage = new MimeMessage(session);
		
		setDefaultMimetypesFileTypeMap();
		
		MimeMultipart mimeMultipart = new MimeMultipart("related");
		MimeBodyPart smilMimeBodyPart=createPart(smil);
		
		mimeMultipart.addBodyPart(smilMimeBodyPart);
		
		if(files!=null){
			for (File file : files) {
				MimeBodyPart fileMimeBodyPart=createPart(file);			
				mimeMultipart.addBodyPart(fileMimeBodyPart);
			}
		}		
		mimemessage.setContent(mimeMultipart);
		
		return mimemessage;
	}
	public String generateString() throws MessagingException, IOException {		
		MimeMessage mimeMessage=generate();
		
		ByteArrayOutputStream bais = new ByteArrayOutputStream();
		mimeMessage.writeTo(bais);
		
		byte[] arr = bais.toByteArray();
		
		StringBuffer mimeData = new StringBuffer();		
		for (int i = 0; i < arr.length; i++) {
			mimeData.append((char) arr[i]);
		}
		return mimeData.toString();		
	}	
	
	private MimeBodyPart createPart(File f) throws MessagingException{
		MimeBodyPart mimeBodyPart = new MimeBodyPart();
		
		FileDataSource ds = new FileDataSource(f);		
				
		DataHandler dh = new DataHandler(ds);
<br/>
		mimeBodyPart.setDataHandler(dh);
		mimeBodyPart.setFileName(f.getName());
		String cid = mimeBodyPart.getContentID();
		if (cid == null) {
			cid = mimeBodyPart.getFileName();
			mimeBodyPart.setHeader("Content-ID", '<' + cid + '>');
		}		
		return mimeBodyPart;
	}	
	private void setDefaultMimetypesFileTypeMap(){		
		MimetypesFileTypeMap map = new MimetypesFileTypeMap();		
		map.addMimeTypes("application/smil smil SMIL");
		FileTypeMap.setDefaultFileTypeMap(map);		
	}
MimeMessageGenerator sınıfı, bir smil dosyası ve eğer gerekiyorsa diğer dosya listesini (ses, txt, resim vb..) kurucuda almaktadır. generate methodu çağrıldığında MimeMessage nesnesi alınacaktır. Eğer String olarak isteniyorsa generateString kullanılabilir. setDefaultMimetypesFileTypeMap fonkisyonu smil içerik tipini tanıması için eklenmiştir.
createPart methodu bir dosyadan, MimeMessage'a eklenebilecek şekilde bir MimeBodyPart yaratmaktadır. Her dosya için (smil ve diğer dosya tipleri) MimeBodyPart yaratılacak ve MimeMultipart'a eklenecektir. MimeMultipart'da en son MimeMessage sınıfına verilecektir




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir