- E-mail verzenden met behulp van de JavaMail API
- Stappen om e-mail te verzenden met de JavaMail API
- Haal het sessieobject op
- Stel het bericht samen
- stuur het bericht
- Eenvoudig voorbeeld van het verzenden van e-mail met behulp van de JavaMail API
- 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 op | waarin 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. | Methode | Beschrijving |
1 | openbare statische sessie getDefaultInstance (eigenschappen rekwisieten) | retourneert de standaardsessie. |
2 | openbare statische sessie getDefaultInstance (eigenschappen rekwisieten, authenticatorauthenticatie) | retourneert de standaardsessie. |
3 | openbare statische sessie getInstance (eigenschappen rekwisieten) | retourneert de nieuwe sessie. |
4 | openbare 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. | Methode | Beschrijving |
1 | public void setFrom(Adresadres) | wordt gebruikt om het veld van koptekst in te stellen. |
2 | public void addRecipient(Message.RecipientType type, adresadres) | wordt gebruikt om het opgegeven adres toe te voegen aan het ontvangertype. |
3 | public void addRecipients (Message.RecipientType type, Adres[] adressen) | wordt gebruikt om de opgegeven adressen toe te voegen aan het ontvangertype. |
4 | public void setSubject(Stringonderwerp) | wordt gebruikt om het onderwerpkopveld in te stellen. |
5 | public void setText(String-tekstbericht) | wordt gebruikt om de tekst in te stellen als berichtinhoud met behulp van tekst/plain MIME-type. |
6 | public 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. | Methode | Beschrijving |
1 | openbare statische ongeldige verzending (berichtbericht) | wordt gebruikt om het bericht te verzenden. |
2 | openbare 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
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:download deze jar-bestanden of ga naar de Oracle-site om de nieuwste versie te downloaden. |
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 verzendenIn 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-bestand | c:> set classpath=mail.jar;activatie.jar;.; |
compileer het bronbestand | c:> javac SendEmail.java |
gerund door | c:> java Stuur een e-mail |
Voorbeeld van het verzenden van e-mail in Java via de SMTP-server van de hostprovider
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:download deze jar-bestanden of ga naar de Oracle-site om de nieuwste versie te downloaden. |
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 verzendenZoals 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-bestand | c:> set classpath=mail.jar;activatie.jar;.; |
compileer het bronbestand | c:> javac SendMailBySite.java |
gerund door | c:> java SendMailBySite |