小弟不才,提问JavaMail问题,100相送各路大侠!

AlexGL 2004-12-12 10:21:28
我的机子能通过ADSL上网,现配置好J2SE、Resin,JSP普通程序能正常运行,现想写利用JavaMail进行收发电子邮件的Web程序,已经将Mail.jar、activation.jar拷贝到WebInf的Lib文件夹中程序调试了很长时间,参考了很多文档(除了英文文档),未能写成普通收发电邮的WEB程序,现向各位请教。

Send.htm代码如下:

<html>

  <BODY>

  <FORM action="sendmail2.jsp" method="post">

   <TABLE align="center">

    <TR>

     <TD width="50%">

      收件人:<BR><INPUT name="to" size="25">

     </TD>

     <TD width="50%">

      寄信人:<BR><INPUT name="from" size="25">

     </TD>

    </TR>

    <TR>

     <TD colspan="2">

      主题:<BR><INPUT name="title" size="50">

     </TD>

    </TR>

    <TR>

     <TD colspan="2">

      <p>邮件正文:<BR><TEXTAREA name="content" rows=25 cols=85></TEXTAREA></p>

     </TD>

    </TR>

    </TABLE>

    <INPUT type="submit" name="cb_submit" value="发送">

    <INPUT type="reset" name="cb_reset" value="重写">

   </FORM>

  </BODY>

  </HTML>

sendmail2.jsp程序代码如下:

<%@ page import=" javax.mail.*, javax.mail.internet.*, javax.activation.* "%>
<%@ page import="java.util.*" %>
<body>
<%
try{

//从html表单中获取邮件信息
String tto=request.getParameter("to");
String ttitle=request.getParameter("title");
String tcontent=request.getParameter("content");

Properties props=new Properties();//也可用Properties props = System.getProperties();
props.put("mail.smtp.host","smtp.163.com");//存储发送邮件服务器的信息
props.put("mail.smtp.auth","true");//同时通过验证
Session s=Session.getInstance(props);//根据属性新建一个邮件会话
s.setDebug(true);

MimeMessage message=new MimeMessage(s);//由邮件会话新建一个消息对象

//设置邮件
InternetAddress from=new InternetAddress("");
message.setFrom(from);//设置发件人
InternetAddress to=new InternetAddress(tto);
message.setRecipient(Message.RecipientType.TO,to);//设置收件人,并设置其接收类型为TO
message.setSubject(ttitle);//设置主题
message.setText(tcontent);//设置信件内容
message.setSentDate(new Date());//设置发信时间

//发送邮件
message.saveChanges();//存储邮件信息
Transport transport=s.getTransport("smtp");
transport.connect("smtp.163.com","","");//以smtp方式登录邮箱
transport.sendMessage(message,message.getAllRecipients());//发送邮件,其中第二个参数是所有
//已设好的收件人地址
transport.close();

%>
<div align="center">
<p><font color="#FF6600">发送成功!</font></p>
<p><a href="recmail.jsp">去看看我的信箱</a><br/>
<br/>
<a href="index.htm">再发一封</a> </p>
</div>
<%
}catch(MessagingException e){
out.println(e.toString());
}
%>
</body>
</html>



  </BODY>

  </HTML>

错误如下:


java.lang.NoClassDefFoundError: javax/activation/DataSource
at _sendmail2__jsp._jspService(/jmail/sendmail2.jsp:19)
at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
at com.caucho.jsp.Page.subservice(Page.java:497)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)
at com.caucho.server.http.Invocation.service(Invocation.java:315)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:164)
at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
at java.lang.Thread.run(Thread.java:534)

很不理解(我已经把activation.jar加载了啊),望各路大侠能不吝赐教!!
另,很多网站的Email服务器都需要密码验证,我的程序是否需要修改一下?在哪改啊,我是菜鸟,还情多帮忙啊。
...全文
150 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcdll 2004-12-13
  • 打赏
  • 举报
回复
将activation.jar copy到你的resin下的lib目录或是设置到classpath下
jackkui 2004-12-13
  • 打赏
  • 举报
回复
给你一个例子。
package jmail;
import com.sun.mail.imap.Utility;

import javax.mail.internet.*;
import javax.mail.Session;
import javax.mail.MessagingException;
import javax.mail.Message;
import javax.mail.Transport;
import javax.activation.FileDataSource;
import javax.activation.DataHandler;
import java.util.Properties;
import java.util.Date;
import java.util.ArrayList;
import java.io.UnsupportedEncodingException;


/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2004/12/01
* Time: 13:27:40
* To change this template use File | Settings | File Templates.
*/
public class SendJavaMail {

public SendJavaMail() {
}
public static void main(String[] args){
try {
Properties properties = System.getProperties();
properties.put("mail.smtp.host","172.16.8.3");
Session sendSession = Session.getInstance(properties,null);
System.out.println(sendSession.getProperty("mail.smtp.host"));
InternetAddress[] mailTo = InternetAddress.parse("huangjq@dhc.com.cn");
Message message = new MimeMessage(sendSession);
message.setFrom(new InternetAddress("huangjq@dhc.com.cn"));
message.setRecipients(Message.RecipientType.TO,mailTo);
message.setSubject("This message is sent by javamail");
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent("This is a mail with file","text/html;charset=GB2312");
multipart.addBodyPart(bodyPart);
ArrayList attachment = new ArrayList();
attachment.add(0,"picture2.jpg");
attachment.add(1,"picture3.jpg");
attachment.add(2,"picture4.jpg");
attachment.add(3,"picture5.jpg");
message.setContent(multipart);
message.setSentDate(new Date());
Transport transport = sendSession.getTransport("smtp");

transport.connect("server","","");
System.out.println(transport.toString());
transport.sendMessage(message,mailTo);
transport.close();
System.out.println("The mail has sent");
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException me){
me.printStackTrace();
}
}
}
CALM 2004-12-13
  • 打赏
  • 举报
