我正在尝试阅读我的消息,我可以获取它来打印标题,但发件人和内容显示得很滑稽。这是我用来显示消息的代码:
int j = message.length-1;
for (int i=j;i>=0;i--) {
System.out.println("Message " + (i + 1));
System.out.println("From : " + message[i].getFrom());
System.out.println("Subject : " + message[i].getSubject());
try {
System.out.println("Body: " + message[i].getContent());
} catch (IOException ex) {
System.out.println(ex);
}
}
输出如下:
Message 1:
From: [javax.mail.internet.InternetAddress;@175831e]
Subject: Hello //This is correct
Body: javax.mail.internet.MimeMultipart@15b5219
为什么不打印出from语句的实际电子邮件地址?为什么不打印出实际的身体内容?(我只是在纯文本中很有趣。)
整个代码:
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.search.*;
import java.util.*;
import com.sun.mail.imap.*;
import java.io.*;
public class MailClient {
public static void main(String[] args) {
try {
Properties props = new Properties();
props.put("mail.store.protocol","imaps");
Session session;
session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com","email@gmail.com","password");
IMAPFolder folder = (IMAPFolder) store.getFolder("inbox");
folder.open(Folder.READ_ONLY);
Flags seen = new Flags(Flags.Flag.SEEN);
FlagTerm unseenFlagTerm = new FlagTerm(seen,false);
Message message[] = folder.search(unseenFlagTerm);
int j = message.length-1;
for (int i=j;i>=0;i--) {
System.out.println("Message " + (i + 1));
System.out.println("From : " + message[i].getFrom());
System.out.println("Subject : " + message[i].getSubject());
try {
System.out.println("Body: " + message[i].getContent());
} catch (IOException ex) {
System.out.println(ex);
}
}
System.out.println(newMsg);
folder.close(false);
store.close();
}
catch (MessagingException e) {
System.out.println("Error: " + e);
}
}
}
谢谢!
对于纯文本和html消息:
String content= messages[i].getContent().toString();
对于分段消息:
Multipart multipart = (Multipart) messages[i].getContent();
for (int j = 0; j < multipart.getCount(); j++) {
BodyPart bodyPart = multipart.getBodyPart(j);
String disposition = bodyPart.getDisposition();
if (disposition != null && (disposition.equalsIgnoreCase("ATTACHMENT"))) { // BodyPart.ATTACHMENT doesn't work for gmail
System.out.println("Mail have some attachment");
DataHandler handler = bodyPart.getDataHandler();
System.out.println("file name : " + handler.getName());
}
else {
System.out.println("Body: "+bodyPart.getContent());
content= bodyPart.getContent().toString();
}
目前,我的代码使用IMAP(imaps)和JavaMail访问我的Gmail收件箱,目的是阅读从最新到最旧发送给我自己的电子邮件,识别哪些电子邮件具有. zip或. xap格式的附件。如果找到,电子邮件的主题会显示出来,并询问我是否要下载附件。 如果我单击否,它会继续搜索。如果我单击是,它会调用createFolder方法来创建一个目录,将附件保存在那里,然后提取它。 问题:我收件箱中最近的一封电
我正在使用JavaMail 1.4.1(我已经升级到1.4.5版本,但有同样的问题)从一个电子邮件帐户读取消息,但我在内容编码方面有问题: 一些消息被正确读取,但其他消息由于编码不合适而具有奇怪的字符。我意识到它不适用于特定的内容类型。 如果content entType是以下任何一个,它都能很好地工作: > 文本/普通;charset=ISO-8859-1 charset="iso-8859-1
如何从内容类型为“多部分/备选”的邮件中下载附件;
我正在尝试编写一个应用程序,该应用程序可以在收件箱中检查带有附件的邮件项目,并且邮件在Office 365上。我尝试按照Office开发人员中心关于注册应用程序的说明进行操作,但它似乎必须是Web应用程序或本机应用程序(假设是手机)。您不能简单地连接到Office 365(使用API)并使用测试控制台应用程序获取邮件项目吗?
现在,我想检查是否传入的电子邮件是重复的通过IMAP使用javamail,这可能意味着一个电子邮件等于其他邮件,他们有相同的主题,从,到,抄送,密件抄送,正文,附件。 谁能告诉我怎么做。任何想法都非常感谢。谢谢
我正在尝试使用Javamail api获取Gmail中最近发送的邮件。这是代码- 由于getMessage计数返回的数字远远大于实际邮件,因此我得到了一个IndexOutOfBoundsException。 如何使用javamail api从Gmail获取已发送邮件的确切数量?我得到的错误是 - 1986是上述获取的totalSentMails的值,1970是实际发送的邮件数