如何复制已发文件夹中的邮件?

How to copy email in sent folder?

我正在使用 java 邮件 api 发送 mail.In 我配置了 yahoo smtp port.I 可以从 yahoo 帐户发送邮件但发送邮件未保存在已发送 item.For 传入服务中,我配置了 imap 雅虎服务器。

服务:

 @Component
    public class SmtpMailSender {   
        @Autowired
        private JavaMailSender javaMailSender;
        private static String folderName = "Sent";

        private String host="smtp.mail.yahoo.com";
        private String user="abc@yahoo.com";
        private String pass="xxxx";

        public void send(String to,String subject,String body, String from) throws MessagingException
        {
            // Java Mail properties
            Properties props = System.getProperties();
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.port", "465");
            props.put("mail.smtp.auth", "true");

            // Mail session authentified
            Session session = Session.getInstance(props);

            MimeMessage message=javaMailSender.createMimeMessage();
            MimeMessageHelper helper=new MimeMessageHelper(message,true);

            helper.setTo(to); 
            helper.setFrom(from);
            helper.setSubject(subject);  
            helper.setText(body,true);
            javaMailSender.send(message);

            // Copy message to "Sent Items" folder as read
            Store store = session.getStore();
            store.connect("imap.mail.yahoo.com", user, pass);

            Folder folder = store.getFolder(folderName);
            if (!folder.exists()) {
                folder.create(Folder.HOLDS_MESSAGES);
            }
            folder.open(Folder.READ_WRITE);
            folder.appendMessages(new Message[] {message});
            message.setFlag(FLAGS.Flag.RECENT, true);
            System.out.println("Msg send and saved ....");
            store.close();
        }
    }

控制器:

 @RestController
    public class EmailController {
        @Autowired private SmtpMailSender smtpMailSenderObj;
        @RequestMapping("/send")
        public void sendMail() throws MessagingException {
            smtpMailSenderObj
                .send
                    ("pqr@gmail.com", "verify sendMail",
                    "Hii...this is demo for java email send",
                            "abc@yahoo.com");
            }
    }

Application.properties:

spring.mail.host=smtp.mail.yahoo.com
spring.mail.username=abc@yahoo.com
spring.mail.password=xxxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.transport.protocol : smtp
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.debug=true
spring.mail.properties.mail.smtp.socketfactory.port=465
spring.mail.properties.mail.imap.ssl.required=true
spring.mail.properties.mail.imap.port=993

您需要明确 append the message object 到 "Sent" 文件夹。

这是因为imap 端口连接发送邮件没有保存在已发送邮件中。 需要在属性文件中添加设置属性。

props.setProperty("mail.store.protocol", "imaps");

现在通过添加这个,我可以将已发送的邮件保存在已发送的项目中。