使用javax.mail实现邮件发送

邮件发送的大致过程

  • 1、构建一个继承自javax.mail. Authenticator的具体类,并重写里面的getPasswordAuthentication()方法。此类是用作登录校验的,以确保你对该邮箱有发送邮件的权利。
  • 2、构建一个properties文件,该文件中存放SMTP服务器地址等参数。
  • 3、通过构建的properties文件和javax.mail. Authenticator具体类来创建一个javax.mail. Session。Session的创建,就相当于登录邮箱一样。剩下的自然就是新建邮件。
  • 4、构建邮件内容,一般是javax.mail.internet. MimeMessage对象,并指定发送人,收信人,主题,内容等等。
  • 5、使用javax.mail. Transport工具类发送邮

需要maven的依赖

        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.5</version>
        </dependency>
   private static void send(String mailServer, final String loginAccount, final String loginAuthCode, String sender,
                             String[] recipients, String emailSubject, String emailContent, String emailContentType) {
        try {
            //跟smtp服务器建立一个连接
            Properties p = new Properties();
            //设置邮件服务器主机名
            p.setProperty("mail.host", mailServer);
            //发送服务器需要身份验证,要采用指定用户名密码的方式去认证
            p.setProperty("mail.smtp.auth", "true");
            //发送邮件协议名称
            p.setProperty("mail.transport.protocol", "smtp");

            //开启SSL加密,否则会失败
            MailSSLSocketFactory ssl = new MailSSLSocketFactory();
            ssl.setTrustAllHosts(true);
            p.put("mail.smtp.ssl.enable", "true");
            p.put("mail.smtp.ssl.socketFactory", ssl);

            // 创建session
            Session session = Session.getDefaultInstance(p, new Authenticator() {
                protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
                    //loginAccount:邮箱账号  loginAuthCOde:邮箱授权码
                    javax.mail.PasswordAuthentication pa = new PasswordAuthentication(loginAccount, loginAuthCode);
                    return pa;
                }
            });

            //设置打开调试状态
            session.setDebug(true);

            //可以发送几封邮件:可以在这里 for循环多次
            //声明一个Message对象(代表一封邮件),从session中创建
            MimeMessage msg = new MimeMessage(session);
            //邮件信息封装
            //发件人
            msg.setFrom(new InternetAddress(sender));

            //收件人:可以多个
            //一个的收件人
            InternetAddress[] receptientsEmail = new InternetAddress[recipients.length];
            for (int i = 0; i < recipients.length; i++) {
                receptientsEmail[i] = new InternetAddress(recipients[i]);
            }
            //多个收件人
            msg.setRecipients(RecipientType.TO, receptientsEmail);

            //邮件的主题
            msg.setSubject(emailSubject);
            //邮件的内容
            msg.setContent(emailContent, emailContentType);//发html格式的文本
            //发送动作
            Transport.send(msg);
        } catch (Exception e) {
            log.debug("邮件发送失败");
        }
        log.debug("邮件发送成功");
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值