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 楼答案
如方法文档中所述:
在from中可以有多个人,这就是为什么要有一个数组。这个Stackoverflow thread谈论它
但一般来说,这个数组中只有一个人,这就是为什么你有ArrayIndexOutOfBoundsException的原因