文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java Mail简明教程:轻松管理你的电子邮件通信

2024-02-05 20:36

关注

Java Mail是一个开源的库,提供了一组用于发送、接收和处理电子邮件的API。这些API使您能够轻松地创建和管理电子邮件通信。Java Mail最初由Sun Microsystems开发,现已成为Oracle的一部分。

发送电子邮件

要发送电子邮件,您需要使用Java Mail API创建一个邮件会话(javax.mail.Session)对象。然后,您需要创建一个邮件消息(javax.mail.Message)对象。最后,您需要使用邮件传输协议(javax.mail.Transport)将邮件消息发送出去。

以下是一个发送电子邮件的示例代码:

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

public class SendEmail {

    public static void main(String[] args) {
        // 设置发件人信息
        String from = "myusername@example.com";

        // 设置收件人信息
        String[] to = {"recipient1@example.com", "recipient2@example.com"};

        // 设置邮件主题
        String subject = "Hello";

        // 设置邮件内容
        String body = "This is a test email.";

        // 创建邮件会话
        Properties props = new Properties();
        props.put("mail.smtp.host", "localhost");
        props.put("mail.smtp.port", "25");
        Session session = Session.getDefaultInstance(props, null);

        // 创建邮件消息
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(String.join(",", to)));
        message.setSubject(subject);
        message.setText(body);

        // 发送邮件
        Transport.send(message);

        System.out.println("Email sent successfully.");
    }
}

处理电子邮件

Java Mail还提供了一组API,用于处理电子邮件。这些API允许您读取、回复、转发和删除电子邮件。

以下是一个处理电子邮件的示例代码:

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

public class ProcessEmail {

    public static void main(String[] args) {
        // 设置邮件服务器信息
        String host = "localhost";
        String username = "myusername";
        String password = "mypassword";

        // 创建邮件会话
        Properties props = new Properties();
        props.put("mail.pop3.host", host);
        props.put("mail.pop3.port", "110");
        Session session = Session.getDefaultInstance(props, null);

        // 连接到邮件服务器
        Store store = session.getStore("pop3");
        store.connect(host, username, password);

        // 打开收件箱文件夹
        Folder inbox = store.getFolder("Inbox");
        inbox.open(Folder.READ_ONLY);

        // 获取收件箱中所有邮件
        Message[] messages = inbox.getMessages();

        // 遍历所有邮件
        for (Message message : messages) {
            // 获取发件人信息
            Address[] from = message.getFrom();

            // 获取收件人信息
            Address[] to = message.getRecipients(Message.RecipientType.TO);

            // 获取邮件主题
            String subject = message.getSubject();

            // 获取邮件内容
            String body = message.getContent().toString();

            // 打印邮件信息
            System.out.println("From: " + from[0]);
            System.out.println("To: " + to[0]);
            System.out.println("Subject: " + subject);
            System.out.println("Body: " + body);
        }

        // 关闭收件箱文件夹
        inbox.close(false);

        // 断开与邮件服务器的连接
        store.close();
    }
}

接收电子邮件

Java Mail还提供了一组API,用于接收电子邮件。这些API允许您设置一个邮件监听器,当有新邮件到达时,该监听器将被触发。

以下是一个接收电子邮件的示例代码:

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

public class ReceiveEmail {

    public static void main(String[] args) {
        // 设置邮件服务器信息
        String host = "localhost";
        String username = "myusername";
        String password = "mypassword";

        // 创建邮件会话
        Properties props = new Properties();
        props.put("mail.pop3.host", host);
        props.put("mail.pop3.port", "110");
        Session session = Session.getDefaultInstance(props, null);

        // 连接到邮件服务器
        Store store = session.getStore("pop3");
        store.connect(host, username, password);

        // 打开收件箱文件夹
        Folder inbox = store.getFolder("Inbox");
        inbox.open(Folder.READ_ONLY);

        // 设置邮件监听器
        inbox.addMessageCountListener(new MessageCountAdapter() {
            @Override
            public void messagesAdded(MessageCountEvent e) {
                // 当有新邮件到达时,该方法会被触发

                // 获取新邮件
                Message[] messages = e.getMessages();

                // 遍历所有新邮件
                for (Message message : messages) {
                    // 获取发件人信息
                    Address[] from = message.getFrom();

                    // 获取收件人信息
                    Address[] to = message.getRecipients(Message.RecipientType.TO);

                    // 获取邮件主题
                    String subject = message.getSubject();

                    // 获取邮件内容
                    String body = message.getContent().toString();

                    // 打印邮件信息
                    System.out.println("From: " + from[0]);
                    System.out.println("To: " + to[0]);
                    System.out.println("Subject: " + subject);
                    System.out.println("Body: " + body);
                }
            }
        });

        // 保持监听器运行
        while (true) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        // 关闭收件箱文件夹
        inbox.close(false);

        // 断开与邮件服务器的连接
        store.close();
    }
}

故障排除

在使用Java Mail时,您可能会遇到一些问题。以下是一些常见的故障排除技巧:

如果您仍然遇到问题,您可以向Java Mail社区寻求帮助。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