回复
楼上两位说的很全了,再给你个例子
http://www.javaresearch.org/article/showarticle.jsp?column=2&thread=12137
Idora 2004-12-13
  • 打赏
  • 举报
回复
你用google查关键字:javamail+authenticator就可以找到你要的解决方案了,需要将你的用户名和密码加进去
ivorstar 2004-12-12
  • 打赏
  • 举报
回复
不好意思,写错地方了
ivorstar 2004-12-12
  • 打赏
  • 举报
回复
建议转贴吧
内容概要:本文针对质子交换膜燃料电池(PEMFC)在动态压力工况下的最大功率点跟踪(MPPT)问题,提出了一种压力工况协同调控下的自适应高阶滑模控制策略,并基于Simulink平台完成了系统建模与仿真实现。该策略融合高阶滑模控制的强鲁棒性与自适应机制的参数在线优化能力,有效克服了PEMFC系统固有的非线性、外部扰动及工况时变性等挑战,实现了对最大功率点的快速、精确与稳定跟踪。研究内容涵盖控制策略的理论设计、李雅普诺夫稳定性分析、自适应律构建以及在多种动态工况下的仿真实验验证,结果表明该方法相较于传统控制策略具有更快的动态响应速度、更小的稳态振荡以及更强的抗干扰能力,显著提升了PEMFC系统的能量转换效率与运行稳定性。; 适合人群:具备一定控制理论基础和Simulink仿真经验,从事新能源发电系统、燃料电池控制、电力电子变换或先进控制算法研究的研发人员及高校研究生。; 使用场景及目标:①应用于燃料电池发电系统的高性能最大功率点跟踪控制设计;②为解决强非线性、多扰动耦合的能源系统提供先进的自适应鲁棒控制方案;③通过Simulink仿真验证高阶滑模与自适应控制算法的有效性,服务于科研项目攻关或工程原型开发。; 阅读建议:建议读者结合Simulink模型同步学习,重点关注控制律设计原理、自适应机制实现方式及仿真结果对比分析部分,并可通过与传统滑模控制进行对比,深入理解该策略在鲁棒性与动态性能上的优越性。
下拉可见数据集可视化效果示意。 【数据集概况】 · 检测类别(中文):[滴落物(Drop)] · 训练集:2021 张 · 验证集:128 张 · 测试集:42 张 · 总计:2191 张 该数据集聚焦于工业生产环境中地面或设备表面出现的各类滴落物检测,通过多角度、多光照条件下的图像采集,全面覆盖了不同形态、颜色和材质的滴落物样本。数据集真实还原了车间地面、金属板、木质结构等复杂背景下的实际场景,为自动化巡检系统提供了高价值的视觉依据,有助于实现对潜在污染源或泄漏点的早期识别与预警。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 71 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.8949** mAP50-95 | 0.5139 Precision | 0.8991 Recall | 0.8527 train/box_loss | 0.8544 train/cls_loss | 0.4842 val/box_loss | 1.5612 val/cls_loss | 0.6862 【训练过程分析】 71 轮训练后 mAP50 为 0.8949,模型基本收敛但还有提升余地。Loss 曲线下降正常,后期趋于平缓。mAP50-95 为 0.5139,和 mAP50 差距 0.38,定位精度是主要短板。 【模型性能评估】 Precision 0.8991、Recall 0.8527,精度高于召回,存在一定漏检。 【预测效果展示】 验证集预测效果较好,检测框基本准确覆盖滴落物,置信度整体偏高。 【改进建议】 1. 增强难例挖掘:在大规模数据中筛选误检...
【2026年华为杯D题】山区洪涝灾害下无人机运输与通信协同优化(思路、代码、论文,持续更新)内容概要:本文围绕山区洪涝灾害背景下无人机在运输与通信任务中的协同优化问题展开研究,旨在通过数学建模与算法设计解决复杂地理环境下的应急响应难题。文中提出了综合考虑无人机飞行路径规划、物资投送效率、通信中继覆盖能力及多机协同控制的优化模型,并结合智能优化算法(如灰狼优化算法、鲸鱼算法等)进行求解,确保在灾情紧急、基础设施受损的情况下实现高效、可靠的救援支持。研究涵盖了从任务建模、约束条件设定到多目标优化框架构建的全过程,强调了算法在实际场景中的鲁棒性与适应性。; 适合人群:具备一定编程基础和运筹优化知识,从事应急管理、无人机应用或智能算法研究的研发人员及高校研究生。; 使用场景及目标:①应对山区洪涝等自然灾害时的无人机应急物流与通信保障;②提升多无人机系统在复杂环境下的协同作业能力,优化路径规划与资源分配策略;③为相关科研项目提供可复现的算法模型与仿真代码参考。; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注多目标优化模型的构建逻辑与智能算法的实现细节,同时可参照其他类似无人机路径规划案例加深理解,以实现理论与应用的有效结合。

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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