在jsp中發送email !

14 篇文章 0 订阅
 作者/出處:Blueski編譯(包含了2篇文章,前篇用了sun.net.smtp,後一篇用了javamail.

一、我們可以通過任何支持sun規範中的sun.net.smtp包的JSP引擎(如JSWDK)發送mail。
(警告:使用內置的internal Sun規範包,這將影響到你的jsp程序的可移植性。)

以下scriptlet利用SmtpClient類在jsp文件中發送email。

<%@ page import="sun.net.smtp.SmtpClient, java.io.*" %>
<%
String from="gseshadri@hotmail.com";
String to="govind@jguru.com, govi@bigfoot.com";
try{
SmtpClient client = new SmtpClient("mail.xxxxx.xxx");
client.from(from);
client.to(to);
PrintStream message = client.startMessage();
message.println("To: " + to);
message.println("Subject: Sending email from JSP!");
message.println("This was sent from a JSP page!");
message.println();
message.println("Cool beans! :-)");
message.println();
message.println("Govind Seshadri");
message.println("jGuru.com");
message.println();
client.closeServer();
}
catch (IOException e){
System.out.println("ERROR SENDING EMAIL:"+e);
}
%>


二、 JavaMail是官方的 Java mail API,可參考 http://java.sun.com/products/javamail/。雖然該API比 sun.net.smtp.SmtpClient更豐富或者說更複雜,但它是可移植的。這裡重新創建了一個 MailSender類,它包含了 JavaMail API。如下所示:


// ms_ prefix is for MailSender class variables
// str prefix is for String
// astr prefix is for array of Strings
// strbuf prefix is for StringBuffers, etc.
public MailSender(
String strFrom, // sender
String[] astrTo, // recipient(s)
String[] astrBCC, // bcc recipient(s), optional
String strSubject, // subject
boolean debugging)
{
ms_strFrom = strFrom; // who the message is from
ms_astrTo = astrTo; // who (plural) the message is to
ms_debugging = debugging; // who (plural) the message is to

// set the host
Properties props = new Properties();
props.put("mail.smtp.host", ms_strSMTPHost);

// create some properties and get the default Session
Session session = Session.getDefaultInstance(props, null);
session.setDebug(ms_debugging);

try {
// create a message
ms_msg = new MimeMessage(session);

// set the from
InternetAddress from = new InternetAddress(strFrom);
ms_msg.setFrom(from);

// set the to
InternetAddress[] address = new InternetAddress[astrTo.length];
for (int i = 0; i astrTo.length; ++i)
{
address[i] = new InternetAddress(astrTo[i]);
}
ms_msg.setRecipients(Message.RecipientType.TO, address);

// set the bcc recipients
if (astrBCC != null)
{
address = new InternetAddress[astrBCC.length];
for (int i = 0; i astrBCC.length; ++i)
{
eh.dbg("astrBCC[" + i + "] is: '" + astrBCC[i] + "'");
address[i] = new InternetAddress(astrBCC[i]);
}
ms_msg.setRecipients(Message.RecipientType.BCC, address);
}

// set the subject
ms_msg.setSubject(strSubject);

// set up the string buffer which will hold the message
ms_strbufMsg = new StringBuffer();

} catch (MessagingException mex) {
mex.printStackTrace(System.err);
} catch (Exception ex) {
ex.printStackTrace(System.err);
}
}

public void ms_add(String strText)
{
ms_strbufMsg.append(strText);
}

public void ms_send()
{
try {
// set the content as plain text
ms_msg.setContent(new String(ms_strbufMsg), "text/plain");

// and away
Transport.send(ms_msg);
} catch (Exception ex) {
System.out.println("Caught exception in MailSender.ms_send: " + ex);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要在JSP页面中编写一个表单,例如: ``` <form method="post" action="send.jsp"> <input type="text" name="name" placeholder="姓名"> <input type="email" name="email" placeholder="邮箱"> <textarea name="message" placeholder="留言"></textarea> <button type="submit">提交</button> </form> ``` 其中,form的method为post,action为send.jsp,表示提交表单数据到send.jsp页面进行处理。 在send.jsp页面中,可以通过request.getParameter()方法获取表单中提交的数据,例如: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String name = request.getParameter("name"); String email = request.getParameter("email"); String message = request.getParameter("message"); // 这里可以进行业务逻辑处理,例如将数据保存到数据库中 // 发送成功后弹出提示框 out.println("<script>alert('发送成功!');location.href='index.jsp';</script>"); %> ``` 在处理表单数据后,可以通过out.println()方法输出JavaScript代码,例如弹出发送成功的提示框,并跳转回首页。 如果发送失败,可以通过类似的方式弹出失败提示框,例如: ``` out.println("<script>alert('发送失败,请重试!');history.back();</script>"); ``` 以上代码实现了JSP页面提交表单数据,并在处理后弹出发送成功或失败的提示框。需要注意的是,在实际应用中需要进行数据验证和安全防范,以避免恶意提交和数据泄露等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值