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.
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"); } }