【 tulaoshi.com - Java 】
                             
                               在jsp中发送email 
一、我们可以通过任何支持sun规范中的sun.net.smtp包的JSP引擎(如JSWDK)发送mail。 
(警告:使用内置的internal Sun规范包,这将影响到你的jsp程序的可移植性。) 
以下scriptlet利用SmtpClient类在jsp文件中发送email。 
二、 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); 
} 
}