Java Web - 邮件发送

一、实现方法

邮箱需要先开通 SMTP 服务,以163邮箱为例,如何开启服务可以百度对应的邮箱。开启服务后就可以进行收发邮件,需要的 jar 包百度自行下载。

二、具体实现

public class MailTool {
    private String mailSendHost = "smtp.163.com";
    private String fromMail = "[email protected]";
    private String toMail = "[email protected]"; //接收邮件的邮箱
    private String ttitle="我是标题";
    private String tcontent="我是内容";
    
    public boolean sendMail(){
        try{
            Properties props = new Properties();
            // 发信的主机
            props.put("mail.smtp.host", mailSendHost);
            props.put("mail.smtp.auth", "true");
            Session s=Session.getInstance(props);
            s.setDebug(true);
            MimeMessage message=new MimeMessage(s);
            //给消息对象设置发件人/收件人/主题/发信时间
            InternetAddress from=new InternetAddress(fromMail); //这里的fromMail改为您发信的邮箱
            message.setFrom(from);
            InternetAddress to=new InternetAddress(toMail);
            message.setRecipient(Message.RecipientType.TO,to);
            message.setSubject(ttitle);
            message.setSentDate(new Date());
            //给消息对象设置内容
            //新建一个存放信件内容的BodyPart对象
            BodyPart mdp=new MimeBodyPart();
            //给BodyPart对象设置内容和格式/编码方式
            mdp.setContent(tcontent,"text/html;charset=gb2312");
            //新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个)
            Multipart mm=new MimeMultipart();
            //将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
            mm.addBodyPart(mdp);
            //把mm作为消息对象的内容
            message.setContent(mm);
            message.saveChanges();
            Transport transport=s.getTransport("smtp");
            // 使用账号与授权码连接邮件服务器
            transport.connect(mailSendHost, "[email protected]", "xxx");
            transport.sendMessage(message,message.getAllRecipients());
            transport.close();
            return true;
        } catch(Exception e){
            e.printStackTrace();
            return false;
        }
    }
}

三、调用

在需要的地方调用即可,QQ邮箱好像有某些限制,刚开通 SMTP 立刻测试不成功。

你可能感兴趣的:(Java Web - 邮件发送)