有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

分发组的java JavaMail/Exchange AuthAs标头

我有一个Java程序,它通过我们组织的Exchange服务器发送一封常规电子邮件。带有该程序的服务器和exchange服务器位于同一网络上。电子邮件被发送到几个单独的电子邮件地址和几个通讯组。所有收件人都是组织域的内部收件人。这在过去两年中效果良好

最近,我升级了项目的依赖项,以使用更新版本的JavaMail。更改后,我发现电子邮件已成功送达各个电子邮件收件人,但通讯组的成员未收到电子邮件。将旧邮件与新邮件进行比较后,只有一个区别。此标题:

X-Ms-Exchange-Organization-Authas: ⁨Internal⁩

已更改为:

X-Ms-Exchange-Organization-Authas: ⁨Anonymous⁩

我不完全理解这个标题的意思,但我相信这可能就是通讯组不接收电子邮件的原因,因为它们被设置为只接收内部电子邮件。注意到这个问题后,我将更改恢复到JavaMail库版本,但问题仍然存在。JavaMail调试输出验证通讯组地址为“OK”

那么,如何让Exchange服务器识别这是一封内部电子邮件

下面是发送电子邮件的代码,删除了敏感信息。同样,在我尝试更新库之前,这段代码已经运行了几年。我还应该提到,通讯组本身似乎很好,他们一直像平常一样收到其他电子邮件

            Properties props = System.getProperties();

            // Setup mail server
            props.put("mail.smtp.host", "XXXXXXXX");
            props.put("mail.smtp.auth", "true");
            props.put("mail.debug", "true");
            props.put("mail.smtp.port", "587");
            props.put("mail.smtp.connectiontimeout", "30000");
            props.put("mail.smtp.timeout", "30000");

            Session session = Session.getDefaultInstance(props,
                    new javax.mail.Authenticator() {
                        protected PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication("XXXXXX", "XXXXXX");
                        }
                    });

            // Define message
            MimeMessage message = new MimeMessage(session);

            // Set the from address
            message.setFrom(new InternetAddress("XXXXXXXXX"));

            // Set the to address
            message.addRecipient(Message.RecipientType.TO, new InternetAddress("XXXXXXXXXXX"));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress("XXXXXXXXXXX"));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress("XXXXXXXXXXXX"));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress("XXXXXXXXXXXX"));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress("XXXXXXXXXXXXX"));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress("XXXXXXXXXXXXX"));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress("XXXXXXXXXXXXX"));

            Date date = new Date();
            SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
            String formDate = formatter.format(date);
            // Set the subject
            message.setSubject("Incident Report Dispositions: " + formDate);

            // Set the content
            message.setContent(body, "text/html; charset=utf-8");

            // Send message
            Transport.send(message);

编辑:我还注意到“匿名”电子邮件缺少以下标题:

X-Ms-Exchange-Organization-Authmechanism: ⁨00⁩

共 (0) 个答案