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

时间:2018-01-19 05:01:08

标签: spring javamail exchange-server-2010

我在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中看到了有关Mail Flow的一些信息,但我没有看到任何为这些服务设置身份验证的方法。我是否需要使用用户名和密码创建一个新的特殊帐户,而是通过应用程序使用它?

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

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

此致

斯蒂芬。

2 个答案:

答案 0 :(得分:3)

我找到了答案:

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?wt.mc_id=o365_portal_mmaven&ui=en-US&rs=en-US&ad=US

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

答案 1 :(得分:0)

我遇到了同样的错误。在此处检查了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