邮件收发工具类

前言

记录一个实用的工具类“邮件收发工具类”

引入依赖

<!--邮箱-->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>javax.mail-api</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>

代码


import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * 邮件发送、接收工具类
 */
public class MailUtil {

    public static void sendEmail(String host,String port,String account, String authCode,
                                 String receiveEmail,String subject,String content,String secretType) throws Exception {
        if (secretType.equals("0")){
            //授权码发邮件===================================================
            //邮件配置类
            Properties properties = new Properties();
            properties.put("mail.transport.protocol", "smtp");
            //163:smtp.163.com   qq:smtp.qq.com
            properties.put("mail.smtp.host", host);
            //465 或 587
            properties.put("mail.smtp.port", port);
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.debug", "true");
            Session session = Session.getInstance(properties);
            Message message = new MimeMessage(session);
            //设置发件人邮箱地址
            message.setFrom(new InternetAddress(account));
            //设置收件人邮箱地址
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveEmail));
            message.setSubject(subject);
            message.setText(content);
            Transport transport = session.getTransport();
            //连接邮箱 account邮箱账户,authCode授权码
            transport.connect(account, authCode);
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
        }else{
            //密码发邮件======================================
            Properties properties = new Properties();
            properties.put("mail.transport.protocol", "smtp");
            properties.put("mail.smtp.host", host);
            properties.put("mail.smtp.port", port);
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.debug", "true");
            properties.put("mail.smtp.starttls.enable", "true");

            Session session = Session.getInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(account, authCode);
                }
            });

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(account));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveEmail));
            message.setSubject(subject);
            message.setText(content);
            Transport.send(message);
        }

    }

    public static void receiveEmail(String account, String authCode) throws Exception {
        Properties props = new Properties();
        Session session = Session.getDefaultInstance(props);
        // Store store = session.getStore("imap");
        //取得pop3协议的邮件服务器
        Store store = session.getStore("pop3");
        //连接pop.qq.com邮件服务器
        store.connect("pop.qq.com", account, authCode);
        //返回文件夹对象
        Folder folder = store.getFolder("INBOX");
        //设置仅读
        folder.open(Folder.READ_ONLY);
        //获取信息
        Message[] message = folder.getMessages();
        for(int i=message.length-1; i>0; i--) {
            //打印主题
            System.out.println(message[i].getSubject());
        }
        folder.close(true);
        store.close();
    }

    public static void main(String[] args){
        try {
            //sendEmail();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

备注:

根据业务场景有的可能需要用授权码收发邮件,有的场景需要用密码收发邮件;故写了一个判断用来区分不同场景。目前网易邮箱、QQ邮箱等不支持密码收发邮件,仅支持授权码收发邮件(授权码可在邮箱设置处获取)。

常用端口

  1. SMTP(Simple Mail Transfer Protocol)端口:

    • SMTP端口:25(不加密,不安全,少用)
    • SMTP端口:587(推荐,通常用于TLS加密)
    • SMTP端口:465(SSL加密)
  2. IMAP(Internet Message Access Protocol)端口:

    • IMAP端口:143(不加密,不安全)
    • IMAP端口:993(SSL/TLS加密)
  3. POP3(Post Office Protocol Version 3)端口:

    • POP3端口:110(不加密,不安全)
    • POP3端口:995(SSL/TLS加密)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值