Java测试发送邮件的时候经常出现异常,检查多次账户名密码无误后,依然出现如下图错误: 之前不清楚,后面在网上得到提醒,我们所使用的smtp服务器使用的密码与我们自身登录网页端邮箱的密码是不一样的,以163邮箱为例,当我们设置打开smtp服务时会要求我们设
下载地址:
下载1 封装好的java邮件包,代码调用示例 public static void main(String[] args) throws Exception {
FinderSendMail sendMail;
MailInfo mailInfo =new MailInfo();
mailInfo.setTitle("test title");
mailInfo.setFrom("xxx@163.com");
mailInfo.setHost("smtp.163.com");
mailInfo.setTo("xxx@gmail.com");
mailInfo.setUsername("xxx@163.com");
mailInfo.setPassword("xxx");
//mailInfo.setContentType("text/html");
mailInfo.setContent("welcome to 技术社区");
sendMail=new FinderSendMail(mailInfo);
sendMail.send();
} 就这么简单调用,就发出去了, 依赖包 activition.jar,mail.jar, log4j.jar 如果你放在有JAVAEE.JAR 环境下 运行 会有一下错误问题 首次运行你可能会遇到以下的错误,所以note.txt文件就用来提供遇到的错误以及对应的解决方案 note.txt java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
at javax.mail.Session.loadProvidersFromStream(Session.java:928)
at javax.mail.Session.access$000(Session.java:174)
at javax.mail.Session$1.load(Session.java:870)
at javax.mail.Session.loadResource(Session.java:1084)
at javax.mail.Session.loadProviders(Session.java:889)
at javax.mail.Session.(Session.java:210)
at javax.mail.Session.getDefaultInstance(Session.java:299)
at mail.SendMail.sendMail(SendMail.java:31)
at mail.SendMail.main(SendMail.java:50) Exception in thread "main"
解决方案:在myeclipse的安装目录下搜索javaee.jar,然后用压缩软件打开,删除javax下的mail文件夹 java.lang.NoClassDefFoundError: com/sun/activation/registries/LogSupport
at javax.activation.MailcapCommandMap.(MailcapCommandMap.java:140)
at javax.activation.CommandMap.getDefaultCommandMap(CommandMap.java:61)
at javax.activation.DataHandler.getCommandMap(DataHandler.java:153)
at javax.activation.DataHand1、注册一个网易邮箱,开通smtp服务,作为发送邮件的邮箱服务器 2、jar包准备commons-email-1.3.3.jar,activation.jar等,源码有提供 3、准备工作 //设置smtp host,QQ邮箱邮件服务器为smtp.qq.com,此处为163 邮箱
private static final String HostName = "ler.getDataContentHandler(DataHandler.java:611)
at javax.activation.DataHandler.writeTo(DataHandler.java:315)
at javax.mail.internet.MimeUtility.getEncoding(MimeUtility.java:264)
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1299)
at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2071)
at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2039)
at javax.mail.Transport.send(Transport.java:119)
at mail.SendMail.sendMailNoValidate(SendMail.java:48)
at mail.SendMail.main(SendMail.java:96) Exception in thread "main"
解决方案:在myeclipse的安装目录下搜索javaee.jar,然后用压缩软件打开,删除javax文件夹下的activation文件夹 javax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.MessagingException: 503 Error: need EHLO and AUTH first !
at javax.mail.Transport.send0(Transport.java:219)
at javax.mail.Transport.send(Transport.java:81)
at com.asiainfo.bboss.sendmail.SendMailServiceImpl.sendMailNoValidate(SendMailServiceImpl.java:210)
at com.asiainfo.bboss.sendmail.SendMailServiceImpl.sendMail(SendMailServiceImpl.java:243)
at com.asiainfo.bboss.sendmail.SendMailServiceImpl.main(SendMailServiceImpl.java:261) 解决方案:props.put("mail.smtp.auth", "true");
javax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.AuthenticationFailedException
at javax.mail.Transport.send0(Transport.java:219)
at javax.mail.Transport.send(Transport.java:81)
at com.asiainfo.bboss.sendmail.SendMailServiceImpl.sendMailNoValidate(SendMailServiceImpl.java:211)
at com.asiainfo.bboss.sendmail.SendMailServiceImpl.sendMail(SendMailServiceImpl.java:244)
at com.asiainfo.bboss.sendmail.SendMailServiceImpl.main(SendMailServiceImpl.java:262) 解决方案: MyAuthenticator myauth = new MyAuthenticator(mailInfo.getUsername(),password);