【问题标题】:How to configure JavaMail to use Office 365 Exchange Service to send mail如何配置 JavaMail 以使用 Office 365 Exchange 服务发送邮件
【发布时间】:2018-01-19 05:01:07
【问题描述】:

我有一个用 JavaSpring 编写的应用程序,它使用 JavaMail API 发送电子邮件。我希望它在 linux 上使用我的 Office 365 Exchange 服务而不是我的 localhost sendmail 服务。这将避免下游的任何欺骗问题。但是,我不清楚如何设置此握手。我需要建议。

这是我目前所知道的:

在我的应用程序上下文文件中,我为 JavaMail 创建了一个 bean:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="localhost"/>
    <property name="port" value="25"/>
    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtp.auth">false</prop>
            <!--
            <prop key="mail.debug">true</prop>
            -->
        </props>
    </property>
</bean>

我会改成

不过,我不知道还需要配置什么:

我必须进行哪些配置才能接收这些请求? (即如何与我的 O365 Exchange 服务握手?)我在 O365 Exchange 和 Connections 中看到了一些关于邮件流的信息,但我没有看到任何为此类服务设置身份验证的方法。我是否需要使用用户名和密码创建一个新的特殊帐户并通过应用程序使用它?

我需要在运行我的 java 应用程序的 linux 服务器上设置任何东西吗? (主机名等)

我可以咨询的任何专家或在线文档都对我非常有用。

此致,

斯蒂芬。

【问题讨论】:

    标签: spring jakarta-mail exchange-server-2010


    【解决方案1】:

    我找到了答案:

    JavaMail 配置:

    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
            <property name="host" value="smtp.office365.com"/>
            <property name="port" value="587"/>
            <property name="username" value="foo@bar.com"/>
            <property name="password" value="****"/>
            <property name="javaMailProperties">
                <props>
                    <prop key="mail.transport.protocol">smtp</prop>
                    <prop key="mail.smtp.auth">true</prop>
                    <prop key="mail.smtp.starttls.enable">true</prop>
                    <prop key="mail.debug">false</prop>
                </props>
            </property>
        </bean>
    

    注意事项:

    Office365 有一个特殊的 SMTP 主机:smtp.office365.com

    出于安全目的使用端口 587。

    必须注册一个特殊的 O365 电子邮件帐户才能发送邮件。 (例如 foo@foo.bar)。 message.setFrom() 方法必须与使用的帐户匹配(例如 foo@foo.bar),否则 Exchange 将不会通过该帐户发送(抛出错误)。

    TLS 必须设置为 TRUE

    支持信息:

    https://support.office.com/en-us/article/How-to-set-up-a-multifunction-device-or-application-to-send-email-using-Office-365-69f58e99-c550-4274-ad18-c805d654b4c4?ui=en-US&rs=en-US&ad=US

    https://howtodoinjava.com/spring/spring-core/send-email-with-spring-javamailsenderimpl-example/

    【讨论】:

      【解决方案2】:

      我遇到了同样的错误。在我在 StackOverflow 上检查了一些答案并到达任何地方之后,我决定登录 Office365 上的帐户,以确保一切正常。所以我意识到我应该执行第一次登录并更改生成的密码才能从该帐户发送电子邮件。

      在我的 application.properties 中,我有以下内容(我使用的是 spring-boot-starter-mail):

      spring.mail.host=smtp.office365.com
      spring.mail.port=587
      spring.mail.username=no-reply@<my-domain>.com
      spring.mail.password=<my-secret> 
      spring.mail.properties.mail.smtp.auth=true
      spring.mail.properties.mail.smtp.starttls.enable=true
      

      【讨论】:

      • 什么是密钥。如果是密码或一些需要生成的密钥。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 2021-12-09
      • 1970-01-01
      • 2015-11-11
      • 2020-10-02
      • 1970-01-01
      相关资源
      最近更新 更多