我正在尝试通过我的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)中发送接收电子邮件。
答案 0 :(得分:4)
修复了atlast,在消息
中添加 message.setFrom("from@mailId.com");
答案 1 :(得分:0)
我在堆栈跟踪的很多地方读到了这个:&#34;无效的电子邮件地址&#34;。请在您的代码中查看。
另一方面,为了安全起见,请使用maven repo中的javax.mail-1.4.7。