logo

E-mail verzenden in Java

  1. E-mail verzenden met behulp van de JavaMail API
  2. Stappen om e-mail te verzenden met de JavaMail API
    1. Haal het sessieobject op
    2. Stel het bericht samen
    3. stuur het bericht
  3. Eenvoudig voorbeeld van het verzenden van e-mail met behulp van de JavaMail API
  4. Voorbeeld van het verzenden van e-mail met behulp van de JavaMail API via de SMTP-server van de hostprovider

Er zijn verschillende manieren om e-mail te verzenden met de JavaMail API. Voor dit doel moet u over een SMTP-server beschikken die verantwoordelijk is voor het verzenden van e-mails.

U kunt een van de volgende technieken gebruiken om de SMTP-server te verkrijgen:

  • Installeer en gebruik elke SMTP-server zoals Postcast-server, Apache James-server, cmail-server enz. (of)
  • Gebruik de SMTP-server van de hostprovider, b.v. mijn SMTP-server is mail.javatpoint.com (of)
  • Gebruik de SMTP-server van andere bedrijven, b.v. gmail enz.

Hier gaan we drie manieren leren om e-mail te verzenden met behulp van de Javamail API. Maar we moeten de basisstappen leren om e-mail te verzenden vanuit de Java-applicatie.


Stappen om e-mail te verzenden met de JavaMail API

Er zijn drie stappen om e-mail te verzenden met JavaMail. Ze zijn als volgt:

    Haal het sessieobject opwaarin alle informatie van de host wordt opgeslagen, zoals hostnaam, gebruikersnaam, wachtwoord enz.stel het bericht op stuur het bericht


1) Haal het sessieobject op

De javax.mail.Sessieklasse biedt twee methoden om het object van de sessie op te halen: de methode Session.getDefaultInstance() en de methode Session.getInstance(). U kunt elke methode gebruiken om het sessieobject op te halen.

Methode van sessieles

Nee.MethodeBeschrijving
1openbare statische sessie getDefaultInstance (eigenschappen rekwisieten)retourneert de standaardsessie.
2openbare statische sessie getDefaultInstance (eigenschappen rekwisieten, authenticatorauthenticatie)retourneert de standaardsessie.
3openbare statische sessie getInstance (eigenschappen rekwisieten)retourneert de nieuwe sessie.
4openbare statische sessie getInstance (eigenschappen rekwisieten, authenticatorauthenticatie)retourneert de nieuwe sessie.

Voorbeeld van de methode getDefaultInstance().

 Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getDefaultInstance(properties,null); 

Voorbeeld van de getInstance()-methode

 Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getInstance(properties,null); 

2) Stel het bericht op

De klasse javax.mail.Message biedt methoden om het bericht samen te stellen. Maar het is een abstracte klasse, dus de subklasse javax.mail.internet.MimeMessage wordt meestal gebruikt.
Om het bericht te maken, moet u het sessieobject doorgeven aan de klasseconstructor van MimeMessage. Bijvoorbeeld:
 MimeMessage message=new MimeMessage(session); 
Nu is het berichtobject gemaakt, maar om informatie in dit object op te slaan, biedt de MimeMessage-klasse vele methoden. Laten we de methoden bekijken die door de klasse MimeMessage worden geleverd:

Veelgebruikte methoden van de MimeMessage-klasse

Nee.MethodeBeschrijving
1public void setFrom(Adresadres)wordt gebruikt om het veld van koptekst in te stellen.
2public void addRecipient(Message.RecipientType type, adresadres)wordt gebruikt om het opgegeven adres toe te voegen aan het ontvangertype.
3public void addRecipients (Message.RecipientType type, Adres[] adressen)wordt gebruikt om de opgegeven adressen toe te voegen aan het ontvangertype.
4public void setSubject(Stringonderwerp)wordt gebruikt om het onderwerpkopveld in te stellen.
5public void setText(String-tekstbericht)wordt gebruikt om de tekst in te stellen als berichtinhoud met behulp van tekst/plain MIME-type.
6public void setContent(Objectbericht, String contentType)wordt gebruikt om de inhoud in te stellen als berichtinhoud met behulp van een bepaald MIME-type.

Voorbeeld om het bericht op te stellen:

 MimeMessage message=new MimeMessage(session); message.setFrom(new InternetAddress('[email protected]')); message.addRecipient(Message.RecipientType.To, new InternetAddress('[email protected]')); message.setHeader('Hi, everyone'); message.setText('Hi, This mail is to inform you...'); 

