使用Spring从Web应用程序发送邮件

Kha*_*ifa 2 java email spring-mvc

在我的Web应用程序中,我想发送邮件.有没有办法用Spring MVC做到这一点?什么是最好的方法呢?

谢谢

Xav*_*ica 5

您可以使用Spring的邮件抽象层轻松发送电子邮件.在applicationContext.xml中定义以下bean

<!-- Mail sender bean -->
<bean id="mailSender" 
        class="org.springframework.mail.javamail.JavaMailSenderImpl">          
<property name="host" value="my.smtp.host" />
<property name="username" value="my_username" />
<property name="password" value="my_password" />
</bean>

<!-- Simple mail template -->
<bean id="basicEmailMessage" 
        class="org.springframework.mail.SimpleMailMessage">
    <property name="from">
        <value>whateverSenderAddress</value>
     </property>
 </bean>

 <!-- Your service with sender and template injected -->
 <bean id="mySendMailService" 
        class="mypackage.MySendMailService">
    <property name="mailSender">
    <ref bean="mailSender" />
    </property>
    <property name="emailTemplate">
        <ref bean="basicEmailMessage" />
    </property>
 </bean>
Run Code Online (Sandbox Code Playgroud)

然后,在mypackage.MySendMailService:

public class SendMailService {
    private MailSender mailSender;
    private SimpleMailMessage emailTemplate;
    public void sendEmail(String to, String from, String subject, String body) 
                         throws MailException {
        SimpleMailMessage message = new SimpleMailMessage(this.emailTemplate);
        message.setTo(to);
        message.setFrom(from);
        message.setSubject(subject);
        message.setText(body);
        mailSender.send(message);
    }

    public void setMailSender(MailSender mailSender) {
        this.mailSender = mailSender;
    }
    public void setEmailTemplate(SimpleMailMessage emailTemplate) {
        this.emailTemplate = emailTemplate;
    }
}
Run Code Online (Sandbox Code Playgroud)