代码之家  ›  专栏  ›  技术社区  ›  user14070

为我们的SMTP服务器配置Spring的MailSender时出现问题(但GMail可以工作)

  •  4
  • user14070  · 技术社区  · 17 年前

    MailSender JavaMailSenderImpl Postfix ).

    ssmtp

    $ ssmtp -C gmail-smtp.conf john.doe@gmail.com < gmail-message.txt 
    $ ssmtp -C other-smtp.conf john.doe@thecompany.net < other-message.txt
    

    http://linux.die.net/man/5/ssmtp.conf :

    To: john.doe@gmail.com
    From: john.doe@gmail.com
    Subject: Sent using the SMTP-server of GMail
    
    Some content.
    

    mailhub=smtp.gmail.com:587
    UseSTARTTLS=yes
    AuthUser=john.doe@gmail.com
    AuthPass=john_password
    

    To: john.doe@thecompany.net
    From: john.doe@thecompany.net
    Subject: Sent using the SMTP-server of TheCompany
    
    Some content.
    

    # No username or password = no authentication
    hostname=thecompany.net
    mailhub=mail.thecompany.net:25
    

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

    使用此MailSender配置:

    ...
    <bean id="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" >
        <property name="host" value="mail.thecompany.net" />
        <property name="port" value="25" />
    </bean>
    ...
    

    org.springframework.mail.MailSendException; nested exceptions (1) are:
    Failed message 1: javax.mail.SendFailedException: Invalid Addresses;
    nested exception is:
    com.sun.mail.smtp.SMTPAddressFailedException: 504 5.5.2 <rat>: Helo command rejected: need fully-qualified hostname
    
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:422)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:308)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:297)
    ... (The rest are methods I've created, which are irrelevant)    
    

    一、 ssmtp 公司网 .

    5 回复  |  直到 17 年前
        1
  •  1
  •   Karimchik    17 年前

    添加以完成上一个 answer 通过matt b,javamail的正确选项是 smtp.mail.localhost

    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtp.localhost">thecompany.net</prop>
        </props>
    </property>
    
        2
  •  3
  •   Community Mohan Dere    9 年前

    尝试添加具有正确值的属性“mail.smtp.localhost”( 公司网 ).

        3
  •  1
  •   matt b    17 年前

    javaMailProperties 财产?

    <bean id="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" >
        <property name="host" value="mail.thecompany.net" />
        <property name="port" value="25" />
        <!-- addition: -->
        <property name="javaMailProperties">
            <props>
                <prop key="hostname">thecompany.net</prop>
            </props>
        </property>
    </bean>
    

    不太确定正确的键名是什么 hostname

        4
  •  0
  •   MahdeTo Ben ODay    17 年前

    我认为在你的情况下,这是一个地址解析问题。确保可以使用您部署此代码的计算机上的给定名称访问邮件服务器。如果不是,只需在hosts文件中添加一个条目。

        5
  •  0
  •   dswiecki    9 年前

    SMTPTransport mailFrom()按以下顺序设置发件人的地址:

    SMTPMessage.getEnvelopeFrom()
    mail.smtp.from property
    From: header in the message
    System username using the InternetAddress.getLocalAddress() method
    

    你只需要添加属性 from javaMailProperies 发送至您的电子邮件地址