3) Verzend het bericht

De klasse javax.mail.Transport biedt een methode om het bericht te verzenden.

Veelgebruikte methoden voor transportklasse

Nee.MethodeBeschrijving
1openbare statische ongeldige verzending (berichtbericht)wordt gebruikt om het bericht te verzenden.
2openbare statische ongeldige verzending (berichtbericht, adres [] adres)wordt gebruikt om het bericht naar de opgegeven adressen te sturen.

Voorbeeld om het bericht te verzenden:

 Transport.send(message); 

Eenvoudig voorbeeld van het verzenden van e-mail in Java

download deze jar-bestanden of ga naar de Oracle-site om de nieuwste versie te downloaden.
In dit voorbeeld gaan we leren hoe we e-mail kunnen verzenden via de SMTP-server die op de machine is geïnstalleerd, b.v. Postcast-server, Apache James-server, Cmail-server etc. Als u e-mail wilt verzenden via uw SMTP-server van de hostprovider, zie dan het voorbeeld hierna.
Om de e-mail te verzenden met behulp van de JavaMail API, moet u de twee jar-bestanden laden:
mail.jar
activatie.jar
 import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args){ String to = '[email protected]';//change accordingly String from = '[email protected]';change accordingly String host = 'localhost';//or IP address //Get the session object Properties properties = System.getProperties(); properties.setProperty('mail.smtp.host', host); Session session = Session.getDefaultInstance(properties); //compose the message try{ MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject('Ping'); message.setText('Hello, this is example of sending email '); // Send message Transport.send(message); System.out.println('message sent successfully....'); }catch (MessagingException mex) {mex.printStackTrace();} } } 
download dit voorbeeld om e-mail te verzenden

In dit voorbeeld gaan we leren hoe we e-mail kunnen verzenden via de SMTP-server die op de machine is geïnstalleerd, b.v. Postcast-server, Apache James-server, Cmail-server etc. Als u e-mail wilt verzenden via de SMTP-server van de hostprovider, zie dan het voorbeeld hierna.

runtime-fout

Om dit voorbeeld uit te voeren, moet u twee jar-bestanden laden. Er zijn 4 manieren om het jar-bestand te laden. Een van de manieren is het instellen van klassenpad. Laten we eens kijken hoe we dit voorbeeld kunnen uitvoeren:

Laad het jar-bestandc:> set classpath=mail.jar;activatie.jar;.;
compileer het bronbestandc:> javac SendEmail.java
gerund doorc:> java Stuur een e-mail

Voorbeeld van het verzenden van e-mail in Java via de SMTP-server van de hostprovider

download deze jar-bestanden of ga naar de Oracle-site om de nieuwste versie te downloaden.
Als u de SMTP-server gebruikt die door de hostprovider is geleverd, b.v. mail.javatpoint.com, moet u de gebruikersnaam en het wachtwoord verifiëren. De klasse javax.mail.PasswordAuthentication wordt gebruikt om het wachtwoord te verifiëren.
Als u de e-mail verzendt met de JavaMail API, laadt u de twee jar-bestanden:
mail.jar
activatie.jar
 import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class SendMailBySite { public static void main(String[] args) { String host='mail.javatpoint.com'; final String user='[email protected]';//change accordingly final String password='xxxxx';//change accordingly String to='[email protected]';//change accordingly //Get the session object Properties props = new Properties(); props.put('mail.smtp.host',host); props.put('mail.smtp.auth', 'true'); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user,password); } }); //Compose the message try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(user)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject('javatpoint'); message.setText('This is simple program of sending email using JavaMail API'); //send the message Transport.send(message); System.out.println('message sent successfully...'); } catch (MessagingException e) {e.printStackTrace();} } } 
download dit voorbeeld om e-mail te verzenden

Zoals u in het bovenstaande voorbeeld kunt zien, moeten gebruikersnaam en wachtwoord worden geverifieerd. Zoals dit programma illustreert, kunt u eenvoudig e-mail verzenden. Wijzig de gebruikersnaam en het wachtwoord dienovereenkomstig. Laten we eens kijken hoe we het opnieuw kunnen uitvoeren met een eenvoudige techniek:

Laad het jar-bestandc:> set classpath=mail.jar;activatie.jar;.;
compileer het bronbestandc:> javac SendMailBySite.java
gerund doorc:> java SendMailBySite