java - 如何为 Gmail 配置 Spring JavaMailSenderImpl

标签 java spring gmail

我正在尝试使用 JavaMailSenderImpl 类查找用于连接到 Gmail SMTP 服务器的正确属性。

我先说我已经尝试了找到的方法 here .这工作得很好。但是,当我使用完全相同的身份验证信息尝试该帖子下方的配置时,我收到了 javax.mail.AuthenticationFailedException。

我目前的配置是这样的。

<bean id="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" >
    <property name="username" value="XXX@gmail.com" />
    <property name="password" value="XXX" />
    <property name="javaMailProperties">
    <props>
        <prop key="mail.smtp.host">smtp.gmail.com</prop>
        <prop key="mail.smtp.port">587</prop>
        <prop key="mail.smtp.auth">true</prop>
        <prop key="mail.smtp.starttls.enable">true</prop>
    </props>
    </property>
</bean>

如果我知道我的凭据正确,为什么我仍然收到此 javax.mail.AuthenticationFailedException。

更新

这是我根据以下答案更新的代码。我仍然收到同样的异常。

<bean id="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" >
    <property name="username" value="XXX@gmail.com" />
    <property name="password" value="XXX" />
    <property name="javaMailProperties">
    <props>
        <prop key="mail.smtp.from">XXX@gmail.com</prop>
        <prop key="mail.smtp.user">XXX@gmail.com</prop>
        <prop key="mail.smtp.password">XXX</prop>
        <prop key="mail.smtp.host">smtp.gmail.com</prop>
        <prop key="mail.smtp.port">587</prop>
        <prop key="mail.smtp.auth">true</prop>
        <prop key="mail.smtp.starttls.enable">true</prop>
    </props>
    </property>
</bean>

最佳答案

这对我有用:

        <property name="host"><value>smtp.gmail.com</value></property>
        <property name="port"><value>587</value></property>
        <property name="protocol"><value>smtp</value></property>
        <property name="username"><value>${mail.username}</value></property>
        <property name="password"><value>${mail.password}</value></property>
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <prop key="mail.smtp.quitwait">false</prop>
            </props>
        </property>

对我来说真正的诀窍是“协议(protocol)”值必须是“smtp”(而不是“smtps”)。

关于java - 如何为 Gmail 配置 Spring JavaMailSenderImpl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2016190/

相关文章:

java - 如何使用唯一的id(不在文件内)定义Spring bean?

spring - Spring嵌套的ConfigurationProperties和Kotlin

google-apps-script - 如何在 Google Scripts 的电子邮件中发送表格?

java - 监视 Java Web 应用程序 - JMX 是正确的选择吗?

java - ReentrantLock 与嵌套的 tryLock 具有不同的超时时间,实际超时时间是多少?

java - 如何在 SpringBoot REST Api 中调用重写的handleMethodArgumentNotValid?

gmail - 如何阻止 Gmail 将我的网络应用发送的邮件标记为垃圾邮件?

emacs - 设置组织模式导出的文件编码

java - 本地 GAE java 开发服务器的 Google Pub/Sub 测试策略

java - JBOSS 部署警告 - 包含 CDI 注释但找不到 beans.xml