用javamail发邮件总是报错怎么办啊?
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause
java.lang.NullPointerException
javax.mail.internet.InternetAddress.parse(InternetAddress.java:569)
javax.mail.internet.InternetAddress.parse(InternetAddress.java:529)
javax.mail.internet.InternetAddress.<init>(InternetAddress.java:65)
org.apache.jsp.beta1.sendmail_jsp._jspService(sendmail_jsp.java:164)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
发送邮件代码段:
try{
Properties props = System.getProperties();
Session mailSession = Session.getInstance(props, null);
InternetAddress from = new InternetAddress("guoshun@jianye.net");
//向属性中写入SMTP服务器地址
props.put("mail.smtp.host","jianye.net");
//服务器需要认证
props.put("mail.smtp.auth","true");
mailSession.setDebug(true);
//根据Session 生成Message对象
Message message = new MimeMessage(mailSession);
//设置发信人地址
message.setFrom(from);
//设置收信人地址
message.addRecipient(Message.RecipientType.TO,new InternetAddress(request.getParameter("to")));
//设置email标题
message.setSubject(new String(request.getParameter("subject").getBytes("ISO8859_1"),"GBK"));
//设置email发送时间
message.setSentDate(new Date());
//获得attachment参数
String attachment=new String(request.getParameter("attachment").getBytes("ISO8859_1"),"GBK");
//如果有附件
if (!attachment.equals("")){
// 建立第一部分,正文文本
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(new String(request.getParameter("text").getBytes("ISO8859_1"),"GBK"));
// 建立多个部分Multipart实例
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
// 建立第二部分,附件
messageBodyPart = new MimeBodyPart();
// 获得附件
DataSource source = new FileDataSource(attachment);
// 设置附件的数据处理器DataHandler
messageBodyPart.setDataHandler(new DataHandler(source));
// 设置文件名
messageBodyPart.setFileName(attachment);
// 加入第二部分
multipart.addBodyPart(messageBodyPart);
// 将多个部分放到Email中
message.setContent(multipart);
}else{
message.setText(new String(request.getParameter("text").getBytes("ISO8859_1"),"GBK"));
}
//发送email
message.saveChanges();
Transport transport = mailSession.getTransport("smtp");
transport.connect("jianye.net","username","password");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
%>
<P>你的邮件已经成功发送!</P>
<%
}
catch(MessagingException m){
out.println(m.toString());
}
%>
相关推荐
使用JavaMail发送邮件
前言:使用java发送邮件,首先要引入相关类,主要是封装邮件SMTP协议的一些工具 我用的是Gradle 所以把下面这句话粘贴到 工程下/build.gradle的dependencies{ // https://mvnrepository.com/artifact/com.sun.mail/javax.mail compile group: 'com.sun.mail', name: 'javax.mail', version: '1.6.2' } 至于怎么找这些这些jar包工具,推荐大家上https://mvnrepository.com/网站,基本涵盖所有的三方库的远程仓库。 废话不多
ant-javamail-1.6.5.jar
Jenkins构建结果发送邮件所需jar包,本人发表的文章标题为《使用Jenkins-ant-jmeter发送构建结果到指定邮箱报错的问题》所需jar包
Mail 错误com/sun/mail/util/LineInputStream。javaee.jar 开发包
经过研究摸索终于解决了! 该开发包是解决 JavaMail 发送邮件报错:java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream错误 ava.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream 使用方法: 将javaee.jar 复制到C:\Program Files\Genuitec\Common\plugins\com.genuitec.eclipse.j2eedt.core_8.6.1.me201010211225\data\libraryset\EE_5 这个目录将原有的覆盖,重启下服务就OK了。(myeclipse版本不一样那就搜索EE_5这个目录下找到javaee.jar 覆盖掉就可以了)
mail.jar.zip
Spring 发送邮件必须的jar包之一 进行解析时,缺失mail.jar 也会报错
mail.jar包
Spring 发送邮件必须的jar包之一 进行解析时,缺失mail.jar 也会报错


Web 开发
