شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش جاوا - ارسال ایمیل

ارسال ایمیل با استفاده از برنامه جاوا به اندازه کافی ساده است، اما برای شروع باید API جاوامیل (JavaMail API) و چارچوب فعال‌سازی جاوا (Java Activation Framework (JAF)) را در سیستم خود نصب کنید.

  • می‌توانید آخرین نسخه جاوامیل (نسخه 1.2) را از وب‌سایت استاندارد جاوا دانلود کنید.

  • می‌توانید آخرین نسخه JAF (نسخه 1.1.1) را از وب‌سایت استاندارد جاوا دانلود کنید.

فایل‌ها را دانلود و از حالت فشرده خارج کنید. در دایرکتوری‌های سطح بالایی که به تازگی ایجاد شده‌اند، تعدادی فایل JAR برای هر دو برنامه وجود دارد. شما باید فایل‌های mail.jar و activation.jar را به مسیر CLASSPATH خود اضافه کنید.

ارسال یک ایمیل ساده

در اینجا یک نمونه برای ارسال یک ایمیل ساده از سیستم شما آورده شده است. در نظر گرفته شده است که localhost شما به اینترنت متصل است و قادر به ارسال یک ایمیل است.

نمونه


// File Name SendEmail.java

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendEmail {

   public static void main(String [] args) {    
      // Recipient's email ID needs to be mentioned.
      String to = "abcd@gmail.com";

      // Sender's email ID needs to be mentioned
      String from = "web@gmail.com";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try {
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("This is the Subject Line!");

         // Now set the actual message
         message.setText("This is actual message");

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      } catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

این برنامه را کامپایل و اجرا کنید تا یک ایمیل ساده ارسال شود −

خروجی


$ java SendEmail
Sent message successfully....

اگر می‌خواهید یک ایمیل را به چند دریافت کننده ارسال کنید، برای مشخص کردن چند شناسه ایمیل، از روش‌های زیر استفاده می‌شود −


void addRecipients(Message.RecipientType type, Address[] addresses)
   throws MessagingException

void افزودن_گیرنده‌ها(Message.RecipientType نوع, Address[] آدرسها)
   throws MessagingException

// File Name SendHTMLEmail.java

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendHTMLEmail {

   public static void main(String [] args) {
      // Recipient's email ID needs to be mentioned.
      String to = "abcd@gmail.com";

      // Sender's email ID needs to be mentioned
      String from = "web@gmail.com";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try {
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("This is the Subject Line!");

         // Send the actual HTML message, as big as you like
         message.setContent("<h1>This is actual message</h1>", "text/html");

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      } catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

این برنامه را کامپایل و اجرا کنید تا یک ایمیل HTML ارسال شود −

خروجی


$ java SendHTMLEmail
Sent message successfully....

ارسال پیوست در ایمیل

در اینجا یک نمونه برای ارسال یک ایمیل با پیوست از سیستم شما آورده شده است. در نظر گرفته شده است که localhost شما به اینترنت متصل است و قادر به ارسال یک ایمیل است.

نمونه


// File Name SendFileEmail.java

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendFileEmail {

   public static void main(String [] args) {     
      // Recipient's email ID needs to be mentioned.
      String to = "abcd@gmail.com";

      // Sender's email ID needs to be mentioned
      String from = "web@gmail.com";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try {
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("This is the Subject Line!");

         // Create the message part 
         BodyPart messageBodyPart = new MimeBodyPart();

         // Fill the message
         messageBodyPart.setText("This is message body");
         
         // Create a multipar message
         Multipart multipart = new MimeMultipart();

         // Set text message part
         multipart.addBodyPart(messageBodyPart);

         // Part two is attachment
         messageBodyPart = new MimeBodyPart();
         String filename = "file.txt";
         DataSource source = new FileDataSource(filename);
         messageBodyPart.setDataHandler(new DataHandler(source));
         messageBodyPart.setFileName(filename);
         multipart.addBodyPart(messageBodyPart);

         // Send the complete message parts
         message.setContent(multipart );

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      } catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

برای ارسال یک ایمیل HTML این برنامه را کامپایل و اجرا کنید −

خروجی


$ java SendFileEmail
Sent message successfully....

بخش تأیید هویت کاربر

اگر برای احراز هویت به سرور ایمیل نیاز به ارائه شناسه کاربری و رمز عبور دارید، می‌توانید این خواص را به شکل زیر تنظیم کنید −


props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");

بقیه مکانیزم ارسال ایمیل همانطور که در بالا توضیح داده شد، بدون تغییر باقی می‌ماند.