如何在Spring MVC中发送HTML电子邮件?

mxg2im7a  于 2023-05-16  发布在  Spring
关注(0)|答案(7)|浏览(183)

我已经成功地发送了简单的电子邮件使用这个:

SimpleMailMessage mailMessage = new SimpleMailMessage();

mailMessage.setTo("someone@abc.example");
mailMessage.setSubject("This is the test message for testing gmail smtp server using spring mail");
mailMessage.setFrom("abc@gmail.com");
mailMessage.setText("This is the test message for testing gmail smtp server using spring mail. \n" +
        "Thanks \n Regards \n Saurabh ");
mailSender.send(mailMessage);

什么设置我需要改变,以便我可以发送HTML电子邮件

h6my8fg2

h6my8fg21#

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.example");
helper.setSubject("This is the test message for testing gmail smtp server using spring mail");
helper.setFrom("abc@gmail.com");
mailSender.send(mimeMessage);
a5g8bdjr

a5g8bdjr2#

在Spring中,应该这样做:

您的邮件类别:

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>

用法:

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);

完整示例here

b4wnujal

b4wnujal3#

我不认为SimpleMailMessage类有这样的选项。
我相信你可以用JavaMailSender和MimeMessagePreparator来做,因为你需要为HTML设置MIME内容类型。
请参阅此链接以获取帮助:
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mail.html

58wvjzkj

58wvjzkj4#

您可能有兴趣查看这篇文章:***“Rich HTML email in Spring with Thymeleaf”***http://www.thymeleaf.org/doc/articles/springmail.html
它使用Thymeleaf作为模板视图层,但其中解释的概念和Spring特定的代码对所有Spring应用程序都是通用的。
此外,它还有一个配套的示例应用程序,您可以将其源代码用作您需要的基础。
你好丹尼尔

dhxwm5r4

dhxwm5r45#

班级级别:

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级别:

<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>
o7jaxewo

o7jaxewo6#

试试这个

public class Emailer{
@Autowired
JavaMailSender mailSender;

public void sendMail() throws MessagingException {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, "utf-8");
    helper.setFrom("me@mymail.com");
    helper.setTo(new InternetAddress[] {
            new InternetAddress("a@b.com"),
            new InternetAddress("c@d.com")
            });
    helper.setSubject("my subject");
    
    StringBuffer sb = new StringBuffer();
    sb.append("<table>");
    for (BlogDto dto:newBlog) {
        sb.append("<tr>");
        sb.append("<td>");
        sb.append("Cell");
        sb.append("</td>");
        sb.append("</tr>");
    }
    sb.append("</table>");
    this.mailSender.send(message);
    this.logger.info("Email sent");
    return;
}

}

1l5u6lss

1l5u6lss7#

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);

相关问题