آموزش جاوا - ارسال ایمیل
ارسال ایمیل با استفاده از برنامه جاوا به اندازه کافی ساده است، اما برای شروع باید 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");
بقیه مکانیزم ارسال ایمیل همانطور که در بالا توضیح داده شد، بدون تغییر باقی میماند.