连接到outlook.com smtp服务器时出现Spring邮件错误

时间:2014-03-13 19:05:34

标签: java spring email javamail

我正在尝试通过我的outlook.com帐户发送电子邮件(映射到特定域,我的电子邮件ID就像emailId@mydomain.com

我收到以下异常。

  

2014-03-14 00:27:55,314 [pool-1-thread-1]错误   org.springframework.scheduling.support.MethodInvokingRunnable -   在目标类[class]上调用方法'sendMail'   com.sixthsense.lws.scheduler.TestMailSenderJob]失败了   org.springframework.mail.MailSendException:失败的消息:   com.sun.mail.smtp.SMTPSendFailedException:501 5.5.4无效的电子邮件   地址 ;嵌套异常是:     com.sun.mail.smtp.SMTPSenderFailedException:501 5.5.4无效的电子邮件   地址 ;消息异常详细信息(1)是:失败消息1:   com.sun.mail.smtp.SMTPSendFailedException:501 5.5.4无效的电子邮件   地址 ;嵌套异常是:     com.sun.mail.smtp.SMTPSenderFailedException:501 5.5.4无效的电子邮件   地址

     

在   com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108)     at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609)     在   com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117)     在   org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:416)     在   org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:306)     在   org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:296)     在   com.sixthsense.lws.scheduler.TestMailSenderJob.sendMail(TestMailSenderJob.java:34)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:601)at   org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)     在   org.springframework.scheduling.support.MethodInvokingRunnable.run(MethodInvokingRunnable.java:65)     在   org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:51)     在   java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471)     在   java.util.concurrent.FutureTask中$ Sync.innerRunAndReset(FutureTask.java:351)     在java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)     在   java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.access $ 301(ScheduledThreadPoolExecutor.java:178)     在   java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:603)     在java.lang.Thread.run(Thread.java:722)引起:   com.sun.mail.smtp.SMTPSenderFailedException:501 5.5.4无效的电子邮件   地址

     

at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1616)     ......还有20个

我的弹簧配置如下

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

以下代码发送电子邮件

@Service
public class TestMailSenderJob {

    @Autowired
    JavaMailSender mailSender;

    public JavaMailSender getMailSender() {
        return mailSender;
    }

    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    @Scheduled(fixedDelay=5000)
    public void sendMail()
    {
        System.out.println("############invoked sendMail");
        SimpleMailMessage message = new SimpleMailMessage();

        message.setTo("to@mailId.com");
        message.setSubject("Test mail "+new Date().toString());
        message.setText("test body");
        getMailSender().send(message);
        System.out.println("######### email send");
    }

}

我正在使用oracle提供的jar用于电子邮件版本javamail-1.4.7。 编辑:我可以通过Outlook网络界面在我的Outlook帐户(用于程序中的smtp)中发送接收电子邮件。

2 个答案:

答案 0 :(得分:4)

修复了atlast,在消息

中添加
 message.setFrom("from@mailId.com");

答案 1 :(得分:0)

我在堆栈跟踪的很多地方读到了这个:&#34;无效的电子邮件地址&#34;。请在您的代码中查看。

另一方面,为了安全起见,请使用maven repo中的javax.mail-1.4.7。