有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java getFrom()[0])中[0]用于获取邮件发件人地址的用法是什么

我知道getFrom()返回“From”属性

如果缺少“Sender”头字段,则返回null。此实现使用getHeader方法来获取必需的头字段

但是为什么要将[0]与getFrom()一起使用呢。使用[1]引发异常“ArrayIndexOutOfBoundsException:1”

import javax.mail.*;
import javax.mail.internet.MimeMessage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;

public class VerifyEmails {
    public Message message;
    public int count;
    public String result;

    public void check(String host, String user, String password) throws IOException, MessagingException {

        Properties properties = new Properties();
        properties.put("mail.imap.host", host);
        properties.put("mail.imap.user", user);
        properties.put("mail.imap.port", "143");
        properties.put("mail.imap.starttls.enable", "false");
        Session emailSession = Session.getInstance(properties);
        Store store = emailSession.getStore("imap");
        store.connect(host, user, password);
        Folder emailFolder = store.getFolder("INBOX");
        emailFolder.open(Folder.READ_ONLY);
        Message[] messages = emailFolder.getMessages();
        System.out.println("Total messages are---" + messages.length);
        for (count = 0; count < messages.length; count++) {
            message = messages[count];
            System.out.println("---------------------------------");
            System.out.println("Email Number " + (count + 1));
            System.out.println("Subject: " + message.getSubject());
            System.out.println("From: " + message.getFrom()[0]);
            InputStream in = messages[count].getInputStream();
            StringBuilder sb = new StringBuilder();
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String read;
            while ((read = br.readLine()) != null) {
                sb.append(read);
            }
            br.close();
            String mailSource = sb.toString();
            System.out.println("mailSource is" + mailSource);
        }
    }

共 (1) 个答案

  1. # 1 楼答案

    如方法文档中所述:

    This field contains the identity of the person(s) who wished this message to be sent.

    在from中可以有多个人,这就是为什么要有一个数组。这个Stackoverflow thread谈论它

    但一般来说,这个数组中只有一个人,这就是为什么你有ArrayIndexOutOfBoundsException的原因