- Надсилання електронної пошти за допомогою JavaMail API
- Кроки для надсилання електронної пошти за допомогою JavaMail API
- Отримайте об'єкт сеансу
- Складіть повідомлення
- відправити повідомлення
- Простий приклад надсилання електронної пошти за допомогою JavaMail API
- Приклад надсилання електронної пошти за допомогою JavaMail API через сервер SMTP, наданий хост-провайдером
Існують різні способи надсилання електронної пошти за допомогою JavaMail API. Для цього у вас повинен бути SMTP-сервер, який відповідає за надсилання листів.
Щоб отримати сервер SMTP, можна скористатися одним із наведених нижче методів.
абстрактні методи
- Встановіть і використовуйте будь-який сервер SMTP, наприклад сервер Postcast, сервер Apache James, сервер cmail тощо (або)
- Використовуйте сервер SMTP, наданий хост-провайдером, наприклад. мій SMTP-сервер mail.javatpoint.com (або)
- Використовуйте сервер SMTP, наданий іншими компаніями, напр. gmail тощо
Тут ми збираємося дізнатися про три підходи до надсилання електронної пошти за допомогою API javamail. Але ми повинні вивчити основні кроки для надсилання електронної пошти з програми Java.
Кроки для надсилання електронної пошти за допомогою JavaMail API
Щоб надіслати електронну пошту за допомогою JavaMail, потрібно виконати три кроки. Вони такі:
Отримайте об'єкт сеансу | який зберігає всю інформацію про хост, як-от ім’я хоста, ім’я користувача, пароль тощо.
скласти повідомлення |
відправити повідомлення |
1) Отримайте об’єкт сеансу
The javax.mail.Клас сеансу надає два методи отримання об’єкта сесії: метод Session.getDefaultInstance() і метод Session.getInstance(). Ви можете використовувати будь-який метод, щоб отримати об’єкт сеансу.
таблиця реагування
Метод сеансового класу
Немає. | метод | опис |
1 | public static Session getDefaultInstance(Properties props) | повертає сеанс за замовчуванням. |
2 | public static Session getDefaultInstance(Properties props,Authenticator auth) | повертає сеанс за замовчуванням. |
3 | public static Session getInstance(Properties props) | повертає новий сеанс. |
4 | public static Session getInstance(Properties props, Authenticator auth) | повертає новий сеанс. |
Приклад методу getDefaultInstance().
Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getDefaultInstance(properties,null);
Приклад методу getInstance().
Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getInstance(properties,null);
2) Скласти повідомлення
Клас javax.mail.Message надає методи для створення повідомлення. Але це абстрактний клас, тому здебільшого використовується його підклас javax.mail.internet.MimeMessage. |
Щоб створити повідомлення, вам потрібно передати об’єкт сеансу в конструктор класу MimeMessage. Наприклад: |
MimeMessage message=new MimeMessage(session);
Тепер об’єкт повідомлення створено, але для зберігання інформації в цьому об’єкті клас MimeMessage надає багато методів. Давайте подивимося на методи, надані класом MimeMessage: |
Зазвичай використовувані методи класу MimeMessage
Немає. | метод | опис |
1 | public void setFrom(адреса адреси) | використовується для встановлення поля заголовка from. |
2 | public void addRecipient(Message.RecipientType type, Address address) | використовується для додавання вказаної адреси до типу одержувача. |
3 | public void addRecipients(Message.RecipientType type, Address[] addresses) | використовується для додавання заданих адрес до типу одержувача. |
4 | public void setSubject(тема рядка) | використовується для встановлення поля заголовка теми. |
5 | public void setText (рядок текстового повідомлення) | використовується для встановлення тексту як вмісту повідомлення за допомогою типу text/plain MIME. |
6 | public void setContent(Object msg, String contentType) | використовується для встановлення вмісту як вмісту повідомлення з використанням заданого типу MIME. |
Приклад складання повідомлення:
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) Надіслати повідомлення
Клас javax.mail.Transport надає метод для надсилання повідомлення. |
Зазвичай використовувані методи транспортного класу
Немає. | метод | опис |
1 | public static void send (Message message) | використовується відправити повідомлення. |
2 | public static void send (Message message, Address[] address) | використовується для надсилання повідомлення на вказані адреси. |
Приклад відправлення повідомлення:
Transport.send(message);
Простий приклад надсилання електронної пошти на Java
У цьому прикладі ми дізнаємося, як надсилати електронну пошту за допомогою SMTP-сервера, встановленого на машині, наприклад. Сервер Postcast, сервер Apache James, сервер Cmail тощо. Якщо ви хочете надіслати електронну пошту за допомогою сервера SMTP, наданого хост-провайдером, перегляньте приклад після цього. |
Щоб надіслати електронний лист за допомогою JavaMail API, вам потрібно завантажити два файли jar:завантажте ці файли jar або перейдіть на сайт Oracle, щоб завантажити останню версію. |
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();} } }
завантажте цей приклад, щоб надіслати електронний листУ цьому прикладі ми дізнаємося, як надсилати електронну пошту за допомогою SMTP-сервера, встановленого на машині, наприклад. Сервер Postcast, сервер Apache James, сервер Cmail тощо. Якщо ви хочете надіслати електронну пошту за допомогою сервера SMTP, наданого хост-провайдером, перегляньте приклад після цього.
Щоб запустити цей приклад, вам потрібно завантажити два файли jar. Є 4 способи завантажити файл jar. Одним із способів є встановлення шляху до класу. Давайте подивимося, як запустити цей приклад:
Завантажте файл jar | c:> set classpath=mail.jar;activation.jar;.; |
скомпілювати вихідний файл | c:> javac SendEmail.java |
пробігати | c:> java SendEmail |
Приклад надсилання електронної пошти в Java через SMTP-сервер, наданий хост-провайдером
Якщо ви використовуєте SMTP-сервер, наданий хост-провайдером, напр. mail.javatpoint.com, вам потрібно автентифікувати ім’я користувача та пароль. Клас javax.mail.PasswordAuthentication використовується для автентифікації пароля. |
Якщо ви надсилаєте електронний лист за допомогою JavaMail API, завантажте два файли jar:завантажте ці файли jar або перейдіть на сайт Oracle, щоб завантажити останню версію. |
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();} } }
завантажте цей приклад, щоб надіслати електронний листЯк ви можете бачити в наведеному вище прикладі, ідентифікатор користувача та пароль потребують автентифікації. Як показує ця програма, ви можете легко надсилати електронні листи. Відповідно змініть ім’я користувача та пароль. Давайте подивимося, як запустити його ще раз за простою технікою:
Завантажте файл jar | c:> set classpath=mail.jar;activation.jar;.; |
скомпілювати вихідний файл | c:> javac SendMailBySite.java |
пробігати | c:> java SendMailBySite |