javax.mail.SendFailedException: Invalid Addresses; nested exception is: class com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 Mailbox <null> does not exist ; nested exception is: class com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 Mailbox <null> does not exist at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1141) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:536) at javax.mail.Transport.send0(Transport.java:151) at javax.mail.Transport.send(Transport.java:80) at util.MailUtil.sendMail(MailUtil.java:184) at mail.MailBusiness.sendMailIm(MailBusiness.java:272) at mail.MailThread.run(MailThread.java:25)
原因可能是发送邮件的地址、帐号、密码、接收人、抄送人、密抄等错误,仔细检查。
参考:http://www.magicwinmail.com/docs/returnmail/returnmail.htm
由于在保存为空的如抄送人时,保存下来的不是null,而是‘null’字符串,因此出现错误。
如下:
因此需要修改,改成
/** * 给值生成引号 * <br> * author:os.liuqiang * <br> * 2016-10-26 * @param obj * @return */ private String valueStr(Object obj) { if(obj!=null) { return "'"+obj.toString()+"'"; } return null; }
....
String id=valueStr((Object)tmpMo.getId()); String server_id=valueStr((Object)tmpMo.getServerId()); String app_id=valueStr((Object)tmpMo.getAppId()); String mtype_id=valueStr((Object)tmpMo.getMtypeId()); String mail_id=valueStr((Object)tmpMo.getMailId()); String mail_from=valueStr((Object)tmpMo.getMailFrom()); String mail_to=valueStr((Object)tmpMo.getMailTo()); String mail_cc=valueStr((Object)tmpMo.getMailCc()); String mail_bcc=valueStr((Object)tmpMo.getMailBcc()); String mail_subject=valueStr((Object)tmpMo.getMailSubject()); String mail_body=valueStr((Object)tmpMo.getMailBody()); String status=valueStr((Object)tmpMo.getStatus()); sql = "insert into MAIL_SEND_IM(id,server_id,app_id,mtype_id,mail_id,mail_from,mail_to,mail_cc," + " mail_bcc,mail_subject,mail_body,status,create_dt) " + "values("+id+","+server_id+","+app_id+","+mtype_id+","+mail_id+","+mail_from+","+mail_to+","+ mail_cc+","+mail_bcc+","+mail_subject+","+mail_body+","+status+",getdate() )"; System.out.println("insert SQL:"+sql); retV=dbSession.createSQLQuery(sql).executeUpdate();