How do I send HTML email in Spring MVC?

后端 未结 6 823
[愿得一人]
[愿得一人] 2020-12-01 07:21

I have successfully sent simple email using this:

SimpleMailMessage mailMessage = new SimpleMailMessage();

mailMessage.setTo(\"someone@abc.com\");
mailMessa         


        
相关标签:
6条回答
  • 2020-12-01 07:50

    I don't think that SimpleMailMessage class has such options.

    I'm sure that you can do it with JavaMailSender and MimeMessagePreparator, because you need to set MIME content type for HTML.

    See this link for help:

    http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mail.html

    0 讨论(0)
  • 2020-12-01 07:51
    import javax.mail.internet.MimeMessage;
    import org.springframework.mail.javamail.MimeMessageHelper;
    
    MimeMessage mimeMessage = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, "utf-8");
    String htmlMsg = "<h3>Hello World!</h3>";
    //mimeMessage.setContent(htmlMsg, "text/html"); /** Use this or below line **/
    helper.setText(htmlMsg, true); // Use this or above line.
    helper.setTo("someone@abc.com");
    helper.setSubject("This is the test message for testing gmail smtp server using spring mail");
    helper.setFrom("abc@gmail.com");
    mailSender.send(mimeMessage);
    
    0 讨论(0)
  • 2020-12-01 07:51

    Class Level:

    public String sendEmailToUsers(String emailId,String subject, String name){
        String result =null;
        MimeMessage message =mailSender.createMimeMessage();
        try {
    
            MimeMessageHelper helper = new MimeMessageHelper(message, false, "utf-8");
            String htmlMsg = "<body style='border:2px solid black'>"
                        +"Your onetime password for registration is  " 
                            + "Please use this OTP to complete your new user registration."+
                              "OTP is confidential, do not share this  with anyone.</body>";
            message.setContent(htmlMsg, "text/html");
            helper.setTo(emailId);
            helper.setSubject(subject);
            result="success";
            mailSender.send(message);
        } catch (MessagingException e) {
            throw new MailParseException(e);
        }finally {
            if(result !="success"){
                result="fail";
            }
        }
    
        return result;
    
    }
    

    XML Level:

        <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.gmail.com" />
        <property name="port" value="587" />
        <property name="username" value="********@gmail.com" />
        <property name="password" value="********" />
        <property name="javaMailProperties">
            <props>
                <prop key="mail.transport.protocol">smtp</prop>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
            </props>
        </property>
    </bean>
    
    0 讨论(0)
  • 2020-12-01 07:55

    In Spring this should be done this way:

    Your email class:

    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeMessage;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    
    public class HTMLMail
    {
        private JavaMailSender mailSender;
    
    
        public void setMailSender(JavaMailSender mailSender) {
            this.mailSender = mailSender;
        }
    
        public void sendMail(String from, String to, String subject, String msg) {
            try {
    
                MimeMessage message = mailSender.createMimeMessage();
    
                message.setSubject(subject);
                MimeMessageHelper helper;
                helper = new MimeMessageHelper(message, true);
                helper.setFrom(from);
                helper.setTo(to);
                helper.setText(msg, true);
                mailSender.send(message);
            } catch (MessagingException ex) {
                Logger.getLogger(HTMLMail.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    
    
    }
    

    beans:(Spring-Mail.xml)

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    
        <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
            <property name="host" value="smtp.gmail.com" />
            <property name="port" value="587" />
            <property name="username" value="youremail@gmail.com" />
            <property name="password" value="yourpassword" />
    
            <property name="javaMailProperties">
                <props>
                    <prop key="mail.smtp.auth">true</prop>
                    <prop key="mail.smtp.starttls.enable">true</prop>
                </props>
            </property>
        </bean>
        <bean id="htmlMail" class="com.mohi.common.HTMLMail">
            <property name="mailSender" ref="mailSender" />
        </bean>
    </beans>
    

    Usage:

    ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Mail.xml");
    
            HTMLMail mm = (HTMLMail) context.getBean("htmlMail");
            String html="<p>Hi!</p><a href=\"google.com\">Link text</a>";
        mm.sendMail("sender@gmail.com",
                "receiver@gmail.com",
                "test html email",
                html);
    

    Full example here .

    0 讨论(0)
  • 2020-12-01 07:58

    You might be interested in checking this article: "Rich HTML email in Spring with Thymeleaf" http://www.thymeleaf.org/doc/articles/springmail.html

    It uses Thymeleaf as a templating view layer, but the concepts and Spring-specific code explained there are common to all Spring applications.

    Besides, it has a companion example application which source code you can use as a base for your needs.

    Regards, Daniel.

    0 讨论(0)
  • 2020-12-01 08:04
    String emailMessage = report.toString();
                Map velocityContext = new HashMap();
                velocityContext.put("firstName", "messi");
                velocityContext.put("Date",date );  
                velocityContext.put("Exception",emailMessage );
                String text = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "VelocityTemplate.vm","UTF-8", velocityContext);
                MimeMessage message = mailSender.createMimeMessage();
                MimeMessageHelper helper;
                helper = new MimeMessageHelper(message, true);
                helper.setTo("abc@gmail.com");
                helper.setFrom("xyz@gmail.com");
                helper.setSubject("new email");
                helper.setText(text, true);         
                mailSender.send(message);
    
    0 讨论(0)
提交回复
热议问题