在JSP中应用Java Mail组件发送E-mail
1.创建mailsend.jsp并写入form表单
<form name="form1" method="post" action="deal.jsp" onSubmit="return checkform(form1)">
<table>
<tr><td>收件人:</td><td><input name="to" type="text" id="to" title="收件人" size="60"></td></tr>
<tr><td>发件人:</td><td><input name="form" type="text" id="form" title="发件人" size="60"></td></tr>
<tr><td>密码:</td><td><input name="password" type="password" id="password" title="发件人信箱密码" size="60"></td></tr>
<tr><td>主题:</td><td><input name="subject" type="text" id="subject" title="邮件主题" size="60"></td></tr>
<tr><td>内容:</td><td><textarea name="content" cols="59" rows="7" class="wenbenkuang" id="cotent" title="邮件内容" ></textarea></td></tr>
<tr>
<td><input name="Submit" type="submit" class="btn_grey" value="发送"></td>
<td><input name="Submit2" type="reset" class="btn_grey" value="重置" ></td>
</tr>
</table>
</form>
2.利用js脚本防止输入空值
<script type="javascript">
function checkform(myform){
for(i = 0;i<myform.length;i++){
if(myform.elements[i].value == ""){
alert(myform.elements[i].title + "不能为空!");
myform.elements[i].focus();
return false;
}
}
}
</script>
3.创建deal.jsp,并设置mail
<%
try{
request.setCharacterEncoding("utf-8");
String from = request.getParameter("form");
String to = request.getParameter("to");
String subject = request.getParameter("subject");
String messageText = request.getParameter("content");
String password = request.getParameter("password");
//建立邮箱会话
Properties pro = new Properties();
pro.put("username", from);
pro.put("password", password);
pro.put("mail.transport.protocol", "smtp" );
pro.put("mail.smtp.host","smtp.163.com");
pro.put("mail.smtp.port","25");
pro.put("mail.smtp.auth", true);
Session sess = Session.getDefaultInstance(pro);
sess.setDebug(true);
//新建一个消息对象
MimeMessage message = new MimeMessage(sess);
//设置发件人
InternetAddress from_mail = new InternetAddress(from);
message.setFrom(from_mail);
//设置收件人
InternetAddress to_mail = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO, to_mail);
//设置主题
message.setSubject(subject);
//设置内容 文本用setText,HTML格式用setContent
message.setText(messageText);
//设置发送时间
message.setSentDate(new Date());
//发送邮件
message.saveChanges(); //保证报头域同会话内容保持一致
Transport transport = sess.getTransport("smtp");
transport.connect(pro.getProperty("mail.smtp.host"),pro.getProperty("username"),pro.getProperty("password"));
transport.sendMessage(message,message.getAllRecipients());
transport.close();
out.println("<script language='javascript'>alert('邮件已发送!');window.location.href='Demo7_2_sendmail.jsp';</script>");
}catch(Exception e){
System.out.println("发送邮件产生的错误:" + e.getMessage());
out.println("<script language='javascript'>alert('邮件发送失败!');window.loca-tion.href='Demo7_2_sendmail.jsp';</script>");
}
%>
注:我用了163的邮箱,这里需要在设置打开POP3/STMP
并且邮箱输入的密码为这里设置的
5.最后输入信息发送即可