我要发送用户的密码到他的Email,怎么办?网上有很多代码,都是利用sina,163等公司的邮件服务器,都需要密码。假如不用别的公司的服务器,有免费好用的邮件服务器吗,怎么设置?
解决方案 »
- 文件下载问题: java.lang.IllegalStateException: getWriter() has already been called for this response
- jsp页面相同列如何合并
- jquery取值问题 求高手解答 谢谢 坐等啦
- 一个简单的applet键盘监听事件
- 关于Session失效问题
- 业务层Bean调展示层jsp显示信息怎么传递?
- 用jive改了个BBS,正困惑于导航方式的选择,请大家帮忙,多谢了(http://www.iswww.net/bbs/index.jsp)
- JDK与SDK有什么区别?
- js 日期格式转换
- 请问怎样才能使超链接可以包含中文?
- 开发web应用难于上青天,web开发十八难
- 论坛中引用功能怎么实现!急,急,急
網上很多資料吧。我搞過是用163來發的。感覺還不錯。試試吧。樓主
JavaMail类文件包和JAF(JavaBeans Activation Framework )
一、导入包
分别解压缩你下载的2个包,随便放哪里无所谓。我是放在JSDK文件夹下。然后分别找到mail.jar和activation.jar这2个包,复制下这2个包到 H:\jdk1.4\jre\lib\ext。如果你照着里面的README做,会报错的。二、编写代码
2个页面(简单点,说明问题就行)
表单:用来填写一些基本信息,发信者邮箱、收信者信箱、标题、邮件内容。
JSP处理页面:用来发信。
代码如下:(表单)
<HTML>
<BODY>
<FORM action="sendmail.jsp" method="post">
<TABLE align="center">
<TR>
<TD width="50%">
To:<BR><INPUT name="to" size="25">
</TD>
<TD width="50%">
From:<BR><INPUT name="from" size="25">
</TD>
</TR>
<TR>
<TD colspan="2">
Subject:<BR><INPUT name="subject" size="50">
</TD>
</TR>
<TR>
<TD colspan="2">
Message:<BR><TEXTAREA name="text" rows=25 cols=85></TEXTAREA>
</TD>
</TR>
</TABLE>
<INPUT type="submit" name="cb_submit" value=" Send ">
<INPUT type="reset" name="cb_reset" value=" Clear ">
</FORM>
</BODY>
</HTML> JSP页面代码:
%@ page
import=" javax.mail.*, javax.mail.internet.*, javax.activation.*,java.util.*"
%>
<html>
<head>
<TITLE>JSP meets JavaMail, what a sweet combo.</TITLE>
</HEAD>
<BODY>
<%
try{
Properties props = new Properties();
Session sendMailSession;
Store store;
Transport transport;
String usr="××";//这里填写你发信者的邮箱地址
String pwd="××";//这里填写你发信者的邮箱密码
props.put("mail.smtp.host","smtp.××.com"); //这里填写你发信者的SMTP主机,如:smtp.sohu.com
props.put("mail.smtp.user",usr);
props.put("mail.smtp.password",pwd);
props.put("mail.smtp.auth","true");
sendMailSession = Session.getInstance(props,new Authenticator(){
public PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication("××", "××"); }//这里填写你发信者的邮箱地址和密码
});//关键是这句,网上文档几乎没有,我查了大半天才查出来。如果你的邮箱是SMTP验证的,就得这么写。否则会报错。Session.getInstance(props)这个方法是针对SMTP不要求验证的,我的邮箱要验证,所以得这么写。
Message newMessage = new MimeMessage(sendMailSession);
newMessage.setFrom(new InternetAddress(request.getParameter("from")));
newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(request.getParameter("to")));
newMessage.setSubject(request.getParameter("subject"));
newMessage.setSentDate(new Date());
newMessage.setText(request.getParameter("text"));
transport = sendMailSession.getTransport("smtp");
transport.send(newMessage);
%>
<P>Your mail has been sent.</P>
<%
}
catch(MessagingException m)
{
out.println(m.toString());
}
%>
</BODY>
</HTML> 三、调试
开启TOMCAT,调试一下就可以了。四、注意点
在表单填写的发信者的邮箱地址千万记住要和JSP页面里的对应,否则会报错!
————————————————————————————————
既然发送者的邮箱固定死了,那么就没必要在表单里填写了。
你用的还是别的大公司的邮箱啊。我需要发送一些保密的信息,这样不妥吧。