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

Abh*_*ash 2 java email spring jakarta-mail

我正在尝试通过我的 Outlook.com 帐户发送电子邮件(映射到特定域,我的电子邮件 ID 将类似于 emailId@mydomain.com

我收到以下异常。

2014-03-14 00:27:55,314 [pool-1-thread-1]错误org.springframework.scheduling.support.MethodInvokingRunnable - 在目标类上调用方法“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) 在 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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect。 NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 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 无效的电子邮件地址

在 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>
Run Code Online (Sandbox Code Playgroud)

以下代码发送电子邮件

@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");
    }

}
Run Code Online (Sandbox Code Playgroud)

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

Abh*_*ash 5

修复了 atlast,从消息中添加

 message.setFrom("from@mailId.com");
Run Code Online (Sandbox Code Playgroud)