用javamail发邮件总是报错怎么办啊?

gscool 2004-05-05 03:09:30
错误提示:exception

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());
}
%>
...全文
139 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Frank_Xu 2004-05-06
  • 打赏
  • 举报
回复
webmail.zip只保留一個星期,7天後刪除,如有需要請盡快下載
Frank_Xu 2004-05-06
  • 打赏
  • 举报
回复
整個收發郵件下載地址 http://211.147.240.22/upload/000/webmail.zip
包含整個Jbuilder寫的webmail project

下載解壓可以直接用Tomcat發佈測試
qingzhuang 2004-05-06
  • 打赏
  • 举报
回复
我觉得应该是这里的问题props.put("mail.smtp.host","jianye.net");jianye.net这里是正确的mail服务器吗?
fuzuyuan 2004-05-05
  • 打赏
  • 举报
回复
我用你的程序发过邮件,没有问题啊,很正常。不过,我用的是sina的邮箱,这应该不是问题,只要你确定你的smtp,用户名和密码没错就可以了,最好用outlook配置检测一下。
根据你的错误提示
javax.mail.internet.InternetAddress.parse(InternetAddress.java:569)
好象是地址没有正确解析,导致这个原因的产生可能是to的地址没有传过来,也就是说to 没有参数传过来(也许是你忘写了)。
你把下面的html代码拷过去,运行试试能不能成功
<HTML>
<BODY>
<FORM action="mail.jsp" method="post">
<TABLE align="center">
<TR>
<TD width="50%">
To:<BR><INPUT name="to" size="25">
</TD>
<TD></TD>
</TR>
<TR>
<TD colspan="2">
Subject:<BR><INPUT name="subject" size="50">
</TD>
</TR>
<TR>
<TD colspan="2">
<input type="file" name="attachment">
</TD>
</TR>
<TR>
<TD colspan="2">
<P>Message:<BR><TEXTAREA name="text" rows=25 cols=85></TEXTAREA></P>
</TD>
</TR>
</TABLE>
<INPUT type="submit" name="cb_submit" value=" Send ">
<INPUT type="reset" name="cb_reset" value=" Clear ">
</FORM>
</BODY>
</HTML>
gscool 2004-05-05
  • 打赏
  • 举报
回复
先声明:smtp地址,用户名和密码都没有错

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