logo

Надсилання електронної пошти в Java

  1. Надсилання електронної пошти за допомогою JavaMail API
  2. Кроки для надсилання електронної пошти за допомогою JavaMail API
    1. Отримайте об'єкт сеансу
    2. Складіть повідомлення
    3. відправити повідомлення
  3. Простий приклад надсилання електронної пошти за допомогою JavaMail API
  4. Приклад надсилання електронної пошти за допомогою 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(). Ви можете використовувати будь-який метод, щоб отримати об’єкт сеансу.

таблиця реагування

Метод сеансового класу

Немає.методопис
1public static Session getDefaultInstance(Properties props)повертає сеанс за замовчуванням.
2public static Session getDefaultInstance(Properties props,Authenticator auth)повертає сеанс за замовчуванням.
3public static Session getInstance(Properties props)повертає новий сеанс.
4public 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

Немає.методопис
1public void setFrom(адреса адреси)використовується для встановлення поля заголовка from.
2public void addRecipient(Message.RecipientType type, Address address)використовується для додавання вказаної адреси до типу одержувача.
3public void addRecipients(Message.RecipientType type, Address[] addresses)використовується для додавання заданих адрес до типу одержувача.
4public void setSubject(тема рядка)використовується для встановлення поля заголовка теми.
5public void setText (рядок текстового повідомлення)використовується для встановлення тексту як вмісту повідомлення за допомогою типу text/plain MIME.
6public 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 надає метод для надсилання повідомлення.

Зазвичай використовувані методи транспортного класу

Немає.методопис
1public static void send (Message message)використовується відправити повідомлення.
2public static void send (Message message, Address[] address)використовується для надсилання повідомлення на вказані адреси.

Приклад відправлення повідомлення:

 Transport.send(message); 

Простий приклад надсилання електронної пошти на Java

завантажте ці файли jar або перейдіть на сайт Oracle, щоб завантажити останню версію.
У цьому прикладі ми дізнаємося, як надсилати електронну пошту за допомогою SMTP-сервера, встановленого на машині, наприклад. Сервер Postcast, сервер Apache James, сервер Cmail тощо. Якщо ви хочете надіслати електронну пошту за допомогою сервера SMTP, наданого хост-провайдером, перегляньте приклад після цього.
Щоб надіслати електронний лист за допомогою JavaMail API, вам потрібно завантажити два файли jar:
mail.jar
activation.jar
 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. Одним із способів є встановлення шляху до класу. Давайте подивимося, як запустити цей приклад:

Завантажте файл jarc:> set classpath=mail.jar;activation.jar;.;
скомпілювати вихідний файлc:> javac SendEmail.java
пробігатиc:> java SendEmail

Приклад надсилання електронної пошти в Java через SMTP-сервер, наданий хост-провайдером

завантажте ці файли jar або перейдіть на сайт Oracle, щоб завантажити останню версію.
Якщо ви використовуєте SMTP-сервер, наданий хост-провайдером, напр. mail.javatpoint.com, вам потрібно автентифікувати ім’я користувача та пароль. Клас javax.mail.PasswordAuthentication використовується для автентифікації пароля.
Якщо ви надсилаєте електронний лист за допомогою JavaMail API, завантажте два файли jar:
mail.jar
activation.jar
 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();} } } 
завантажте цей приклад, щоб надіслати електронний лист

Як ви можете бачити в наведеному вище прикладі, ідентифікатор користувача та пароль потребують автентифікації. Як показує ця програма, ви можете легко надсилати електронні листи. Відповідно змініть ім’я користувача та пароль. Давайте подивимося, як запустити його ще раз за простою технікою:

Завантажте файл jarc:> set classpath=mail.jar;activation.jar;.;
скомпілювати вихідний файлc:> javac SendMailBySite.java
пробігатиc:> java SendMailBySite