用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());
}
%>
...全文
188 5 打赏 收藏 转发到动态 举报
写回复
用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地址,用户名和密码都没有错
内容概要:本文系统研究了开关频率大于谐振频率(fs>fr)工况下,移相混合控制LLC谐振变换器在低压增益区域的工作特性,深入分析其在变频与移相结合控制模式下的调制机理、工作模态划分及损耗分布规律。通过Simulink平台构建高保真仿真模型,对变换器在不同负载和输入条件下的电压增益、转换效率、关键器件电压电流应力等性能指标进行了全面仿真验证,重点探讨了其在低增益区间的软开关实现能力与效率优化潜力,旨在提升LLC变换器在宽范围输入输出应用中的动态响应与能源转换效率。; 适合人群:从事电力电子变换器设计、高频电源开发及相关领域的高校研究生、科研院所研究人员及企业研发工程师,要求具备扎实的电路理论基础、电力电子技术知识以及一定的Simulink仿真能力。; 使用场景及目标:①深入理解LLC谐振变换器在fs>fr条件下采用移相混合控制的内在工作机理与模态转换过程;②掌握利用Simulink搭建复杂谐振变换器精确仿真模型的方法与技巧;③分析并优化低压增益区的增益特性与损耗构成,为设计高效率、高功率密度的软开关电源提供理论依据和数据支持; 阅读建议:建议读者结合文中所述仿真模型,亲自复现仿真过程,重点观察不同控制参数(如移相比、开关频率)对电压增益曲线和关键波形的影响,并对比传统变频控制策略,深入探究混合控制在拓宽调压范围、提升轻载效率方面的优势,从而深化对现代高效谐振电源设计的理解。
内容概要:本文提出了一种基于粒子群优化算法(PSO)的配电网光伏储能双层优化配置模型,以IEEE33节点系统为标准算例,实现光伏发电单元与储能系统的协同选址与定容优化。该模型采用双层架构设计,上层以投资成本、运行经济性及网络损耗最小为目标优化设备配置方案,下层通过潮流计算评估系统在不同负荷场景下的运行性能,综合考虑电压稳定性、供电可靠性及可再生能源消纳能力,最终通过Matlab编程实现完整求解流程,为高渗透率分布式电源接入背景下的配电网规划提供了有效的技术支撑。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、高校科研人员及从事新能源并网、智能配电网规划与优化的工程技术人员。; 使用场景及目标:①研究含高比例光伏接入的配电网规划与运行协同优化问题;②掌握双层优化建模方法与粒子群算法在复杂电力系统问题中的应用技巧;③为实际工程中分布式光伏与储能系统的科学选址与容量配置提供理论依据与仿真验证平台。; 阅读建议:建议读者结合Matlab代码深入理解双层迭代求解机制,重点关注算法收敛性分析、参数敏感性测试,并可通过更换初始种群、调整权重因子或引入其他标准测试系统(如IEEE69节点)进行对比实验,进一步验证所提模型的普适性与鲁棒性。

81,111

社区成员

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

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