前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java发送邮件案例

Java发送邮件案例

作者头像
小诸葛
发布2020-04-14 15:50:28
1.1K0
发布2020-04-14 15:50:28
举报
文章被收录于专栏:方法论方法论

准备

01

前言

在日常开发中,有时会遇到向用户发送邮件的场景,例如发送注册验证码(现在基本都是发手机验证码了)、邀请链接,有时也会遇到发送带附件的邮件等业务场景。本案例以Java发送邮件为例对这些功能做一整理,希望能够对大家有所帮助。

1.代码程序发送邮件原理

首先我们先了解一下用程序实现发送邮件的原理:当我们试图用代码程序发送邮件时,我们的程序就相当的于一个邮件客户端,也就是说这个程序可以帮我们写、发邮件,那么这个客户端要发送邮件必然需要发送者的邮箱地址、密码,以及收件者的邮箱地址,为了安全起见,一般邮箱不会直接使用发送者的密码,而是使用一个授权码代替密码。

2.配置qq邮箱客户端

要实现客户端发送邮件首先需要开启IMAP/SMTP服务,只有开启这个服务,才能使得我们的邮箱具有使用客户端发送邮件的功能。在QQ邮箱中,需要在设置->帐户中开启IMAP/SMTP服务,如图1-1所示。

通过这样配置就可以获取到授权码了。

开发

1.引入maven依赖

代码语言:javascript
复制
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.6</version>
        </dependency>

2.发邮件代码

代码语言:javascript
复制
    public static void sendSimpleMessage(String receiveMail,String message) throws Exception{
        //跟smtp服务器建立一个连接
        Properties p = new Properties();
        // 开启debug调试,以便在控制台查看MAIL
        p.setProperty("mail.debug", "true");
        p.setProperty("mail.host", "smtp.qq.com");//指定邮件服务器,默认端口 25
        p.setProperty("mail.smtp.auth", "true");//要采用指定用户名密码的方式去认证
        // 发送邮件协议名称
        p.setProperty("mail.transport.protocol", "smtp");
        // 开启SSL加密,否则会失败
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        p.put("mail.smtp.ssl.enable", "true");
        p.put("mail.smtp.ssl.socketFactory", sf);
        // 创建session
        Session session = Session.getInstance(p);
        // 通过session得到transport对象
        Transport ts = session.getTransport();

        // 连接邮件服务器:邮箱类型,帐号,授权码代替密码(更安全)
        // 后面的字符是授权码,不能用qq密码
        ts.connect("smtp.qq.com", "469757429@qq.com", "此处填写授权码");

        //声明一个Message对象(代表一封邮件),从session中创建
        MimeMessage msg = new MimeMessage(session);
        //邮件信息封装
        //1发件人
        msg.setFrom( new InternetAddress("469757429@qq.com") );
        //2收件人
        msg.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveMail) );
        //3邮件内容:主题、内容
        msg.setSubject("您好!测试邮件已发送至您的邮箱,请留意查收!");

        //添加附件部分
        //邮件内容部分1---文本内容
        MimeBodyPart body0 = new MimeBodyPart(); //邮件中的文字部分
        body0.setContent("<p>" + message + "</p><p>感谢您对海博工作室的支持!</p>","text/html;charset=utf-8");

        //把上面的2部分组装在一起,设置到msg中
        MimeMultipart mm = new MimeMultipart();
        mm.addBodyPart(body0);
        msg.setContent(mm);

        // 发送邮件
        ts.sendMessage(msg,msg.getAllRecipients());
        ts.close();
    }

3.编写测试类并运行

代码语言:javascript
复制
    @Test
    public void testSendMessage() {
        try{
            MailUtil.sendSimpleMessage("2370775541@qq.com","测试发邮件。");
        }catch (Exception e){
            e.printStackTrace();
        }
    }

测试结果:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小诸葛的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档