Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

E-mails versturen in Java: Een stapsgewijze handleiding

Vereisten

Om e-mails te versturen vanuit een Java-applicatie heb je de JavaMail API en het Java Activation Framework (JAF) nodig. Beide kun je downloaden van de officiële Java-website:

  • JavaMail (versie 1.2 of nieuwer)
  • JAF (versie 1.1.1 of nieuwer)

Pak de gedownloade bestanden uit en voeg de mail.jar en activation.jar toe aan je CLASSPATH.

Een simpele e-mail versturen

In dit voorbeeld versturen we een platte-tekst e-mail via een lokale SMTP-server (localhost). Zorg dat je machine verbonden is met internet en dat de SMTP-server correct geconfigureerd is.

Voorbeeldcode

// Bestandsnaam: SendEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendEmail {
    public static void main(String[] args) {
        // Ontvanger
        String to = "ontvanger@gmail.com";
        // Afzender
        String from = "afzender@gmail.com";
        // SMTP-server (localhost)
        String host = "localhost";

        // Systeemeigenschappen ophalen en mailserver instellen
        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);

        // Sessie aanmaken
        Session session = Session.getDefaultInstance(properties);

        try {
            // MimeMessage object aanmaken
            MimeMessage message = new MimeMessage(session);
            // Afzender instellen
            message.setFrom(new InternetAddress(from));
            // Ontvanger toevoegen
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            // Onderwerp
            message.setSubject("Dit is het onderwerp!");
            // Berichttekst
            message.setText("Dit is de daadwerkelijke boodschap.");
            // Versturen
            Transport.send(message);
            System.out.println("Bericht succesvol verzonden....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

Compileren en uitvoeren

$ javac SendEmail.java
$ java SendEmail
Bericht succesvol verzonden....

Meerdere ontvangers

Gebruik addRecipients() om meerdere e-mailadressen tegelijk toe te voegen (TO, CC of BCC):

void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
  • type – Message.RecipientType.TO, CC of BCC
  • addresses – array van InternetAddress objecten

HTML e-mail versturen

Vergelijkbaar met het vorige voorbeeld, maar nu gebruiken we setContent() met MIME-type text/html.

Voorbeeldcode

// Bestandsnaam: SendHTMLEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendHTMLEmail {
    public static void main(String[] args) {
        String to = "ontvanger@gmail.com";
        String from = "afzender@gmail.com";
        String host = "localhost";

        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(properties);

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("HTML e-mail test");
            // HTML-inhoud
            message.setContent("

Dit is een HTML bericht

Met opmaak!

", "text/html"); Transport.send(message); System.out.println("HTML e-mail succesvol verzonden...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }

E-mail met bijlage versturen

Hiervoor maken we een MimeMultipart object aan dat zowel de tekst als de bijlage bevat.

Voorbeeldcode

// Bestandsnaam: SendFileEmail.java
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.File;

public class SendFileEmail {
    public static void main(String[] args) {
        String to = "ontvanger@gmail.com";
        String from = "afzender@gmail.com";
        String host = "localhost";

        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(properties);

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("E-mail met bijlage");

            // Tekstdeel
            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText("Hierbij de gevraagde bijlage.");

            // Multipart container
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(messageBodyPart);

            // Bijlage
            messageBodyPart = new MimeBodyPart();
            String filename = "document.pdf";
            DataSource source = new FileDataSource(filename);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(filename);
            multipart.addBodyPart(messageBodyPart);

            // Alles in het bericht stoppen
            message.setContent(multipart);
            Transport.send(message);
            System.out.println("E-mail met bijlage verzonden....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

Authenticatie bij de SMTP-server

Als je SMTP-server authenticatie vereist, stel dan gebruikersnaam en wachtwoord in via de properties:

properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.user", "jouw_gebruikersnaam");
properties.setProperty("mail.password", "jouw_wachtwoord");

Vervolgens moet je een Authenticator aan de sessie doorgeven. De rest van de verzendlogica blijft ongewijzigd.

Java

  1. Java-operators beheersen: typen, syntax en praktische voorbeelden
  2. Java-commentaar: typen, gebruik en best practices
  3. Java Enhanced For-lus beheersen: syntax, voorbeelden en best practices
  4. Java Strings beheersen: aanmaken, methodes en best practices
  5. Java interfaces meesteren: concepten, implementatie en best practices
  6. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  7. Java Try-with-resources meesteren: automatische resource management uitgelegd
  8. Java Annotaties uitgelegd: typen, plaatsing en praktische voorbeelden
  9. Java Assertions: een praktische gids voor bugdetectie en codebetrouwbaarheid
  10. Java Vector begrijpen: Gebruik, Kenmerken en Vergelijking met ArrayList
  11. E-mails versturen in Java: Een stapsgewijze handleiding