在javaimap中获取X-Mailer
如何在JavaIMAP中获取x-mail? 我已经写了一个示例程序,但它不能很好地工作。 我得到的是空值。 我错在哪里在javaimap中获取X-Mailer,java,imap,jakarta-mail,Java,Imap,Jakarta Mail,如何在JavaIMAP中获取x-mail? 我已经写了一个示例程序,但它不能很好地工作。 我得到的是空值。 我错在哪里 import com.sun.mail.imap.IMAPFolder; import com.sun.mail.imap.IMAPMessage; import javax.mail.*; import javax.mail.internet.*; import java.util.*; import java.io.*; im
import com.sun.mail.imap.IMAPFolder;
import com.sun.mail.imap.IMAPMessage;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.io.*;
import java.lang.reflect.Field;
/**
*
* @author vivek
*/
public class Main {
public static void main(String[] args) {
Properties props = System.getProperties();
props.setProperty("mail.imap.socketFactory.port", "993");
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "username", "password");
System.out.println(store);
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
FetchProfile fp = new FetchProfile();
fp.add("X-Mailer"");
Message[] messages=inbox.getMessages(1, 2);
inbox.fetch(messages, fp);
for (Message message : messages) {
System.out.println(message);
System.out.println(message.getHeader("X-Mailer""));
}
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
imap的调试跟踪为
`DEBUG: JavaMail version 1.4.4
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc]
DEBUG: mail.imap.fetchsize: 16384
DEBUG: mail.imap.statuscachetimeout: 1000
DEBUG: mail.imap.appendbuffersize: -1
DEBUG: mail.imap.minidletime: 10
DEBUG: trying to connect to host "imap.gmail.com", port 993, isSSL true
* OK Gimap ready for requests from 116.202.153.186 bs33if4292090ibb.10
A0 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA XLIST CHILDREN XYZZY SASL-IR AUTH=XOAUTH
A0 OK Thats all she wrote! bs33if4292090ibb.10
DEBUG IMAP: AUTH: XOAUTH
DEBUG: protocolConnect login, host=imap.gmail.com, user=username, password=<non-null>
A1 LOGIN username password
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE
A1 OK username@gmail.com vivek goel authenticated (Success)
A2 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE
A2 OK Success
imaps://username@imap.gmail.com
DEBUG: connection available -- size: 1
A3 EXAMINE Inbox
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS ()]
* OK [UIDVALIDITY 2]
* 27512 EXISTS
* 0 RECENT
* OK [UIDNEXT 58271]
A3 OK [READ-ONLY] Inbox selected. (Success)
A4 FETCH 1 (BODY.PEEK[HEADER.FIELDS (X-Mailer)])
* 1 FETCH (BODY[HEADER.FIELDS (X-Mailer)] {4}
)
A4 OK Success
com.sun.mail.imap.IMAPMessage@6ba7508a
null`
调试:JavaMail版本1.4.4
调试:已成功加载资源:/META-INF/javamail.default.providers
调试:加载的提供程序的表
调试:按类名列出的提供程序:{com.sun.mail.smtpsslttransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.smtpsslttransport,sun Microsystems,Inc],com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtps,com.SMTPTransport,sun Microsystems,Inc],com.sun.mail.imapssltore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,sun Microsystems,Inc],com.sun.mail.pop3.pop3ssstore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.pop3ssstore,sun Microsystems,Inc],com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.mail.imap.IMAPStore,sun Microsystems,Inc],com.sun[商店,pop3,com.sun.mail.pop3.POP3Store,sun Microsystems,Inc]]
调试:协议列出的提供程序:{imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.imapssltore,sun Microsystems,Inc],imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,sun Microsystems,Inc],smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.smtpsslttransport,sun Microsystems,Inc],pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,sun Microsystems,Inc],pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.pop3ssl,sun Microsystems,Inc],smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.SMTPTransport,sun Microsystems,Inc]]
调试:已成功加载资源:/META-INF/javamail.default.address.map
调试:getProvider()返回javax.mail.Provider[STORE,imaps,com.sun.mail.imap.imapssltore,sun Microsystems,Inc]
调试:mail.imap.fetchsize:16384
调试:mail.imap.statuscachetimeout:1000
调试:mail.imap.appendbuffersize:-1
调试:mail.imap.minidle时间:10
调试:尝试连接到主机“imap.gmail.com”,端口993,isSSL true
*OK Gimap准备好接受来自116.202.153.186 bs33if4292090ibb.10的请求
A0能力
*功能IMAP4rev1取消选择空闲命名空间配额XLIST子项XYZZZY SASL-IR AUTH=XOAUTH
A0好的,她就写这些了!bs33if4292090ibb.10
调试IMAP:AUTH:XOAUTH
调试:protocolConnect登录,主机=imap.gmail.com,用户=用户名,密码=
A1登录用户名密码
*功能IMAP4rev1取消选择空闲命名空间配额ID XLIST子项X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE
A1好的username@gmail.comvivek goel认证(成功)
A2能力
*功能IMAP4rev1取消选择空闲命名空间配额ID XLIST子项X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE
A2 OK成功
imaps://username@imap.gmail.com
调试:连接可用--大小:1
A3检查收件箱
*标志(\responsed\Flagged\Draft\Deleted\Seen)
*OK[PERMANENTFLAGS()]
*OK[UID有效性2]
*27512存在
*0最近
*好的[UIDNEXT 58271]
A3已选择OK[只读]收件箱。(成功)
A4获取1(BODY.PEEK[HEADER.FIELDS(X-Mailer)])
*1获取(BODY[HEADER.FIELDS(X-Mailer)]{4}
)
A4 OK成功
com.sun.mail.imap。IMAPMessage@6ba7508a
空的`
看起来不错,ish。现在,你用say Thunderbird进行imap并检查X-mailer头是否存在了吗?看起来不错,ish。现在,你用say Thunderbird进行imap并检查X-mailer头是否存在了吗?使用
-Dmail.debug=true
来了解imap服务器的情况。和X-header都是可选的。我无法使用e X-Mailer Fetch。当我启用调试模式时,请使用-Dmail.debug=true
了解IMAP服务器的情况。和X-header都是可选的。我看不到X-Mailer Fetch。当我启用调试模式时,是的。它存在。但当我启用调试或迭代时,抛出所有头。我看不到此头。它也不在Fetch命令中。是的。我不存在。但当我启用调试或迭代时,抛出了所有标头。我看不到此标头。它也不在fetch命令中。