2 Temmuz 2008 Çarşamba

Java : HTML e-posta atarken, içine resim nasıl eklenir ?

Java : HTML e-posta atarken, içine resim nasıl eklenir ?

Java ile e-posta atmak çok basit bir işlem ancak, işin içine HTML ve resim olunca işler biraz değişiyor. Aşağıdaki örnekde nasıl olduğunu görebilirsiniz.

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;

public class EmailSender {

String username = ""; // e-mail server username ile değişecek
String password = ""; // e-mail server password ile değişecek

private class SMTPAuthenticator extends javax.mail.Authenticator {

public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}

}

public static void main(String[] args) {

EmailSender emailSender = new EmailSender();

Properties props = System.getProperties();
SMTPAuthenticator authenticator = emailSender.new SMTPAuthenticator();

props.put("mail.smtp.host", "email server"); // E-posta sunucusunun
// adresi ile değişecek
props.put("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props, authenticator);

MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress("from")); // gönderen adresi
// ile
// değiştirilecek

message.addRecipient(Message.RecipientType.TO, new InternetAddress("TO")); // alıcı
// adresi
// ile
// değiştirilecek
message.setSubject("subject"); // Konu ile değiştirilecek

message.setSentDate(new Date());

message.setContent(emailSender.prepareHTMLMailWithImage());

Transport.send(message);

} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private Multipart prepareHTMLMailWithImage() throws MessagingException, URISyntaxException {

Multipart multipart = new MimeMultipart("alternative"); // Hazırladığımız HTML i kabul etmeyen client için ek olarak plaintext gönderiyoruz

MimeBodyPart mimeBodyPartPlain = new MimeBodyPart();

// Düz metin
String mailText = "Message text";

mimeBodyPartPlain.setDataHandler(new DataHandler(mailText, "text/plain; charset=UTF-8 "));
multipart.addBodyPart(mimeBodyPartPlain);
// Düz metin sonu

MimeBodyPart mimeBodyPartHtml = new MimeBodyPart();
String mailHtml = "HTML H1 HTML Message Text/H1 img src=cid:1@deneme align=\"right\" width=100 height=35/HTML";

mimeBodyPartHtml.setContent(mailHtml, "text/html; charset=UTF-8 ");

MimeBodyPart mimeBodyPartImage = new MimeBodyPart();
URL url = this.getClass().getResource("/img/your.jpg"); // com ile aynı düzeyde olacak bir dizin
try {
mimeBodyPartImage.setDataHandler(new DataHandler(new ByteArrayDataSource(url.openStream(), "image/jpg")));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

mimeBodyPartImage.setHeader("Content-ID", "<1@deneme>");

multipart.addBodyPart(mimeBodyPartHtml);
multipart.addBodyPart(mimeBodyPartImage);

return multipart;

}
}

Hiç yorum yok: