如何配置 JavaMail 以使用 Office 365 Exchange 服务发送邮件

How to configure JavaMail to use Office 365 Exchange Service to send mail

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

这是我目前所知道的:

在我的应用程序上下文文件中,我为 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 和连接中看到了一些关于邮件流的信息,但我没有看到任何为此类服务设置身份验证的方法。我是否需要使用用户名和密码创建一个新的特殊帐户并通过应用程序使用它?

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

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

此致,

斯蒂芬.

我找到了答案:

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/

我遇到了同样的错误。在我在 Whosebug 上检查了一些答案并得到任何答案后,我决定登录 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