我试图通过我的outlook.com帐户发送电子邮件(映射到特定的域,我的电子邮件id将像emailId@mydomain.com
我得到以下异常:
2014-03-14 00:27:55,314 [pool-1-thread-1] ERRORorg.springframework.scheduling.support.MethodInvokingRunnable -在目标类上调用方法'sendMail'com.sixthsense.lws.scheduler。TestMailSenderJob]失败org.springframework.mail.MailSendException:失败的消息:5.5.4邮件无效地址;嵌套异常是:5.5.4邮件无效地址;消息异常详细信息(1)有:5.5.4邮件无效地址;嵌套异常是: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(本机方法)atsun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java: 57)在sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java: 43)java.lang.reflect.Method.invoke(Method.java:601org.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)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>
下面的代码发送电子邮件
@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 web界面在我的outlook帐户(用于程序中的smtp)中发送接收电子邮件。
最终修复,添加from in message
message.setFrom("from@mailId.com");
我在堆栈跟踪的许多地方看到:"无效的电子邮件地址"。请在您的代码中检查。
另一件事,为了安全起见,请使用javax.mail-1.4.7从maven的repo