Announcement

Collapse
No announcement yet.

Beispiele zur JavaMail API

Collapse
This is a sticky topic.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Beispiele zur JavaMail API

    Die JavaMail API gibt es hier

    Code:
    import java.io.File;
    import java.util.Date;
    import java.util.List;
    import java.util.Properties;
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.BodyPart;
    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.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    
    /**
    * Klasse zum versenden einer eMail mit/ohne Attachment
    */
    public class SendEMail
    {
    private String server;
    private String username;
    private String passwort;
    private String port="25";
    private boolean authentication=true;
    private String error="";
    
    /**
    * Konstruktor
    */
    public SendEMail()
    {
    }
    
    public boolean isAuthentication()
    {
    return authentication;
    }
    
    public void setAuthentication(boolean authentication)
    {
    this.authentication=authentication;
    }
    
    public String getPasswort()
    {
    return passwort;
    }
    
    public void setPasswort(String passwort)
    {
    this.passwort=passwort;
    }
    
    public String getPort()
    {
    return port;
    }
    
    public void setPort(String port)
    {
    this.port=port;
    }
    
    public String getServer()
    {
    return server;
    }
    
    public void setServer(String server)
    {
    this.server=server;
    }
    
    public String getUsername()
    {
    return username;
    }
    
    public void setUsername(String username)
    {
    this.username=username;
    }
    
    public String getError()
    {
    return error;
    }
    
    /**
    *
    * @param absender eMailadresse des Absenders
    * @param recipients eMailadressen des Empfänger getrennt durch , oder ;
    * @param subject Subjekt (Betreffzeile)
    * @param body Text der Mail
    * @return
    */
    public boolean SendeMail(String absender,String recipients,String subject,String body)
    {
    return SendeMail(absender,recipients,subject,body,null);
    }
    
    /**
    *
    * @param absender eMailadresse des Absenders
    * @param recipients eMailadressen des Empfänger getrennt durch , oder ;
    * @param subject Subjekt (Betreffzeile)
    * @param body Text der Mail
    * @param dateien Liste der Anhänge
    * @return
    */
    public boolean SendeMail(String absender,String recipients,String subject,String body,List<File> dateien)
    {
    try
    {
    error="";
    Properties prop=System.getProperties();
    prop.put("mail.transport.protocol","smtp");
    prop.put("mail.smtp.auth",String.valueOf(authentic ation));
    prop.put("mail.smtp.host",server);
    prop.put("mail.smtp.port",port);
    prop.put("mail.user",username);
    prop.put("mail.password",passwort);
    //prop.put("mail.debug","true");
    javax.mail.Session ses1;
    if(authentication)
    {
    javax.mail.Authenticator auth=new javax.mail.Authenticator()
    {
    @Override
    public PasswordAuthentication getPasswordAuthentication()
    {
    return new PasswordAuthentication(username,passwort);
    }
    
    };
    ses1=Session.getInstance(prop,auth);
    }
    else
    {
    ses1=Session.getInstance(prop);
    }
    MimeMessage msg=new MimeMessage(ses1);
    msg.setFrom(new InternetAddress(absender));
    String[] rec=recipients.split("[;,]");
    for(String adr:rec)
    {
    msg.addRecipients(Message.RecipientType.TO,adr);
    }
    msg.setSubject(subject);
    Multipart multipart=new MimeMultipart();
    BodyPart messagepart=new MimeBodyPart();
    messagepart.setText(body);
    multipart.addBodyPart(messagepart);
    if(dateien!=null)
    {
    for(File datei:dateien)
    {
    if(datei.exists())
    {
    MimeBodyPart attachmentpart=new MimeBodyPart();
    FileDataSource fd=new FileDataSource(datei)
    {
    @Override
    public String getContentType()
    {
    return "application/octet-stream";
    }
    
    };
    attachmentpart.setDataHandler(new DataHandler(fd));
    attachmentpart.setFileName(fd.getName());
    multipart.addBodyPart(attachmentpart);
    }
    }
    }
    msg.setContent(multipart);
    msg.setSentDate(new Date());
    Transport.send(msg);
    }
    catch(MessagingException e)
    {
    error=e.getMessage();
    return false;
    }
    return true;
    }
    
    }
    Zuletzt editiert von Christian Marquardt; 27.09.2020, 14:25.
    Christian

  • #2
    Hier die Erweiterung mit SSLv3/TLS (bsp. Telekom ab 1.3.2014)

    Wer Code für POP3 Abruf benötigt -> PN

    Code:
    public class EMailKontoData
    {
    protected String kontoname;
    protected String username;
    protected String passwort;
    protected String POP3server;
    protected String POP3port;
    protected String SMTPserver;
    protected String SMTPport;
    protected String SMTPabsender;
    protected boolean sslv2SMTP;
    protected boolean sslv3SMTP;
    protected boolean tlsSMTP;
    protected boolean sslv2POP3;
    protected boolean sslv3POP3;
    
    public EMailKontoData()
    {
    }
    
    public String getKontoname()
    {
    return kontoname;
    }
    
    public void setKontoname(String kontoname)
    {
    this.kontoname=kontoname;
    }
    
    public String getUsername()
    {
    return username;
    }
    
    public void setUsername(String username)
    {
    this.username=username;
    }
    
    public String getPasswort()
    {
    return passwort;
    }
    
    public void setPasswort(String passwort)
    {
    this.passwort=passwort;
    }
    
    public String getPOP3server()
    {
    return POP3server;
    }
    
    public void setPOP3server(String POP3server)
    {
    this.POP3server=POP3server;
    }
    
    public String getPOP3port()
    {
    return POP3port;
    }
    
    public void setPOP3port(String POP3port)
    {
    this.POP3port=POP3port;
    }
    
    public String getSMTPserver()
    {
    return SMTPserver;
    }
    
    public void setSMTPserver(String SMTPserver)
    {
    this.SMTPserver=SMTPserver;
    }
    
    public String getSMTPport()
    {
    return SMTPport;
    }
    
    public void setSMTPport(String SMTPport)
    {
    this.SMTPport=SMTPport;
    }
    
    public String getSMTPabsender()
    {
    return SMTPabsender;
    }
    
    public void setSMTPabsender(String SMTPabsender)
    {
    this.SMTPabsender=SMTPabsender;
    }
    
    public boolean isSslv2SMTP()
    {
    return sslv2SMTP;
    }
    
    public void setSslv2SMTP(boolean sslv2SMTP)
    {
    this.sslv2SMTP=sslv2SMTP;
    }
    
    public boolean isSslv3SMTP()
    {
    return sslv3SMTP;
    }
    
    public void setSslv3SMTP(boolean sslv3SMTP)
    {
    this.sslv3SMTP=sslv3SMTP;
    }
    
    public boolean isTlsSMTP()
    {
    return tlsSMTP;
    }
    
    public void setTlsSMTP(boolean tlsSMTP)
    {
    this.tlsSMTP=tlsSMTP;
    }
    
    public boolean isSslv2POP3()
    {
    return sslv2POP3;
    }
    
    public void setSslv2POP3(boolean sslv2POP3)
    {
    this.sslv2POP3=sslv2POP3;
    }
    
    public boolean isSslv3POP3()
    {
    return sslv3POP3;
    }
    
    public void setSslv3POP3(boolean sslv3POP3)
    {
    this.sslv3POP3=sslv3POP3;
    }
    
    @Override
    public String toString()
    {
    return "EMailKontoData{"+"kontoname="+kontoname+", username="+username+", passwort="+passwort+", POP3server="+POP3server+", POP3port="+POP3port+", SMTPserver="+SMTPserver+", SMTPport="+SMTPport+", SMTPabsender="+SMTPabsender+", sslv2SMTP="+sslv2SMTP+", sslv3SMTP="+sslv3SMTP+", tlsSMTP="+tlsSMTP+", sslv2POP3="+sslv2POP3+", sslv3POP3="+sslv3POP3+'}';
    }
    
    }

    Code:
    public class SMTPManager
    {
    protected static Logger logger=Logger.getLogger(SMTPManager.class);
    private final EMailKontoData eMailKontoData;
    private boolean authentication=true;
    private final String empfaenger;
    private String blindCarbonCopy;
    private String carbonCopy;
    private String replyTo;
    private final String subject;
    private final String body;
    private List<File> dateien;
    
    public SMTPManager(EMailKontoData eMailKontoData,String empfaenger,String subject,String body)
    {
    this.eMailKontoData=eMailKontoData;
    this.empfaenger=empfaenger;
    this.subject=subject;
    this.body=body;
    }
    
    protected String getPasswort()
    {
    return eMailKontoData.getPasswort();
    }
    
    protected String getUsername()
    {
    return eMailKontoData.getUsername();
    }
    
    protected String getAbsender()
    {
    return eMailKontoData.getSMTPabsender();
    }
    
    public void setAuthentication(boolean authentication)
    {
    this.authentication=authentication;
    }
    
    public void setBlindCarbonCopy(String blindCarbonCopy)
    {
    this.blindCarbonCopy=blindCarbonCopy;
    }
    
    public void setCarbonCopy(String carbonCopy)
    {
    this.carbonCopy=carbonCopy;
    }
    
    public void setReplyTo(String replyTo)
    {
    this.replyTo=replyTo;
    }
    
    public void setDateien(List<File> dateien)
    {
    this.dateien=dateien;
    }
    
    public String SendeMail()
    {
    logger.info("SendeMail: "+eMailKontoData.getKontoname()+"(SSLv2: "+eMailKontoData.isSslv2SMTP()+" SSLv3: "+eMailKontoData.isSslv3SMTP()+" TLS: "+eMailKontoData.isTlsSMTP()+")");
    try
    {
    Properties properties=System.getProperties();
    //prop.put("mail.debug","true");
    if(eMailKontoData.isTlsSMTP())
    {
    properties.put("mail.transport.protocol","smtp");
    properties.put("mail.smtp.auth",String.valueOf(aut hentication));
    properties.put("mail.smtp.host",eMailKontoData.get SMTPserver());
    properties.put("mail.smtp.port",eMailKontoData.get SMTPport());
    properties.put("mail.user",getUsername());
    properties.put("mail.password",getPasswort());
    properties.put("mail.smtp.starttls.enable","true") ;
    properties.put("mail.smtp.socketFactory.port",eMai lKontoData.getSMTPport());
    properties.put("mail.smtp.socketFactory.class","ja vax.net.ssl.SSLSocketFactory");
    }
    else if(eMailKontoData.isSslv3SMTP())
    {
    properties.put("mail.transport.protocol","smtp");
    properties.put("mail.smtp.auth",String.valueOf(aut hentication));
    properties.put("mail.smtp.host",eMailKontoData.get SMTPserver());
    properties.put("mail.smtp.port",eMailKontoData.get SMTPport());
    properties.put("mail.user",getUsername());
    properties.put("mail.password",getPasswort());
    properties.put("mail.smtp.ssl.protocols","SSLv3");
    properties.put("mail.smtp.socketFactory.port",eMai lKontoData.getSMTPport());
    properties.put("mail.smtp.socketFactory.class","ja vax.net.ssl.SSLSocketFactory");
    }
    else
    {
    properties.put("mail.transport.protocol","smtp");
    properties.put("mail.smtp.auth",String.valueOf(aut hentication));
    properties.put("mail.smtp.host",eMailKontoData.get SMTPserver());
    properties.put("mail.smtp.port",eMailKontoData.get SMTPport());
    properties.put("mail.user",getUsername());
    properties.put("mail.password",getPasswort());
    properties.put("mail.smtp.ssl.enable",eMailKontoDa ta.isSslv2SMTP());
    }
    Session session;
    if(authentication)
    {
    logger.debug("mit Authentication");
    Authenticator authenticator=new javax.mail.Authenticator()
    {
    @Override
    public PasswordAuthentication getPasswordAuthentication()
    {
    return new PasswordAuthentication(getUsername(),getPasswort() );
    }
    
    };
    session=Session.getInstance(properties,authenticat or);
    }
    else
    {
    logger.debug("ohne Authentication");
    session=Session.getInstance(properties);
    }
    MimeMessage message=new MimeMessage(session);
    message.setFrom(new InternetAddress(getAbsender()));
    message.setSender(new InternetAddress(getAbsender()));
    String[] empTmp=empfaenger.split("[;,]");
    for(String adr:empTmp)
    {
    message.addRecipients(Message.RecipientType.TO,adr );
    logger.info("Empfänger: "+adr);
    }
    if(blindCarbonCopy!=null&&!blindCarbonCopy.isEmpty ())
    {
    String[] bccTmp=blindCarbonCopy.split("[;,]");
    for(String adr:bccTmp)
    {
    message.addRecipients(Message.RecipientType.BCC,ad r);
    logger.info("BCC: "+adr);
    }
    }
    if(carbonCopy!=null&&!carbonCopy.isEmpty())
    {
    String[] ccTmp=carbonCopy.split("[;,]");
    for(String adr:ccTmp)
    {
    message.addRecipients(Message.RecipientType.CC,adr );
    logger.info("CC: "+adr);
    }
    }
    if(replyTo!=null&&!replyTo.isEmpty())
    {
    String repTmp=replyTo.replace(";",",");
    message.setReplyTo(InternetAddress.parse(repTmp));
    logger.info("ReplyTo: "+repTmp);
    }
    message.setSubject(subject);
    Multipart multipart=new MimeMultipart();
    BodyPart messagepart=new MimeBodyPart();
    messagepart.setText(body);
    multipart.addBodyPart(messagepart);
    if(dateien!=null)
    {
    for(File datei:dateien)
    {
    logger.info("Attatchment: "+datei.getName());
    if(datei.exists())
    {
    MimeBodyPart attachmentpart=new MimeBodyPart();
    FileDataSource fd=new FileDataSource(datei)
    {
    @Override
    public String getContentType()
    {
    return "application/octet-stream";
    }
    
    };
    attachmentpart.setDataHandler(new DataHandler(fd));
    attachmentpart.setFileName(fd.getName());
    multipart.addBodyPart(attachmentpart);
    }
    else
    {
    logger.error("Attatchment nicht gefunden: "+datei.getName());
    }
    }
    }
    message.setContent(multipart);
    message.setSentDate(new Date());
    Transport.send(message);
    }
    catch(MessagingException e)
    {
    logger.error("Fehler: "+e.getMessage(),e.fillInStackTrace());
    return e.getMessage();
    }
    logger.info("eMail: \""+subject+"\" wurde versandt");
    return null;
    }
    
    }
    Zuletzt editiert von Christian Marquardt; 27.09.2020, 14:26.
    Christian

    Comment

    Working...
    X