java使用smtp发送html格式邮件

Posted 派大星敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java使用smtp发送html格式邮件相关的知识,希望对你有一定的参考价值。

java 使用 smtf 发送html格式 邮件

Smtp邮件篇

								java发送邮件

第一步

1.以网易邮箱为例,首先需要授权邮箱账号可以支持smtp;

  1. 开启之后我们需要生成邮箱第三方登陆的授权码,完成之后把生成后的授权码保存下来,下一步要用;

第二步

在我们的配置文件中配置发送邮件

spring:  
  mail:
    host:  smtp.163.com
    password: 'xxxx'
    username: k18360195948@163.com
    #port: 端口号
    default-encoding: UTF-8
    properties:
      mail.smtp.socketFactory.fallback: true
      mail.smtp.starttls.enable: true

需要注意的是host对应的是自己邮箱的smtp服务器
网易邮箱是:smtp.163.com
Office邮箱是:smtp.office365.com

切记password:对应的不是邮箱密码,而是上一步当中的授权码

接着导入需要的依赖在pom文件中

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

第三步

创建发送邮件类,以下是我测试用的demo;

@Component
public class SmtpMessageUtils {
    @Autowired
    private JavaMailSender mailSender; //自动注入的Bean

    @Value("${spring.mail.username}")
    private String userName; //读取配置文件中的参数

    /**
     * 普通邮件发送
     * @throws MessagingException
     */
    public void sendSimpleMail1() throws MessagingException {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(userName);//发件邮箱
        message.setTo("k18360195948@163.com"); //收件邮箱
        message.setSubject("阿乐的测试邮箱");//标题
        message.setText("hello");//内容
        mailSender.send(message);
    }

    public void sendSimpleMail(String context,String email) throws MessagingException {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(userName);
        message.setTo(email); //发送邮
        message.setSubject("[阿乐的测试]");
        message.setText(context);
        mailSender.send(message);
    }

    /**
     * 发送html
     */
    public void send(){
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper;
        try {
            helper = new MimeMessageHelper(mimeMessage, true);
            helper.setFrom(userName);
            helper.setTo("2746680956@qq.com");
            helper.setSubject("title");//主题
            mimeMessage.setContent("<!DOCTYPE html>\\n" +
                            "<html lang=\\"en\\">\\n" +
                            "<head>\\n" +
                            "    <meta charset=\\"UTF-8\\">\\n" +
                            "    <meta http-equiv=\\"X-UA-Compatible\\" content=\\"IE=edge\\">\\n" +
                            "    <meta name=\\"viewport\\" content=\\"width=device-width, initial-scale=1.0\\">\\n" +
                            "    <title>Document</title>\\n" +
                            "</head>\\n" +
                            "<body>\\n" +
                            "    <img src=\\"https://dpay-images.dhamecha.com/dhamecha_log.png\\">\\n" +
                            "    <p>hello,这是阿乐的测试信息,可以调整html内容为自己想要的邮箱格式模板..</p>\\n" +
                            "    \\n" +
                            "</body>\\n" +
                            "</html>"
                    , "text/html ;charset=gbk");
            mailSender.send(mimeMessage);
        } catch (MessagingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }

}

亲测可用,让我们一起看下测试结果吧
这是普通邮件的测试结果:

这是发送html的测试结果:

如果发送邮件出现了错误可以访问以下链接:网易邮箱常见错误与原因

感谢阅读!

以上是关于java使用smtp发送html格式邮件的主要内容,如果未能解决你的问题,请参考以下文章

java使用smtp发送html格式邮件

java使用smtp发送html格式邮件

PEAR 邮件 SMTP/MIME 和 HTML 格式

Python SMTP发送邮件Ⅱ

关于java使用网易服务器smtp.163.com发送邮件,连接失败的问题

python 发邮件