مشخصات مقاله
آموزش ایمیل در Java Spring
Spring java mail
آموزش ایمیل Java Spring
فریمورک Spring کلاس ها و واسط های مفید زیادی برای ارسال و دریافت ایمیل ارائه کرده است. بسته org.springframework.mail، بسته ریشه (root package) است که پشتیبانی از ایمیل را در فریمورک Spring ارائه می کند.
API ایمیل Java Spring
کلاس ها و واسط ها برای پشتیبانی از ایمیل جاوا در فریمورک Spring به شرح زیر است :

1- واسط MailSender :
واسط ریشه است و عملیات پایه برای ارسال ایمیل های ساده را ارائه می دهد.
2- واسط JavaMailSender :
زیر واسط MailSender است و از پیام های MIME پشتیبانی می کند. معمولا همراه با کلاس MimeMessageHelper برای ایجاد پیام mime ایمیل جاوا (JavaMail MimeMessage) با پیوست، مورد استفاده قرار می گیرد. فریمورک Spring مکانیزم MimeMessagePreparator را برای استفاده از این واسط توصیه می کند.
3- کلاس JavaMailSenderImpl :
پیاده سازی واسط JavaMailSender را ارائه می دهد. و از پیام های mime ایمیل جاوا (JavaMail MimeMessages) و پیام های ایمیل ساده Spring (Spring SimpleMailMessages) پشتیبانی می کند.
4- کلاس SimpleMailMessage :
برای ایجاد یک پیام ایمیل ساده شامل از، به، cc، عنوان و متن پیام مورد استفاده قرار می گیرد.
5- واسط MimeMessagePreparator :
یک واسط باز فراخوانی برای آماده سازی پیام های mime ایمیل جاوا است.
6- کلاس MimeMessageHelper :
کلاس کمکی برای ایجاد پیام mime است. از عناصر خطی(inline) مانند تصاویر، پیوست های عادی ایمیل و محتویات متن html پشتیبانی می کند.
مثال ارسال ایمیل در Spring توسط سرور Gmail
مثال ارسال ایمیل در Spring توسط سرور Gmail
در این مثال، از دو کلاس ایمیل Spring استفاده می کنیم.
1- SimpleMailMessage برای ایجاد پیام.
2- JavaMailSenderImpl برای ارسال پیام.
برای ارسال ایمیل از طریق فریمورک Spring، فایل های زیر را ایجاد کنید :
- MailMail.java
- applicationContext.xml
- Test.java
MailMail.java :
یک کلاس ساده است که خصیصه mailSender را تعریف می کند. شی MailSender در زمان اجرا به این خصیصه ارائه می شود. در متد sendMail() ، یک نمونه از SimpleMailMessage می سازیم و اطلاعاتی از جمله از، به، عنوان و پیام را درون این شی ذخیره می کنیم. در اینجا متد send() از واسط MailSender برای ارسال ایمیل ساده مورد استفاده قرار گرفته است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package com.javatpoint; import org.springframework.mail.MailSender; import org.springframework.mail.SimpleMailMessage; public class MailMail{ private MailSender mailSender; public void setMailSender(MailSender mailSender) { this .mailSender = mailSender; } public void sendMail(String from, String to, String subject, String msg) { //creating message SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(msg); //sending message mailSender.send(message); } } <button></button> |
applicationContext.xml :
در این فایل xml، یک bean برای کلاس JavaMailSenderImpl ایجاد کرده ایم. در ادامه باید مقادیر خصیصه های زیر را تعریف کنیم :
- host
- username
- password
- javaMailProperties
همچنین برای کلاس MailMail با خصیصه mailSender ، bean ایجاد می کنیم. حال نمونه کلاس JavaMailSenderImpl در خصیصه mailSender از کلاس MailMail قرار می گیرد.
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 | < ? xml version = "1.0" encoding = "UTF-8" ?> 6. xsi:schemaLocation="http://www.springframework.org/schema/beans < bean id = "mailSender" class = "org.springframework.mail.javamail.JavaMailSenderImpl" > < property name = "host" value = "smtp.gmail.com" /> < property name = "username" value = "yourgmailid@gmail.com" /> < property name = "password" value = "yourgmailpassword" /> < property name = "javaMailProperties" > < props > < prop key = "mail.smtp.auth" >true< / prop > < prop key = "mail.smtp.socketFactory.port" >465 < prop key = "mail.smtp.socketFactory.class" >javax.net.ssl.SSLSocketFactory< / prop > < prop key = "mail.smtp.port" >465< / prop > < / props > < / property > < / bean > < bean id = "mailMail" class = "com.javatpoint.MailMail" > < property name = "mailSender" ref = "mailSender" /> < / bean > < / beans > < button ></ button > |
Test.java :
این کلاس bean مربوط به mailMail را از فایل applicationContext.xml می گیرد و متد sendMail از کلاس MailMail را فراوانی می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package com.javatpoint; import org.springframework.beans.factory.*; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.*; public class Test { public static void main(String[] args) { Resource r= new ClassPathResource( "applicationContext.xml" ); BeanFactory b= new XmlBeanFactory(r); MailMail m=(MailMail)b.getBean( "mailMail" ); String sender= "sendergmailid@gmail.com" ; //write here sender gmail id String receiver= "receiveremailid@gmail.com" ; //write here receiver id m.sendMail(sender,receiver, "hi" , "welcome" ); System.out.println( "success" ); } } <button></button> |
نحوه اجرای این مثال
از فایل applicationContext.xml یک نمونه از Marshaller می گیرد و متد marshal را فراخوانی میکند.
- فایل های jar مربوط به Spring برای هسته و ایمیل جاوا را بارگذاری کنید.
- mail.jar و activation.jar را بارگذاری کنید.
- در فایل applicationContext.xml ، خصیصه نام کاربری و رمز عبور را تغییر دهید و شناسه و رمز Gmail خود را مشخص کنید.
- در فایل Test.java شناسه Gmail فرستنده و شناسه گیرنده ایمیل را تغییر دهید.
- کلاس test را کامپایل و اجرا کنید.
مثال ارسال ایمیل در Spring با سرور فراهم شده توسط ارائه دهنده میزبان
اگر برای خود سایت دارید، میتوانید از سرور ایمیل خود استفاده کنید. کلاس های MailMail.java و test مشابه خواهند بود. تنها نیاز به تغییر شناسه ایمیل فرستنده در فایل Test.java دارید و در فایل applicationContext.xml ، تغییراتی لازم است. در فایل applicationContext.xml ، از موارد زیر استفاده می کنیم :
- mail.unitedsquaad.com برای نام میزبان. آن را تغییر دهید.
- a@unitedsquaad.com برای نام کاربری. آن را تغییر دهید.
- Xxxxxبرای رمز عبور. آن را تغییر دهید.
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 | < ? xml version = "1.0" encoding = "UTF-8" ?> • xsi:schemaLocation="http://www.springframework.org/schema/beans < bean id = "mailSender" class = "org.springframework.mail.javamail.JavaMailSenderImpl" > < property name = "host" value = "mail.unitedsquaad.com" /> < property name = "username" value = "a@unitedsquaad.com" /> < property name = "password" value = "xxxxx" /> < property name = "javaMailProperties" > < props > < prop key = "mail.smtp.auth" >true< / prop > < / props > < / property > < / bean > < bean id = "mailMail" class = "MailMail" > < property name = "mailSender" ref = "mailSender" /> < / bean > < / beans > < button ></ button > |
ارسال ایمیل به چندین گیرنده
با کمک کلاس SimpleMailMessage ، میتوان به چندین گیرنده ایمیل فرستاد. از متد setTo(String[] receivers) از کلاس SimpleMailMessage ، برای ارسال پیام به چندین گیرنده استفاده می شود. یک کد ساده را بررسی می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 | .... public void sendMail(String from, String[] to, String subject, String msg) { //creating message SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); //passing array of recipients message.setSubject(subject); message.setText(msg); //sending message mailSender.send(message); } ... <button></button> |
مثال MimeMessagePreparator در Spring
با کمک واسط MimeMessagePreparator میتوان پیام mime فرستاد. یک متد prepare دارد (MimeMessage message). کدی ساده برای ارسال پیام mime را می بینیم.
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 | import javax.mail.Message; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessagePreparator; public class MailMail{ private JavaMailSender mailSender; public void setMailSender(JavaMailSender mailSender) { this .mailSender = mailSender; } public void sendMail( final String from, final String to, final String subject, final String msg) { MimeMessagePreparator messagePreparator = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws Exception { mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); mimeMessage.setFrom( new InternetAddress(from)); mimeMessage.setSubject(subject); mimeMessage.setText(msg); } }; mailSender.send(messagePreparator); } } <button></button> |
فایل های applicationContext.xml و Test.java مشابه آنچه که در بالا آمده است، هستند.
مثال ارسال پیوست توسط MimeMessageHelper در Spring
با کمک کلاس MimeMessageHelper میتوان در Spring پیام mime با پیوست ارسال کرد. توصیه می شود از MimeMessagePreparatorاستفاده کنید. کدی ساده از ارسال پیام mime با پیوست (تصویر) را می بینیم.
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 | import java.io.File; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; public class MailMail{ private JavaMailSender mailSender; public void setMailSender(JavaMailSender mailSender) { this .mailSender = mailSender; } public void sendMail( final String from, final String to, final String subject, final String msg) { try { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true ); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(msg); // attach the file FileSystemResource file = new FileSystemResource( new File( "c:/rr.jpg" )); helper.addAttachment( "mybrothermage.jpg" , file); //image will be sent by this name mailSender.send(message); } catch (MessagingException e){e.printStackTrace();} } } <button></button> |
فایل های applicationContext.xml و Test.java مشابه آنچه که در بالا آمده است، هستند.