小编And*_*rew的帖子

如何为Gmail配置Spring JavaMailSenderImpl

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

我先说我尝试过这里的方法.这很好.但是当我尝试使用完全相同的身份验证信息在该帖子下面的配置时,我收到了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>
Run Code Online (Sandbox Code Playgroud)

如果我知道我的凭据是正确的,为什么我仍然会收到此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>
Run Code Online (Sandbox Code Playgroud)

java gmail spring

38
推荐指数
6
解决办法
9万
查看次数

泽西岛的主要收录服务提供商

我需要在Jersey中创建一个自定义ExceptionMapper来处理Jackson返回的JsonProcessingException。

Jackson库已经以JsonMappingExceptionMapper.java和JsonParseExceptionMapper.java(link)的形式包含此异常的ExceptionMapper提供程序。

如果在“ my.package”中为此异常映射器添加新的提供程序,则有关所选提供程序的结果将无法预测。有时它将选择“ my.package”中的提供程序,有时它将选择Jackson库中的提供程序。下面是我用来扫描软件包的代码。

PackgesResourceConfig packagesResourceConfig = new PackgesResourceConfig("com.fasterxml.jackson.jaxrs", "my.package");
Run Code Online (Sandbox Code Playgroud)

拟议的解决方案

目前,我正在通过手动过滤掉Jackson库中的提供程序来解决此问题。但是我真正想知道的是,是否有一种更可接受和更受支持的方式来执行此操作。

首先,我扩展PackagesResourceConfig。

public class FilteredPackgesResourceConfig extends PackagesResourceConfig {

    private Set<Class<?>> classesToFilter = new HashSet<Class<?>>();

    public FilteredPackgesResourceConfig(String... packages) {
        super(packages);
    }

    public FilteredPackgesResourceConfig(Map<String, Object> props) {
        super(props);
    }

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = super.getClasses();

        if (classes != null && classesToFilter != null) {
            classes.removeAll(classesToFilter);
        }

        return classes;
    }

    public Set<Class<?>> getClassesToFilter() {
        return classesToFilter;
    }

    public void setClassesToFilter(Set<Class<?>> classesToFilter) {
        this.classesToFilter = classesToFilter;
    } …
Run Code Online (Sandbox Code Playgroud)

java jersey jackson

5
推荐指数
1
解决办法
3642
查看次数

标签 统计

java ×2

gmail ×1

jackson ×1

jersey ×1

spring ×1