با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن. و کاربرانی که دوره کامل آموزش برنامه نویسی جاوا را دنبال می کنند. یکی از قابلیت هایی که اغلب برنامه های تحت شبکه دارا می باشند قابلیت ارسال و دریافت ایمیل است. جاوا نیز ابزار و زمینه ی لازم را برای فراهم کردن قابلیت ارسال و دریافت ایمیل در یک برنامه را فراهم می کند. پیاده سازی و استفاده از مزایای ارسال و دریافت ایمیل در جاوا به سادگی امکان پذیر است. اما برای شروع شما باید JavaMail API و Java Activation Framework (JAF) را بر روی دستگاه خود نصب کنید. برای آشنایی با قابلیت ارسال ایمیل در جاوا در ادامه ی مباحث این بخش با ما همراه باشید.
در ادامه ی این آموزش چگونگی دریافت و ارسال ایمیل در جاوا را بررسی خواهیم کرد.
قبل از هر چیز ابتدا اقدامات زیر را انجام دهید:
در این بخش ما به یک مثال ساده برای درک چگونگی ارسال ایمیل در جاوا می پردازیم.
فرض بر این است که localhost شما به اینترنت متصل است و به اندازه کافی قادر به ارسال ایمیل است.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { String to = "abcd@gmail.com"; String from = "web@gmail.com"; String host = "localhost"; Properties properties = System.getProperties(); properties.setProperty("mail.smtp.host", host); Session session = Session.getDefaultInstance(properties); try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject("This is the Subject Line!"); message.setText("This is actual message"); Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } } |
برای فوق را بصورت زیر کامپایل و اجرا کنید:
1 2 | $ java SendEmail Sent message successfully.... |
اگر می خواهید که یک ایمیل را به چندین گیرنده ارسال کنید، بصورت زیر عمل کنید:
1 2 | void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException |
تشریح پارامترهای فوق:
این پارامتر می تواند برای تنظیم TO، CC یا BCC استفاده شود.
این یک آرایه از شناسه ایمیل است. در هنگام مشخص کردن شناسه های ایمیل شما باید از متد () InternetAddress استفاده کنید.
در این بخش به مثالی از چگونگی ارسال یک ایمیل HTML e-mail از دستگاه فعلی رایانه می پردازیم.
فرض بر این است که localhost شما به اینترنت متصل است و به اندازه کافی قادر به ارسال ایمیل است.
این مثال بسیار شبیه به مثال قبلی است، به جز اینکه در اینجا ما از متد () setContent برای تنظیم محتویاتی که آرگومان دوم “text / html” است، برای مشخص کردن محتوای HTML در پیام استفاده می کنیم.
با استفاده از این مثال، شما می توانید محتویات HTML را که مایلید را ارسال کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendHTMLEmail { public static void main(String [] args) { String to = "abcd@gmail.com"; String from = "web@gmail.com"; String host = "localhost"; Properties properties = System.getProperties(); properties.setProperty("mail.smtp.host", host); Session session = Session.getDefaultInstance(properties); try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject("This is the Subject Line!"); message.setContent("<h1>This is actual message</h1>", "text/html"); Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } } |
برنامه ی فوق را بصورت زیر کامپایل و اجرا کنید:
1 2 | $ java SendHTMLEmail Sent message successfully.... |
در این بخش به مثالی از چگونگی ارسال ایمیل به همراه یک ضمیمه می پردازیم.
در اینجا فرض می شود که localhost شما به اینترنت متصل است و به اندازه کافی قادر به ارسال ایمیل است.
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendFileEmail { public static void main(String [] args) { String to = "abcd@gmail.com"; String from = "web@gmail.com"; String host = "localhost"; Properties properties = System.getProperties(); properties.setProperty("mail.smtp.host", host); Session session = Session.getDefaultInstance(properties); try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject("This is the Subject Line!"); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("This is message body"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); message.setContent(multipart ); Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException mex) { mex.printStackTrace(); } } } |
کد فوق را بصورت زیر کامپایل و اجرا کنید:
1 2 | $ java SendFileEmail Sent message successfully.... |
در صورتی که نیاز به ارائه شناسه کاربری و رمز عبور به سرور ایمیل برای تأیید هویت باشد، می توانید این ویژگی ها را به صورت زیر تنظیم کنید:
1 2 | props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd"); |
سایر اقدامات لازم برای ارسال ایمیل همانند مثال قبلی است.
همانطور که اشاره شده پس از فراهم کردن بستر شبکه در جاوا برای برنامه های مختلف نوشته شده در جاوا، یکی از ویژگی هایی که معمولا به آن نیاز پیدا می کنید قابلیت دریافت و ارسال ایمیل در جاوا می باشد، از این رو مباحث این آموزش را به چگونگی ارسال ایمیل در جاوا اختصاص دادیم.