java使用javax.mail进行免费的邮件发送

Posted

tags:

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

1. 建议发送方使用阿里云邮箱https://mail.aliyun.com/,阿里云默认是开启个人邮箱pop3、smtp协议的,所以无需在阿里云邮箱里设置,pop3、smtp的密码默认邮箱登录密码,没有可以去申请一个。

如果要使用别的邮箱,可以自行查询对应邮箱怎么开启smtp协议。

2.pom.xml中引入javax.mail的jar包,这里使用1.4.7版本。

        <!-- javax mail -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>

3.新建MailSend类:

package com.jarfk.util.email;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

/**
 * Created by Administrator on 2017/9/29 0029.
 */
public class MailSend {
    private static final String EMAIL_OWNER_ADDR_HOST = "smtp.aliyun.com"; //smtp.163.com  smtp.aliyun.com  smtp.qq.com
    private static final String EMAIL_OWNER_ADDR = "xxx@aliyun.com";
    private static final String EMAIL_OWNER_ADDR_PASS = "xxx";

    public static void sendMail(String title, String email, String content) throws MessagingException {
        Properties prop = new Properties();
        prop.put("mail.host", EMAIL_OWNER_ADDR_HOST);
        prop.put("mail.transport.protocol", "smtp");
        prop.put("mail.smtp.auth", "true");
        //如果不加下面的这行代码 windows下正常,linux环境下发送失败,解决:http://www.cnblogs.com/Harold-Hua/p/7029117.html
        prop.setProperty("mail.smtp.ssl.enable", "true");
        //使用java发送邮件5步骤
        //1.创建sesssion
        Session session = Session.getInstance(prop);
        //开启session的调试模式,可以查看当前邮件发送状态
        //session.setDebug(true);

        //2.通过session获取Transport对象(发送邮件的核心API)
        Transport ts = session.getTransport();
        //3.通过邮件用户名密码链接,阿里云默认是开启个人邮箱pop3、smtp协议的,所以无需在阿里云邮箱里设置
        ts.connect(EMAIL_OWNER_ADDR, EMAIL_OWNER_ADDR_PASS);

        //4.创建邮件
        //创建邮件对象
        MimeMessage mm = new MimeMessage(session);
        //设置发件人
        mm.setFrom(new InternetAddress(EMAIL_OWNER_ADDR));
        //设置收件人
        mm.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
        //设置抄送人
        //mm.setRecipient(Message.RecipientType.CC, new InternetAddress("XXXX@qq.com"));

        //mm.setSubject("吸引力注册邮件");
        mm.setSubject(title);

        //mm.setContent("您的注册验证码为:<b style=\\"color:blue;\\">0123</b>", "text/html;charset=utf-8");
        mm.setContent(content, "text/html;charset=utf-8");

        // true表示开始附件模式 -----------------------------------------------------------------------
        /*MimeMessageHelper messageHelper = new MimeMessageHelper(mm, true, "utf-8");
        // 设置收件人,寄件人
        messageHelper.setTo(email);
        messageHelper.setFrom(EMAIL_OWNER_ADDR);
        messageHelper.setSubject(title);
        // true 表示启动HTML格式的邮件
        messageHelper.setText(content, true);

        FileSystemResource file1 = new FileSystemResource(new File("d:/rongke.log"));
        FileSystemResource file2 = new FileSystemResource(new File("d:/新建文本文档.txt"));
        // 添加2个附件
        messageHelper.addAttachment("rongke.log", file1);
        try {
            //附件名有中文可能出现乱码
            messageHelper.addAttachment(MimeUtility.encodeWord("新建文本文档.txt"), file2);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            throw new MessagingException();
        }*/
        //-------------------------------------------------------------------------------------------
        //5.发送电子邮件

        ts.sendMessage(mm, mm.getAllRecipients());
    }

    public static void main(String[] args) throws MessagingException {
        //sendMail("吸引力注册邮件", "xxx@qq.com", "您的注册验证码为:<b style=\\"color:blue;\\">651899</b>");
        sendMail("吸引力", "xxx@qq.com", "spring boot 邮件测试");
    }
}

 

以上是关于java使用javax.mail进行免费的邮件发送的主要内容,如果未能解决你的问题,请参考以下文章

Java使用javax.mail.jar发送邮件并同意发送附件

我可以使用 javax.mail 进行后台电子邮件发送吗? [复制]

使用javax.mail实现邮件的发送

使用javax.mail实现邮件的发送

在 javax.mail 中发送邮件,无需身份验证

java 通过javax.mail发送电子邮件