You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring及Mule 4中SMTP邮件发送因凭证无效失败求助

问题描述

我尝试在Java(Spring框架)和Mule 4中通过SMTP发送邮件,具体配置如下:

Spring配置

<bean id="mailSender"
    class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="smtp.mail.com" />
    <property name="port" value="465" />
    <property name="username" value="${mail.user}" />
    <property name="password" value="${mail.pwd}" />
    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtp.auth">true</prop>
            <prop key="mail.smtp.starttls.enable">true</prop>
            <prop key="mail.smtp.starttls.required">true</prop>
            <prop key="mail.smtp.ssl.enabled">true</prop>
            <prop key="mail.debug">true</prop>
        </props>
    </property>
</bean>

Mule 4配置

<email:smtp-config name="Email_SMTP" doc:name="Email SMTP" doc:id="0e79558e-d0c8-42e3-b534-6d18439fc1e0" >
    <email:smtp-connection host="smtp.mail.com" user="user@mail.com" password="****" connectionTimeout="10" port="587" readTimeout="10" writeTimeout="10">
        <email:properties >
            <email:property key="mail.smtp.auth" value="true" />
            <email:property key="mail.smtp.starttls.enable" value="true" />
            <email:property key="mail.smtp.starttls.required" value="true" />
            <email:property key="mail.debug" value="true" />
            <email:property key="mail.smtp.ssl.enable" value="true" />
        </email:properties>
    </email:smtp-connection>
</email:smtp-config>

当前遇到错误:

535 Authentication credentials invalid

但该凭证可正常通过UI登录邮箱,我已尝试更换465、587、25端口,调整auth及TLS相关配置,均未解决问题,怀疑是SSL或认证属性配置有误,寻求解决方案。


解决方案

针对535 Authentication credentials invalid错误,结合配置和场景,可按以下步骤排查修复:

1. 修正端口与加密配置的冲突

不同SMTP端口的加密逻辑不同,原配置存在属性冲突:

  • 465端口(SMTPS):默认直接使用SSL加密,无需starttls相关配置,同时开启两者会导致认证逻辑混乱。
  • 587端口(STARTTLS):通过STARTTLS切换加密连接,需关闭ssl.enable属性,仅保留starttls相关配置。

修正后的Spring配置(465端口)

<bean id="mailSender"
    class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="smtp.mail.com" />
    <property name="port" value="465" />
    <property name="username" value="${mail.user}" />
    <property name="password" value="${mail.pwd}" />
    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtp.auth">true</prop>
            <prop key="mail.smtp.ssl.enabled">true</prop>
            <prop key="mail.debug">true</prop>
        </props>
    </property>
</bean>

修正后的Mule 4配置(587端口)

<email:smtp-config name="Email_SMTP" doc:name="Email SMTP" doc:id="0e79558e-d0c8-42e3-b534-6d18439fc1e0" >
    <email:smtp-connection host="smtp.mail.com" user="user@mail.com" password="****" connectionTimeout="10000" port="587" readTimeout="10000" writeTimeout="10000">
        <email:properties >
            <email:property key="mail.smtp.auth" value="true" />
            <email:property key="mail.smtp.starttls.enable" value="true" />
            <email:property key="mail.smtp.starttls.required" value="true" />
            <email:property key="mail.debug" value="true" />
        </email:properties>
    </email:smtp-connection>
</email:smtp-config>

注意:Mule配置中超时时间单位为毫秒,原配置10会触发超时异常,需改为10000(10秒)。

2. 验证凭证有效性与权限

  • 确认Spring配置中${mail.user}为完整邮箱地址(部分SMTP服务器要求完整地址而非短用户名)。
  • 若邮箱开启两步验证,需使用应用专用密码替代原UI登录密码,普通密码无法用于SMTP认证。
  • 检查邮箱设置中是否开启了SMTP服务权限(部分服务商默认关闭该功能,需手动启用)。

3. 利用调试日志定位问题

保留mail.debug=true配置,查看SMTP交互日志,重点关注:

  • 服务器返回的535错误附带的具体提示(如密码错误、IP受限、权限不足等)。
  • SSL握手过程是否正常,若出现证书验证失败,需添加对应证书到信任列表。

内容的提问来源于stack exchange,提问作者Abhay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:20:43