java-ee
Javamail API
Sök…
Anmärkningar
JavaMail-sidan på Oracle-webbplatsen beskriver den på följande sätt
JavaMail API tillhandahåller ett plattformsoberoende och protokolloberoende ramverk för att bygga e-post- och meddelandeapplikationer. JavaMail API är tillgängligt som ett valfritt paket för användning med Java SE-plattformen och ingår också i Java EE-plattformen.
Den primära webbplatsen för JavaMail-projektet finns nu på java.net . Därifrån kan du hitta javadokorna för många versioner av API: er, länkar till källkodsförråden, länkar för nedladdningar, exempel och tips om hur du använder JavaMail med några populära leverantörer av e-posttjänster.
Skickar ett e-postmeddelande till en POP3-e-postserver
Detta exempel visar hur du upprättar en anslutning till en SSL-aktiverad POP3-e-postserver och skickar ett enkelt (endast text) e-post.
// Configure mail provider
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.mymailprovider.com");
props.put("mail.pop3.host", "pop3.mymailprovider.com");
// Enable SSL
props.put("mail.pop3.ssl.enable", "true");
props.put("mail.smtp.starttls.enable", "true");
// Enable SMTP Authentication
props.put("mail.smtp.auth","true");
Authenticator auth = new PasswordAuthentication("user", "password");
Session session = Session.getDefaultInstance(props, auth);
// Get the store for authentication
final Store store;
try {
store = session.getStore("pop3");
} catch (NoSuchProviderException e) {
throw new IllegalStateException(e);
}
try {
store.connect();
} catch (AuthenticationFailedException | MessagingException e) {
throw new IllegalStateException(e);
}
try {
// Setting up the mail
InternetAddress from = new InternetAddress("[email protected]");
InternetAddress to = new InternetAddress("[email protected]");
MimeMessage message = new MimeMessage(session);
message.setFrom(from);
message.addRecipient(Message.RecipientType.TO, to);
message.setSubject("Test Subject");
message.setText("Hi, I'm a Mail sent with Java Mail API.");
// Send the mail
Transport.send(message);
} catch (AddressException | MessagingException e)
throw new IllegalStateException(e);
}
varningar:
- Olika detaljer har anslutits till koden ovan för illustrationssyften.
- Undantagshanteringen är INTE exempel.
IllegalStateException
är ett dåligt val, till en början. - Inget försök har gjorts för att hantera resurserna korrekt.
Skicka enkel e-post
public class GoogleMailTest {
GoogleMailTest() {
}
public static void Send(final String username, final String password, String recipientEmail, String title, String message) throws AddressException, MessagingException {
GoogleMailTest.Send(username, password, recipientEmail, "", title, message);
}
public static void Send(final String username, final String password, String recipientEmail, String ccEmail, String title, String message) throws AddressException, MessagingException {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
// Get a Properties object
Properties props = System.getProperties();
props.setProperty("mail.smtps.host", "smtp.gmail.com");
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.put("mail.debug", "true");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.setProperty("mail.smtps.auth", "true");
props.put("mail.smtps.quitwait", "false");
Session session = Session.getInstance(props, null);
// -- Create a new message --
final MimeMessage msg = new MimeMessage(session);
// -- Set the FROM and TO fields --
msg.setFrom(new InternetAddress(username));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipientEmail, false));
JOptionPane.showMessageDialog(null, msg.getSize());
if (ccEmail.length() > 0) {
msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccEmail, false));
}
msg.setSubject(title);
msg.setText(message);
msg.setSentDate(new Date());
SMTPTransport t = (SMTPTransport) session.getTransport("smtps");
t.connect("smtp.gmail.com", username, password);
t.sendMessage(msg, msg.getAllRecipients());
t.close();
}
// And use this code in any class, I'm using it in the same class in main method
public static void main(String[] args) {
String senderMail = "[email protected]"; //sender mail id
String password = "769inzimam-9771"; // sender mail password here
String toMail = "[email protected]"; // recepient mail id here
String cc = ""; // cc mail id here
String title = "Java mail test"; // Subject of the mail
String msg = "Message here"; // message to be sent
GoogleMailTest gmt = new GoogleMailTest();
try {
if (cc.isEmpty()) {
GoogleMailTest.Send(senderMail, password, toMail, title, msg);
} else {
GoogleMailTest.Send(senderMail, password, toMail, cc, title, msg);
}
} catch (MessagingException ex) {
Logger.getLogger(GoogleMailTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Skicka HTML-formaterad e-post
Du kan använda samma exempel ovan Skicka Simple Mail med lite modifiering. Använd msg.setContent()
istället för msg.setText()
och använd innehållstyp html som text/html
.
kontrollera detta
msg.setContent(message, "text/html; charset=utf-8");
istället för
msg.setText(message);