发送邮件工具类EmailKit

本文介绍了一种使用Java实现邮件发送的方法,通过配置SMTP服务器并利用MimeMessage类来构造和发送邮件。文章详细展示了如何设置邮件的发件人、收件人、主题及内容,并实现了邮件正文的HTML格式化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、到相关邮箱服务器开通smtp等功能

二、代码编写


import java.util.Date;
import java.util.Properties;

import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;

public class EmailKit {

    /**
     * FIXME smtp地址需改成配置项,邮件正文代码略微复杂应可简化
     * @param toEmail 目标邮箱
     * @param title 邮件主题
     * @param content 邮件内容
     */
    public static boolean send(String toEmail, String title, String content) {


        boolean flag = true;
        try {
            Prop emailProp = PropKit.use("email.properties");
            String fromEmail = emailProp.get("fromEmail");

            Properties props = new Properties();
            props.put("mail.smtp.host", emailProp.get("smtpHost"));
            props.put("mail.smtp.auth", "true"); // 这样才能通过验证

            //ssl 验证  部分非企业邮箱
            props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.setProperty("mail.smtp.port", "465");
            props.setProperty("mail.smtp.socketFactory.port", "465");

            Session s = Session.getInstance(props);
            s.setDebug(true);

            MimeMessage message = new MimeMessage(s);

            // 给消息对象设置发件人/收件人/主题/发信时间
            InternetAddress from = new InternetAddress(fromEmail); // 发邮件的出发地(发件人的信箱)
            message.setFrom(from);
            InternetAddress to = new InternetAddress(toEmail);// 发邮件的目的地(收件人信箱)
            message.setRecipient(Message.RecipientType.TO, to);
            message.setSubject(title);
            message.setSentDate(new Date());



            // 给消息对象设置内容
            BodyPart mdp = new MimeBodyPart();// 新建一个存放信件内容的BodyPart对象
            mdp.setContent(content, "text/html;charset=gb2312");// 给BodyPart对象设置内容和格式/编码方式
            Multipart mm = new MimeMultipart();// 新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个)
            mm.addBodyPart(mdp);// 将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
            message.setContent(mm);// 把mm作为消息对象的内容

            message.saveChanges();
            Transport transport = s.getTransport("smtp");
            transport.connect(emailProp.get("smtpHost"), fromEmail, emailProp.get("fromPassword"));
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();

        } catch (MessagingException e) {
            e.printStackTrace();
            flag = false;
        }
        return flag;

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值