Free Java API for Sending Simple & HTML-based Emails
Open Source Java Email Processing API to Create and Send Text and HTML-based Email Messages with Attachments, Embedded Images, SMTP, IMAP, POP3 Protocol Support abd Advanced Security support.
Vad är JavaMail?
I världen av företagsapplikationer och automatiserade system är förmågan att skicka och ta emot e‑mail programatiskt inte bara en bekvämlighet—det är ett måste. Från att skicka återställningslänkar för lösenord och orderbekräftelser till att bearbeta inkommande supportärenden är e‑mail‑integration en kärnfunktion. För Java‑utvecklare har hörnstenen i denna funktionalitet varit det robusta, öppna JavaMail‑API‑et. Denna omfattande produktsida kommer att utforska JavaMail‑API‑et, dess kraftfulla funktioner och ge praktiska kodexempel så att du snabbt kan komma igång med e‑mail‑integration i dina Java‑applikationer.
JavaMail‑API‑et är ett moget, öppet ramverk som tillhandahålls av Oracle (tidigare Sun Microsystems) och erbjuder ett plattforms‑ och protokolloberoende ramverk för att bygga e‑post‑ och meddelandeapplikationer. Det är standard‑API‑et för hantering av e‑mail i Java‑ekosystemet. Det abstraherar komplexiteten i underliggande e‑mail‑protokoll som SMTP, POP3 och IMAP, så att utvecklare kan arbeta med ett rent, objektorienterat gränssnitt. Det finns flera viktiga funktioner i biblioteket, såsom att skapa och skicka HTML‑e‑mail, lägga till bilagor, infoga inbäddade bilder, hantera multipart‑innehåll, stark autentisering och säkerhetsstöd, stöd för e‑mail i mappar, förbättrad sökning och filtrering av e‑mail, läsa e‑mail via SMTP, med mera.
Komma igång med JavaMail
Först och främst måste du installera JDK 1.6 eller högre. Du behöver lägga till följande Maven‑beroende i pom.xml.
Maven‑beroende
<dependency>
<groupId>com.sun.mail</groupId>s;
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
Du kan ladda ner biblioteket direkt från GitHub-sidan.
Skicka e‑mail‑meddelanden via Java‑biblioteket
Det öppna JavaMail‑biblioteket har stöd för att skapa och skicka både enkla och HTML‑e‑mail‑meddelanden i Java‑applikationer. Utvecklare kan läsa befintliga e‑mail, lägga till filer och bilder som bilagor, skicka e‑mail till flera mottagare, lägga till anpassade rubriker och mycket mer. Du måste definiera anslutningsparametrar som värd, port och flaggor för att aktivera autentisering och TLS. Följande exempel visar hur man skickar ett grundläggande text‑e‑mail via en SMTP‑server (t.ex. Gmail) i en Java‑applikation.
Hur man skickar ett enkelt text‑e‑mail via en SMTP‑server med Java‑API?
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class SimpleEmailSender {
public static void main(String[] args) {
// Avsändarens och mottagarens e‑mail‑adress
String from = "your.email@gmail.com";
String to = "recipient.email@example.com";
// SMTP‑serverkonfiguration (för Gmail)
String host = "smtp.gmail.com";
final String username = "your.email@gmail.com";
final String password = "your-app-password"; // Använd ett app‑lösenord för Gmail
// Ställ in egenskaper för e‑postservern
Properties properties = new Properties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true"); // Använd TLS
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", "587");
// Hämta Session‑objektet och skicka användarnamn och lösenord
Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// Skapa ett standard‑MimeMessage‑objekt
Message message = new MimeMessage(session);
// Ställ in From‑rubriken
message.setFrom(new InternetAddress(from));
// Ställ in To‑rubriken
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
// Ställ in Subject‑rubriken
message.setSubject("Hello from JavaMail API");
// Ställ in själva meddelandetexten
message.setText("This is a test email sent programmatically using the JavaMail API.");
// Skicka meddelandet
Transport.send(message);
System.out.println("Email sent successfully!");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
Sökning och filtrering av e‑mail via Java
Det öppna JavaMail‑biblioteket har fullt stöd för att söka e‑mail‑meddelanden i en mapp efter olika kriterier (avsändare, ämne, datum, flaggor) i Java‑applikationer. Detta är särskilt användbart när man utvecklar e‑mail‑klienter eller automatiseringar. Du kan även kombinera flera söktermer (AND, OR, NOT) med AndTerm, OrTerm, NotTerm. Följande exempel visar hur man söker efter meddelanden från en specifik avsändare med Java‑kommandon.
Hur man söker efter meddelanden från en specifik avsändare i Java‑appar?
Store store = session.getStore("imap");
store.connect("imap.example.com", username, password);
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
// Sök efter meddelanden från en specifik avsändare
SearchTerm senderTerm = new FromStringTerm("alerts@example.com");
Message[] found = inbox.search(senderTerm);
for (Message m : found) {
System.out.println("Subject: " + m.getSubject());
}
inbox.close(false);
store.close();
Stöd för SMTP, IMAP och POP3‑protokoll
Det öppna JavaMail‑biblioteket stödjer som standard de tre vanligaste e‑mail‑protokollen: SMTP (Simple Mail Transfer Protocol) för att skicka meddelanden, POP3 (Post Office Protocol 3) för enkel e‑mail‑hämtning och IMAP (Internet Message Access Protocol) för mer avancerad åtkomst (mappar, partiell hämtning). Dessutom stödjer det säkra varianter som SMTPS, POP3S, IMAPS och kan utökas med anpassade leverantörer.
Avancerad autentisering och säkerhet via Java
Det öppna JavaMail‑biblioteket stödjer säker kommunikation med e‑mail‑servrar, vilket är avgörande i dagens säkerhetsmedvetna miljö. Biblioteket stödjer TLS (Transport Layer Security) som krypterar kommunikationskanalen mellan din applikation och e‑postservern. Det stödjer även SSL (Secure Sockets Layer), föregångaren till TLS, för att etablera en säker anslutning. Biblioteket stödjer dessutom standardautentisering med användarnamn/lösenord för att ansluta till servrar som kräver inloggning.