首页 > 解决方案 > 如何使用 groovy、java 将电子邮件发送到 Microsoft 直接发送(domain-com.mail.protection.outlook.com)

问题描述

我正在尝试通过 domain-com.mail.protection.outlook.com(Office 365 直接发送)向 user@domain.com 发送电子邮件,

下面是我的代码,

void sendEmail(InternetAddress sender, List<InternetAddress> recipients, String subject, String body,
                              @Nullable BodyPart optAttachment,
                              XgemailDirectionEnum direction = XgemailDirectionEnum.INBOUND,
                              Optional<String> optionalEnvelopeSenderAddress = Optional.empty())
{
    final Properties properties = new Properties(_defaultProperties)
    for (InternetAddress recipient : recipients)
    {
        if (optionalEnvelopeSenderAddress.isPresent())
        {
            properties.put("mail.smtp.from", optionalEnvelopeSenderAddress.get())
        }

        Session session
      
        properties.put("mail.smtp.host", domain-com.mail.protection.outlook.com)
        properties.put("mail.smtp.port", 25)
        properties.put("mail.debug", "true")
        session = Session.getInstance(properties)
        

        Message message = new MimeMessage(session)
        message.setFrom(sender)

        message.setRecipients(
            Message.RecipientType.TO,
            recipient as InternetAddress[]
        )
        message.setSubject(subject)
        message.setText(body)
        
        Transport.send(message)
    }

我也尝试添加属性 properties.put("mail.smtp.starttls.enable", "true") ,但没有运气。

我收到以下错误

com.sun.mail.util.MailConnectException: Couldn't connect to host, port: domain-com.mail.protection.outlook.com, 25; timeout -1

以下是 mail.debug 日志

DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]


DEBUG SMTP: useEhlo true, useAuth false DEBUG SMTP: trying to connect to host "domain-com.mail.protection.outlook.com", port 25, isSSL false

标签: javaemailsmtpoffice365mx-record

解决方案


推荐阅读