java发送邮件&&使用HtmlEmail发送邮件

java原生发送qq邮箱

首先要有QQ邮箱的授权码,如果有就直接看代码。
1.登录QQ邮箱,找到设置
java发送邮件&&使用HtmlEmail发送邮件
2.选择账户选项,往下找到IMAP服务。
java发送邮件&&使用HtmlEmail发送邮件
3.开启服务获得授权码,或已经开启缺不知道,可以重新生成授权码。
java发送邮件&&使用HtmlEmail发送邮件

public static void main(String[] args) throws AddressException,MessagingException {
        Properties properties = new Properties();
        properties.put("mail.transport.protocol", "smtp");// 连接协议
        properties.put("mail.smtp.host", "smtp.qq.com");// 主机名
        properties.put("mail.smtp.port", 465);// 端口号
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.ssl.enable", "true");// 设置是否使用ssl安全连接 ---一般都使用
        properties.put("mail.debug", "true");// 设置是否显示debug信息 true 会在控制台显示相关信息
        // 得到回话对象
        Session session = Session.getInstance(properties);
        // 获取邮件对象
        Message message = new MimeMessage(session);
        // 设置发件人邮箱地址xxx
        message.setFrom(new InternetAddress("[email protected]"));
        // 设置多个收件人邮箱地址或一个收件人
        // message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("[email protected]"),new InternetAddress("[email protected]"),new InternetAddress("[email protected]")});
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));//一个收件人
        // 设置邮件标题
        message.setSubject("标题");
        // 设置邮件内容
        message.setText("这是一个QQ邮件");
        // 得到邮差对象
        Transport transport = session.getTransport();
        // 连接自己的邮箱账户,QQ邮箱授权码在QQ邮箱中**使用
        transport.connect("[email protected]", "QQ邮箱授权码");// 密码为QQ邮箱开通的stmp服务后得到的客户端授权码
        // 发送邮件
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }

如果我们想以HTML格式发送邮件,可以使用HtmlEmail来实现**

1.首先定义一个信封类

public class Envelope implements Serializable {
    //收件地址
    private String to;
    //邮件头
    private String subject;
    //邮件内容
    private Map<String, Object> cry;

    public Envelope(String to, String subject, Map<String, Object> cry) {
        this.to = to;
        this.subject = subject;
        this.cry = cry;
    }

    public String getTo() {
        return to;
    }

    public void setTo(String to) {
        this.to = to;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public Map<String, Object> getCry() {
        return cry;
    }

    public void setCry(Map<String, Object> cry) {
        this.cry = cry;
    }
}

2.定义发送邮件方法

public static void send2(final Envelope envelope) throws EmailException {
        //创建一个HtmlEmail对象
        HtmlEmail email = new HtmlEmail();
        //设置主机名
        email.setHostName("smtp.qq.com");
        //设置收件人
        email.addTo(envelope.getTo());
        //设置发送用户邮箱和邮件名称
        email.setFrom("[email protected]", envelope.getSubject());
        //连接发送邮箱
        email.setAuthentication("[email protected]", "QQ邮箱授权码");
        //邮件编码格式
        email.setCharset("UTF-8");
        //设置邮件头部
        email.setSubject(envelope.getSubject());
        //设置邮件内容,识别HTML标签
        email.setHtmlMsg("<div style=\"background-color: red\">邮件内容</div>");
        email.send();
    }

测试一下,看到结果。

@Test
    public void testEmail()throws Exception{
        Envelope envelope = new Envelope("[email protected]","邮件测试",new HashMap<>());
        EmailUtils.send2(envelope);
    }

java发送邮件&&使用HtmlEmail发送邮件