یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی
🎯 ثبت نام

آموزش ایمیل در Java Spring

Spring java mail

آموزش ایمیل Java Spring

فریمورک Spring کلاس ها و واسط های مفید زیادی برای ارسال و دریافت ایمیل ارائه کرده است. بسته org.springframework.mail، بسته ریشه (root package) است که پشتیبانی از ایمیل را در فریمورک Spring ارائه می کند.


API ایمیل Java Spring

کلاس ها و واسط ها برای پشتیبانی از ایمیل جاوا در فریمورک Spring به شرح زیر است :


spring with javamail api hierarchy

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، فایل های زیر را ایجاد کنید :

  1. MailMail.java
  2. applicationContext.xml
  3. 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 ایجاد کرده ایم. در ادامه باید مقادیر خصیصه های زیر را تعریف کنیم :

  1. host
  2. username
  3. password
  4. 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" ?>
 
         4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         5. xmlns:p="http://www.springframework.org/schema/p"
         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" ?>
   
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        • 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 مشابه آنچه که در بالا آمده است، هستند.

1399/01/26 1528 347
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...