java-ee
API Javamail
Поиск…
замечания
Страница JavaMail на веб-сайте Oracle описывает это следующим образом
API JavaMail предоставляет независимую от платформы и независимую от протокола инфраструктуру для создания приложений для почтовых и почтовых сообщений. API JavaMail доступен как дополнительный пакет для использования с платформой Java SE, а также включен в платформу Java EE.
Основной сайт для проекта JavaMail теперь находится на java.net . Оттуда вы можете найти javadocs для многих версий API, ссылки на репозитории исходного кода, ссылки для загрузки, примеры и подсказки для использования JavaMail с некоторыми популярными поставщиками услуг электронной почты.
Отправка электронной почты на почтовый сервер POP3
В этом примере показано, как установить соединение с сервером электронной почты POP3 с поддержкой SSL и отправить простое (только текстовое) электронное письмо.
// 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);
}
Предостережения:
- В целях иллюстрации в код выше указаны различные детали.
- Обработка исключений НЕ является примерной.
IllegalStateException
- плохой выбор, для начала. - Не было предпринято никаких попыток правильно обрабатывать ресурсы .
Отправить Простой Email
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);
}
}
}
Отправить HTML-форматированную почту
Вы можете использовать тот же пример выше Send Simple Mail с небольшой модификацией. Используйте msg.setContent()
вместо msg.setText()
и используйте тип содержимого html как text/html
.
Проверь это
msg.setContent(message, "text/html; charset=utf-8");
вместо
msg.setText(message);