Java WebMail Kullanımı
19-08-2021ConcreteMail mail = new ConcreteMail("host", "username", "password"); mail.setPort(25); mail.setFrom("username@blabla.com"); mail.setSubject("Konu"); mail.setContent("Başlık"); mail.send(email);
import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Transport; import java.util.Properties; /** * Created by myuce on 25.01.2016. */ public class ConcreteMail extends Mail { private String host; private String toError; public TelifMail(String host, String username, String password) { super(host, username, password); this.host = host; } @Override protected void extraProperties(Properties properties) { properties.put("mail.smtp.ssl.trust", host); } /** * When application error occurred, send mails to toError * @param toError */ public void setToError(String toError) { this.toError = toError; } public String getToError() { return toError; } }
import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Properties; /** * Created by myuce on 25.01.2016. */ public abstract class Mail { private final String username; private final String password; private String host; private int port = 25; private String subject; private String content; private List<File> fileList = new ArrayList<File>(); private String text; private String from; public Mail(String host, String username, String password) { this.host = host; this.username = username; this.password = password; } public void send(String to) throws MessagingException { send(from, to); } public void send(String from, String to) throws MessagingException { this.from = from; MimeMessage message = createMessage(); message.setSubject(getSubject(), "utf-8"); message.setContent(createMultipart()); if (this.from == null) throw new IllegalArgumentException("Lutfen setFrom() metodunu cagirarak from field'i belirtiniz"); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); Transport.send(message); } protected MimeMessage createMessage() { return new MimeMessage(createSession(username, password)); } private Session createSession(String username, String password) { return Session.getInstance(initDefaultProperties(), new CustomAuthenticator(username, password)); } private Properties initDefaultProperties() { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.port", port); extraProperties(props); return props; } protected abstract void extraProperties(Properties properties); private Multipart createMultipart() throws MessagingException { Multipart result = new MimeMultipart(); if (content != null) result.addBodyPart(createHtmlBodyPart()); if (text != null) result.addBodyPart(createTextBodyPart()); for (File file : fileList) result.addBodyPart(createFileBodyPart(file)); return result; } private MimeBodyPart createHtmlBodyPart() throws MessagingException { MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent(content, "text/html; charset=utf-8"); return htmlPart; } private MimeBodyPart createTextBodyPart() throws MessagingException { MimeBodyPart textPart = new MimeBodyPart(); textPart.setContent(text, "text/plain; charset=utf-8"); return textPart; } private BodyPart createFileBodyPart(File file) throws MessagingException { DataSource source = new FileDataSource(file.getPath()); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(file.getName()); return messageBodyPart; } public void addAttachment(File file) { fileList.add(file); } public void addAttachments(List<File> files) { fileList.addAll(files); } public void setPort(int port) { this.port = port; } public void setSubject(String subject) { this.subject = subject; } public String getSubject() { return subject; } public void setContent(String content) { this.content = content; } public Object getContent() { return content; } public int getPort() { return port; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } private class CustomAuthenticator extends Authenticator { private String username; private String password; public CustomAuthenticator(String username, String password) { this.username = username; this.password = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } } }