这是我的代码:
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import java.util.List;
import java.util.ArrayList;
import java.util.regex.*;
public class EmailReader {
public static void main(String args[]) {
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect ("imap.gmail.com", "email@gmail.com", "password");
System.out.println(store);
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
Message messages[] = inbox.getMessages();
for (Message message : messages) {
String subject = message.getSubject();
String location = "AAR|RRC|PSD|TPC|HP|SCC|MCA";
List<String> list = new ArrayList<String>();
System.out.println("SUBJECT: " + subject);
System.out.println("DATE: " + message.getSentDate());
Pattern pattern = Pattern.compile(location);
Matcher match = pattern.matcher(subject);
while (match.find()) {
list.add(match.group());
System.out.println(list);
}
}
} catch (MessagingException e) {
e.printStackTrace();
System.exit(2);
} catch (Exception e) {
e.printStackTrace();
System.exit(2);
}
}
}
我希望程序在搜索保存在位置中的字符串时读取每封电子邮件并将其存储在数组中。这工作正常,但是我想将位置字符串中的每个缩写设置为用于确定里程的值。我不知道我会怎么做。最后,我希望能够根据找到的数字总结某个日期范围的电子邮件中的所有值。因此,例如,如果AAR设置为15并且显示在3个电子邮件主题行中并且RRC设置为8并且显示在2中,则将其全部加起来并将其打印出来。
答案 0 :(得分:0)
结束使用: 。如果(match.group()包含(&#34; AAR&#34;){ 然后做这串代码 } 它看起来很草率,因为我有一堆if语句但是很有效。可能更好地使用开关代替。