Java-basierte Mailinglisten-Anwendung, die auf IMAP+SMTP aufsetzt, und damit (fast) jede Mailbox in eine Mailingliste verwandeln kann.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

104 lines
3.3 KiB

package de.srsoftware.widerhall.mail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;
import java.util.Properties;
public class SmtpClient {
private static final Logger LOG = LoggerFactory.getLogger(SmtpClient.class);
private static final String HOST = "mail.smtp.host";
private static final String PORT = "mail.smtp.port";
private static final String AUTH = "mail.smtp.auth";
private static final String SSL = "mail.smtp.ssl.enable";
private static final String UTF8 = "UTF-8";
private final String host,password,username;
private final int port;
private boolean forwardUsingListAddress = true;
private Session session;
public SmtpClient(String host, int port, String username, String password){
this.username = username;
this.password = password;
this.host = host;
this.port = port;
}
public void bccForward(String from, Message message, List<String> emails) throws MessagingException {
if (session == null) login();
MimeMessage forward = new MimeMessage(session);
forward.setFrom(from);
forward.setRecipients(Message.RecipientType.BCC,InternetAddress.parse(String.join(", ",emails)));
forward.setSubject(message.getSubject());
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(message.getDataHandler());
multipart.addBodyPart(messageBodyPart);
forward.setContent(multipart);
send(forward);
}
public SmtpClient login(){
if (session == null) {
Properties props = new Properties();
props.put(HOST, host);
props.put(PORT, port);
props.put(AUTH, true);
props.put(SSL, true);
session = Session.getInstance(props);
LOG.debug("Neue Session erzeugt: {}", session);
}
return this;
}
public void send(String senderAdress, String senderName, String receivers, String subject, String content) throws MessagingException, UnsupportedEncodingException {
MimeMessage message = new MimeMessage(session);
message.addHeader("Content-Type","text/plain; charset="+UTF8);
message.addHeader("format","flowed");
message.addHeader("Content-Transfer-Encoding","8bit");
message.setFrom(new InternetAddress(senderAdress,senderName));
message.setReplyTo(InternetAddress.parse(senderAdress,false));
message.setSubject(subject,UTF8);
message.setText(content,UTF8);
message.setSentDate(new Date());
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(receivers,false));
send(message);
}
public void send(Message message) throws MessagingException {
LOG.debug("Versende Mail…");
Transport.send(message,username,password);
LOG.debug("…versendet");
}
public String host() {
return host;
}
public int port() {
return port;
}
public String username() {
return username;
}
public String password() {
return password;
}
}