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.

Kodu metin olarak indirmek için EmailSender.java den alabilirsiniz.

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;
}
}

Leave a Reply