Java - E-mail verzenden
Een e-mail verzenden met uw Java-toepassing is eenvoudig genoeg, maar om te beginnen moet u beschikken over JavaMail API en Java Activation Framework (JAF) geïnstalleerd op uw computer.
-
U kunt de nieuwste versie van JavaMail (versie 1.2) downloaden van de standaardwebsite van Java.
-
U kunt de nieuwste versie van JAF (versie 1.1.1) downloaden van de standaardwebsite van Java.
Download en unzip deze bestanden, in de nieuw aangemaakte mappen op het hoogste niveau vindt u een aantal jar-bestanden voor beide toepassingen. U moet mail.jar . toevoegen en activation.jar bestanden in uw CLASSPATH.
Stuur een eenvoudige e-mail
Hier is een voorbeeld van het verzenden van een eenvoudige e-mail vanaf uw machine. Er wordt aangenomen dat uw localhost is verbonden met internet en voldoende in staat om een e-mail te verzenden.
Voorbeeld
// File Name SendEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { // Recipient's email ID needs to be mentioned. String to = "[email protected]"; // Sender's email ID needs to be mentioned String from = "[email protected]"; // Assuming you are sending email from localhost String host = "localhost"; // Get system properties Properties properties = System.getProperties(); // Setup mail server properties.setProperty("mail.smtp.host", host); // Get the default Session object. Session session = Session.getDefaultInstance(properties); try { // Create a default MimeMessage object. MimeMessage message = new MimeMessage(session); // Set From: header field of the header. message.setFrom(new InternetAddress(from)); // Set To: header field of the header. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: header field message.setSubject("This is the Subject Line!"); // Now set the actual message message.setText("This is actual message"); // Send message Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }
Compileer en voer dit programma uit om een eenvoudige e-mail te verzenden −
Uitvoer
$ java SendEmail Sent message successfully....
Als u een e-mail naar meerdere ontvangers wilt verzenden, worden de volgende methoden gebruikt om meerdere e-mail-ID's op te geven −
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
Hier is de beschrijving van de parameters −
-
type − Dit zou worden ingesteld op TO, CC of BCC. Hier staat CC voor Carbon Copy en BCC voor Black Carbon Copy. Voorbeeld:Message.RecipientType.TO
-
adressen − Dit is een array van e-mail-ID's. U moet de methode InternetAddress() gebruiken bij het opgeven van e-mail-ID's.
Stuur een HTML-e-mail
Hier is een voorbeeld van het verzenden van een HTML-e-mail vanaf uw computer. Hier wordt aangenomen dat uw localhost is verbonden met internet en voldoende in staat om een e-mail te verzenden.
Dit voorbeeld lijkt erg op het vorige, behalve dat we hier de methode setContent() gebruiken om inhoud in te stellen waarvan het tweede argument "text/html" is om aan te geven dat de HTML-inhoud in het bericht is opgenomen.
Met dit voorbeeld kunt u zo groot HTML-inhoud verzenden als u wilt.
Voorbeeld
// File Name SendHTMLEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendHTMLEmail { public static void main(String [] args) { // Recipient's email ID needs to be mentioned. String to = "[email protected]"; // Sender's email ID needs to be mentioned String from = "[email protected]"; // Assuming you are sending email from localhost String host = "localhost"; // Get system properties Properties properties = System.getProperties(); // Setup mail server properties.setProperty("mail.smtp.host", host); // Get the default Session object. Session session = Session.getDefaultInstance(properties); try { // Create a default MimeMessage object. MimeMessage message = new MimeMessage(session); // Set From: header field of the header. message.setFrom(new InternetAddress(from)); // Set To: header field of the header. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: header field message.setSubject("This is the Subject Line!"); // Send the actual HTML message, as big as you like message.setContent("<h1>This is actual message</h1>", "text/html"); // Send message Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }
Compileer en voer dit programma uit om een HTML-e-mail te verzenden −
Uitvoer
$ java SendHTMLEmail Sent message successfully....
Bijlage per e-mail verzenden
Hier is een voorbeeld van het verzenden van een e-mail met bijlage vanaf uw machine. Hier wordt aangenomen dat uw localhost is verbonden met internet en voldoende in staat om een e-mail te verzenden.
Voorbeeld
// File Name SendFileEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendFileEmail { public static void main(String [] args) { // Recipient's email ID needs to be mentioned. String to = "[email protected]"; // Sender's email ID needs to be mentioned String from = "[email protected]"; // Assuming you are sending email from localhost String host = "localhost"; // Get system properties Properties properties = System.getProperties(); // Setup mail server properties.setProperty("mail.smtp.host", host); // Get the default Session object. Session session = Session.getDefaultInstance(properties); try { // Create a default MimeMessage object. MimeMessage message = new MimeMessage(session); // Set From: header field of the header. message.setFrom(new InternetAddress(from)); // Set To: header field of the header. message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); // Set Subject: header field message.setSubject("This is the Subject Line!"); // Create the message part BodyPart messageBodyPart = new MimeBodyPart(); // Fill the message messageBodyPart.setText("This is message body"); // Create a multipar message Multipart multipart = new MimeMultipart(); // Set text message part multipart.addBodyPart(messageBodyPart); // Part two is attachment messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // Send the complete message parts message.setContent(multipart ); // Send message Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } }
Compileer en voer dit programma uit om een HTML-e-mail te verzenden −
Uitvoer
$ java SendFileEmail Sent message successfully....
Gebruikersauthenticatiegedeelte
Als het vereist is om een gebruikers-ID en wachtwoord te verstrekken aan de e-mailserver voor authenticatiedoeleinden, dan kunt u deze eigenschappen als volgt instellen −
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");
De rest van het e-mailverzendmechanisme blijft zoals hierboven uitgelegd.
Java