import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.search.FlagTerm;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.Properties;
@Service
public class MailReceiverService {
private Session session; // 邮件会话对象
private Properties props; // 系统属性
public void receiveEmail() throws MessagingException, IOException {
if (session == null) {
initSession();
}
// 连接到邮件服务器
Store store = session.getStore("imap"); // 使用IMAP协议
store.connect((String)props.get("mail.imap.host"), (String)props.get("username"), (String)props.get("password"));
// 打开收件箱
Folder inbox = store.getFolder("INBOX");
// 读写模式,以便标记邮件为已读
inbox.open(Folder.READ_WRITE);
// 添加过滤 只取未读的
Flags seen = new Flags(Flags.Flag.SEEN);
FlagTerm unseenFlagTerm = new FlagTerm(seen, false);
// 获取未读邮件
Message[] messages = inbox.search(unseenFlagTerm);
// 逐个处理邮件
for (Message message : messages) {
System.out.println("Subject: " + message.getSubject());
System.out.println("From: " + InternetAddress.toString(message.getFrom()));
System.out.println("To: " + InternetAddress.toString(message.getRecipients(Message.RecipientType.TO)));
// 读取邮件内容
Object content = message.getContent();
if (content instanceof Multipart) {
Multipart multipart = (Multipart) content;
for (int i = 0; i < multipart.getCount(); i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
if (bodyPart.getContentType().startsWith("text/plain")) {
System.out.println("Content: " + bodyPart.getContent());
}
}
} else if (content instanceof String) {
System.out.println("Content: " + content);
}
// 标记邮件为已读
message.setFlag(Flags.Flag.SEEN, true);
System.out.println("---------------------------------------");
}
// 关闭连接
inbox.close(false);
store.close();
}
private void initSession() {
props = System.getProperties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "smtp.**");
props.put("mail.smtp.port", "**");
props.put("mail.imap.host", "imap**"); // IMAP服务器地址 用来接收邮件的
props.put("mail.imap.port", "**"); // IMAP端口号
props.put("username", ""); // 自己的用户名
props.put("password", ""); // 自己的密码
session = Session.getDefaultInstance(props, null);
session.setDebug(true);
}
}
Java读取邮件内容
于 2024-04-19 16:08:47 首次发布