我正在研究这个Spring 邮件样本。这段代码的作用是每次有新邮件到达 Gmail 收件箱时都会打印消息。package org.springframework.integration.samples.mail.imapidle;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.integration.channel.DirectChannel;import org.springframework.messaging.Message;import org.springframework.messaging.MessageHandler;import org.springframework.messaging.MessagingException;/** * @author Oleg Zhurakousky * @author Gary Russell * */public class GmailInboundImapIdleAdapterTestApp { private static Log logger = LogFactory.getLog(GmailInboundImapIdleAdapterTestApp.class); public static void main (String[] args) throws Exception { @SuppressWarnings("resource") ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( "/META-INF/spring/integration/gmail-imap-idle-config.xml"); DirectChannel inputChannel = ac.getBean("receiveChannel", DirectChannel.class); inputChannel.subscribe(new MessageHandler() { public void handleMessage(Message<?> message) throws MessagingException { logger.info("Message: " + message); } }); }}我发送了 2 封电子邮件,最终这些行出现在 Eclipse 控制台上:16:04:52.851 信息 [pool-2-thread-1][org.springframework.integration.samples.mail.imapidle.GmailInboundImapIdleAdapterTestApp] 消息:GenericMessage [payload=org.springframework.integration.mail.AbstractMailReceiver$IntegrationMimeMessage@4ac650aa, headers={id=869e46a9-8fd0-4351-4f1e-bb181286b05f,timestamp=1570611892844}] 16:09:31.063 信息 [pool-2-thread-1][org.springframework.integration.samples.mail.imapidle.GmailInboundImapIdleAdapterTestApp]消息:GenericMessage [payload=org.springframework.integration.mail.AbstractMailReceiver$IntegrationMimeMessage@76114690,标头={id=6c791751-668e-69c5-3e05-1ae1ec72f853,时间戳=1570612171063}]现在如何检索正文内容?例如邮件正文上是“hello world 123”?
3 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
尝试用这个:
inputChannel.subscribe(new MessageHandler() {
public void handleMessage(Message<?> message) throws MessagingException {
logger.info("Message: " + ((javax.mail.internet.MimeMessage) message.getPayload()).getContent());
}
});
缥缈止盈
TA贡献2041条经验 获得超4个赞
通过访问您正在记录的对象的文档(Message
接口)[0],您将找到一个getPayload
方法,该方法将返回以下内容的实际负载Message
:
T getPayload()
返回消息有效负载。
该有效负载对象可能具有检索电子邮件数据的方法。在您的情况下,有效负载是一个IntegrationMimeMessage
[1],它扩展MimeMessage
并具有一个getContent
方法 [2]。所以你应该能够做这样的事情:
logger.info("Message content: " + message.getPayload().getContent());
[2] https://docs.oracle.com/javaee/6/api/javax/mail/internet/MimeMessage.html#getContent()
添加回答
举报
0/150
提交
取消