?
本文檔使用 PHP中文網(wǎng)手冊(cè) 發(fā)布
雖然使用JSP實(shí)現(xiàn)郵件發(fā)送功能很簡(jiǎn)單,但是需要有JavaMail API,并且需要安裝JavaBean Activation Framework。
下載并解壓這些文件,在根目錄下,您將會(huì)看到一系列jar包。將mail.jar包和activation.jar包加入CLASSPATH變量中。
這個(gè)例子展示了如何從您的機(jī)器發(fā)送一封簡(jiǎn)單的郵件。它假定localhost已經(jīng)連接至網(wǎng)絡(luò)并且有能力發(fā)送一封郵件。與此同時(shí),請(qǐng)?jiān)僖淮未_認(rèn)mail.jar包和activation.jar包已經(jīng)添加進(jìn)CLASSPATH變量中。
<%@?page?import="java.io.*,java.util.*,javax.mail.*"%> <%@?page?import="javax.mail.internet.*,javax.activation.*"%> <%@?page?import="javax.servlet.http.*,javax.servlet.*"?%> <% ???String?result; ???//?收件人的電子郵件 ???String?to?=?"abcd@gmail.com"; ???//?發(fā)件人的電子郵件 ???String?from?=?"mcmohd@gmail.com"; ???//?假設(shè)你是從本地主機(jī)發(fā)送電子郵件 ???String?host?=?"localhost"; ???//?獲取系統(tǒng)屬性對(duì)象 ???Properties?properties?=?System.getProperties(); ???//?設(shè)置郵件服務(wù)器 ???properties.setProperty("mail.smtp.host",?host); ???//?獲取默認(rèn)的Session對(duì)象。 ???Session?mailSession?=?Session.getDefaultInstance(properties); ???try{ ??????//?創(chuàng)建一個(gè)默認(rèn)的MimeMessage對(duì)象。 ??????MimeMessage?message?=?new?MimeMessage(mailSession); ??????//?設(shè)置?From:?頭部的header字段 ??????message.setFrom(new?InternetAddress(from)); ??????//?設(shè)置?To:?頭部的header字段 ??????message.addRecipient(Message.RecipientType.TO, ???????????????????????????????new?InternetAddress(to)); ??????//?設(shè)置?Subject:?header字段 ??????message.setSubject("This?is?the?Subject?Line!"); ??????//?現(xiàn)在設(shè)置的實(shí)際消息 ??????message.setText("This?is?actual?message"); ??????//?發(fā)送消息 ??????Transport.send(message); ??????result?=?"Sent?message?successfully...."; ???}catch?(MessagingException?mex)?{ ??????mex.printStackTrace(); ??????result?=?"Error:?unable?to?send?message...."; ???} %> <html> <head> <title>Send?Email?using?JSP</title> </head> <body> <center> <h1>Send?Email?using?JSP</h1> </center> <p?align="center"> <%? ???out.println("Result:?"?+?result?+?"\n"); %> </p> </body> </html>
現(xiàn)在訪問(wèn)http://localhost:8080/SendEmail.jsp,它將會(huì)發(fā)送一封郵件給abcd@gmail.com 并顯示如下結(jié)果:
Send?Email?using?JSP Result:?Sent?message?successfully....
如果想要把郵件發(fā)送給多人,下面列出的方法可以用來(lái)指明多個(gè)郵箱地址:
void?addRecipients(Message.RecipientType?type,? ???????????????????Address[]?addresses) throws?MessagingException
參數(shù)的描述如下:
這個(gè)例子發(fā)送一封簡(jiǎn)單的HTML郵件。它假定您的localhost已經(jīng)連接至網(wǎng)絡(luò)并且有能力發(fā)送郵件。與此同時(shí),請(qǐng)?jiān)僖淮未_認(rèn)mail.jar包和activation.jar包已經(jīng)添加進(jìn)CLASSPATH變量中。
這個(gè)例子和前一個(gè)例子非常相似,不過(guò)在這個(gè)例子中我們使用了setContent()方法,將"text/html"做為第二個(gè)參數(shù)傳給它,用來(lái)表明消息中包含了HTML內(nèi)容。
<%@?page?import="java.io.*,java.util.*,javax.mail.*"%> <%@?page?import="javax.mail.internet.*,javax.activation.*"%> <%@?page?import="javax.servlet.http.*,javax.servlet.*"?%> <% ???String?result; ???//?收件人的電子郵件 ???String?to?=?"abcd@gmail.com"; ???//?發(fā)件人的電子郵件 ???String?from?=?"mcmohd@gmail.com"; ???//?假設(shè)你是從本地主機(jī)發(fā)送電子郵件 ???String?host?=?"localhost"; ???//?獲取系統(tǒng)屬性對(duì)象 ???Properties?properties?=?System.getProperties(); ???//?設(shè)置郵件服務(wù)器 ???properties.setProperty("mail.smtp.host",?host); ???//?獲取默認(rèn)的Session對(duì)象。 ???Session?mailSession?=?Session.getDefaultInstance(properties); ???try{ ??????//?創(chuàng)建一個(gè)默認(rèn)的MimeMessage對(duì)象。 ??????MimeMessage?message?=?new?MimeMessage(mailSession); ??????//?設(shè)置?From:?頭部的header字段 ??????message.setFrom(new?InternetAddress(from)); ??????//?設(shè)置?To:?頭部的header字段 ??????message.addRecipient(Message.RecipientType.TO, ???????????????????????????????new?InternetAddress(to)); ??????//?設(shè)置?Subject:?header字段 ??????message.setSubject("This?is?the?Subject?Line!"); ????? ??????//?設(shè)置?HTML消息 ??????message.setContent("<h1>This?is?actual?message</h1>", ????????????????????????????"text/html"?); ??????//?發(fā)送消息 ??????Transport.send(message); ??????result?=?"Sent?message?successfully...."; ???}catch?(MessagingException?mex)?{ ??????mex.printStackTrace(); ??????result?=?"Error:?unable?to?send?message...."; ???} %> <html> <head> <title>Send?HTML?Email?using?JSP</title> </head> <body> <center> <h1>Send?Email?using?JSP</h1> </center> <p?align="center"> <%? ???out.println("Result:?"?+?result?+?"\n"); %> </p> </body> </html>
現(xiàn)在你可以嘗試使用以上JSP文件來(lái)發(fā)送HTML消息的電子郵件。
這個(gè)例子告訴我們?nèi)绾伟l(fā)送一封包含附件的郵件。
<%@?page?import="java.io.*,java.util.*,javax.mail.*"%> <%@?page?import="javax.mail.internet.*,javax.activation.*"%> <%@?page?import="javax.servlet.http.*,javax.servlet.*"?%> <% ???String?result; ???//?收件人的電子郵件 ???String?to?=?"abcd@gmail.com"; ???//?發(fā)件人的電子郵件 ???String?from?=?"mcmohd@gmail.com"; ???//?假設(shè)你是從本地主機(jī)發(fā)送電子郵件 ???String?host?=?"localhost"; ???//?獲取系統(tǒng)屬性對(duì)象 ???Properties?properties?=?System.getProperties(); ???//?設(shè)置郵件服務(wù)器 ???properties.setProperty("mail.smtp.host",?host); ???//?獲取默認(rèn)的Session對(duì)象。 ???Session?mailSession?=?Session.getDefaultInstance(properties); ???try{ ??????//?創(chuàng)建一個(gè)默認(rèn)的MimeMessage對(duì)象。 ??????MimeMessage?message?=?new?MimeMessage(mailSession); ??????//?設(shè)置?From:?頭部的header字段 ??????message.setFrom(new?InternetAddress(from)); ??????//?設(shè)置?To:?頭部的header字段 ??????message.addRecipient(Message.RecipientType.TO, ???????????????????????????????new?InternetAddress(to)); ??????//?設(shè)置?Subject:?header字段 ??????message.setSubject("This?is?the?Subject?Line!"); ??????//?創(chuàng)建消息部分 ??????BodyPart?messageBodyPart?=?new?MimeBodyPart(); ??????//?填充消息 ??????messageBodyPart.setText("This?is?message?body"); ?????? ??????//?創(chuàng)建多媒體消息 ??????Multipart?multipart?=?new?MimeMultipart(); ??????//?設(shè)置文本消息部分 ??????multipart.addBodyPart(messageBodyPart); ??????//?附件部分 ??????messageBodyPart?=?new?MimeBodyPart(); ??????String?filename?=?"file.txt"; ??????DataSource?source?=?new?FileDataSource(filename); ??????messageBodyPart.setDataHandler(new?DataHandler(source)); ??????messageBodyPart.setFileName(filename); ??????multipart.addBodyPart(messageBodyPart); ??????//?發(fā)送完整消息 ??????message.setContent(multipart?); ??????//?發(fā)送消息 ??????Transport.send(message); ??????String?title?=?"Send?Email"; ??????result?=?"Sent?message?successfully...."; ???}catch?(MessagingException?mex)?{ ??????mex.printStackTrace(); ??????result?=?"Error:?unable?to?send?message...."; ???} %> <html> <head> <title>Send?Attachement?Email?using?JSP</title> </head> <body> <center> <h1>Send?Attachement?Email?using?JSP</h1> </center> <p?align="center"> <%? ???out.println("Result:?"?+?result?+?"\n"); %> </p> </body> </html>
如果郵件服務(wù)器需要用戶(hù)名和密碼來(lái)進(jìn)行用戶(hù)認(rèn)證的話(huà),可以像下面這樣來(lái)設(shè)置:
?props.setProperty("mail.user",?"myuser"); ?props.setProperty("mail.password",?"mypwd");
使用HTML表單接收一封郵件,并通過(guò)request對(duì)象獲取所有郵件信息:
String?to?=?request.getParameter("to"); String?from?=?request.getParameter("from"); String?subject?=?request.getParameter("subject"); String?messageText?=?request.getParameter("body");
獲取以上信息后,您就可以使用前面提到的例子來(lái)發(fā)送郵件了。
關(guān)于我們 聯(lián)系我們 留言板
手冊(cè)網(wǎng)