Properties prop = new Properties(); prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.host", "mailserver"); prop.setProperty("mail.smtp.auth", "true"); Session session = Session.getInstance(prop, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( "User","Password");}});
Transport trans = session.getTransport(); Message msg = new MimeMessage(session); trans.connect(); msg.setContent("中文Message","text/plain;charset=gb2312"); trans.sendMessage(msg,new Address[]{ new InternetAddress("[email protected]")}); trans.close();
<%@ page contentType="text/html; charset=gb2312" %> <%@ page language="java" %> <%@ page import="java.lang.*,java.io.*,java.util.*,java.net.*" %> <%! public class Parameters { public HttpServletRequest request; public JspWriter out; public Socket socket; public PrintWriter mailOut; public BufferedReader mailIn; } void sendCommand(Parameters parms,String cmd)throws IOException { parms.out.println("C: "+cmd); parms.mailOut.print(cmd+"\r\n"); parms.mailOut.flush(); String line=parms.mailIn.readLine(); parms.out.println("S: "+line); }
java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Integer.java:394) at java.lang.Integer.parseInt(Integer.java:476) at WebMail.doRead(WebMail.java:117) at WebMail.doGet(WebMail.java:23) 是哪的问题呢
发送普通邮件,接受普通邮件 发送带有附件的邮件,接收带有附件的邮件 发送html形式的邮件,接受html形式的邮件 [b[发送带有图片的邮件[/b]等做了一个总结。 import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*; import javax.mail.*; import java.util.*; import javax.mail.internet.*; import java.io.*; import javax.activation.*; public String host="smtp.163.com"; public String username="abcdefg"; public String password="abcdefg"; public String mail_head_name="this is head of this mail"; public String mail_head_value="this is head of this mail"; public String mail_to="[email protected]"; public String mail_from="[email protected]"; public String mail_subject="this is the subject of this test mail"; public String mail_body="this is the mail_body of this test mail"; //此段代码用来发送普通电子邮件 void jButton1_actionPerformed(ActionEvent e) { try { Properties props = new Properties();//获取系统环境 Authenticator auth = new Email_Autherticator();//进行邮件服务器用户认证 props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props,auth); //设置session,和邮件服务器进行通讯。 MimeMessage message = new MimeMessage(session); message.setContent("Hello","text/plain");//设置邮件格式 message.setSubject(mail_subject);//设置邮件主题 message.setText(mail_body);//设置邮件正文 message.setHeader(mail_head_name,mail_head_value);//设置邮件标题 message.setSentDate(new Date());//设置邮件发送日期 Address address = new InternetAddress(mail_from,"sunxiaoming"); message.setFrom(address); //设置邮件发送者的地址 //如果要对邮件发送者进行多个参数的设置,可以用以下语句 // Address address[] = {new InternetAddress("[email protected]","sunxmatoaklet"),new InternetAddress("[email protected]","sunxmathotmail")}; // message.addFrom(address); Address toAddress = new InternetAddress(mail_to);//设置邮件接收方的地址 message.addRecipient(Message.RecipientType.TO,toAddress); // Address ccAddress = new InternetAddress("[email protected]");//设置邮件抄送者的地址 // message.addRecipient(Message.RecipientType.CC,ccAddress); Transport.send(message);//发送邮件 /* // to get a specific instance from the session for your protocol.pass along the username and password // (blank if unnecessary).send the message,and close the connection; message.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host,username,password); transport.sendMessage(message,message.getAllRecipients()); transport.close(); */ System.out.println("send ok!"); } catch(Exception ex) { System.out.println("faild"+ex); } }
//此段代码用来进行服务器对用户的认证 public class Email_Autherticator extends Authenticator { public Email_Autherticator() { super(); } public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username,password); } } //该程序为接收邮件 void jButton2_actionPerformed(ActionEvent e) { try { Properties props = System.getProperties(); //获取系统变量 Authenticator auth = new Email_Autherticator(); props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props,auth); //建立session Store store = session.getStore("pop3"); store.connect(host,username,password); //After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it: Folder folder = store.getFolder("INBOX");//连接到Store后,取得一个文件夹,一般默认的是INDEX folder.open(Folder.READ_WRITE);//READ_ONLY为打开方式 Message message[] = folder.getMessages();//从文件夹获取邮件信息 //可以用两种方式去获得邮件信息,getContent()用来获得邮件的主体信息。而WriteTo()可以用来获得邮件的全部信息,包括头部信息 // System.out.println(((MimeMessage)message).getContent()); for (int i=0,n=message.length;i { String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal(); String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress(); System.out.println("From:"+out_from_person+"\t"); System.out.println("Address:"+out_from_address+"\t"); String out_subject = message[i].getSubject(); System.out.println("Subject:"+out_subject+"\t"); //以下代码用来获得邮件的正文信息 Part messagePart = message[i]; Object out_content = messagePart.getContent(); if (out_content instanceof Multipart) { messagePart = ((Multipart)out_content).getBodyPart(0); System.out.println("[ Multipart Message ]"); } String out_content_type = messagePart.getContentType(); System.out.println("CONTENT:"+out_content_type); if (out_content_type.startsWith("text/plain") | | out_content_type.startsWith("text/html")) { InputStream ipstm = messagePart.getInputStream(); BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm)); String thisLine = bufreader.readLine(); while (thisLine != null) { System.out.println("thisLine: "+thisLine); thisLine = bufreader.readLine(); } } System.out.println("------------------------------------------------------------"); message[i].setFlag(Flags.Flag.DELETED,true);//最后删除服务器端的邮件 } //DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER folder.close(true);//true的话,彻底删除已经标记为DELETE的邮件,如果为false的话,就不删除 store.close();//关闭 } catch(Exception ej2) { System.out.println(ej2); } } void jButton4_actionPerformed(ActionEvent e) { try {//该程序为回复邮件 Properties props = System.getProperties(); //获取系统变量 Authenticator auth = new Email_Autherticator(); //取得穃uFFFD衿魅现? props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props,auth); //建立session Store store = session.getStore("pop3"); store.connect(host,username,password); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); Message message[] = folder.getMessages(); for (int i=0,n=message.length;i { // String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();//获取邮件发信人的署名 String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress(); System.out.println(out_from_address); Message forward = new MimeMessage(session); forward.setSubject("Fwd:"+message[i].getSubject()); forward.setFrom(new InternetAddress(mail_to)); forward.addRecipient(Message.RecipientType.TO,new InternetAddress(out_from_address)); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("Here you go with the original message:\n\n"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); messageBodyPart = new MimeBodyPart(); messageBodyPart.setDataHandler(message[i].getDataHandler()); multipart.addBodyPart(messageBodyPart); forward.setContent(multipart); Transport.send(forward); message[i].setFlag(Flags.Flag.DELETED,true);//DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER } folder.close(true); store.close();//关闭 } catch(Exception ej2) { System.out.println(ej2); } }void jButton5_actionPerformed(ActionEvent e) { try { Properties props = new Properties(); Authenticator auth = new Email_Autherticator(); props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props,auth); MimeMessage message = new MimeMessage(session); message.setContent("Hello","text/plain"); message.setSubject(mail_subject); message.setText(mail_body); message.setHeader(mail_head_name,mail_head_value); message.setSentDate(new Date()); message.setFrom(new InternetAddress(mail_from,"sunxiaoming")); //to signal man //原理:可以将邮件看成有多个部分组成的,如正文是一个部分,附件也是一个部分,所以用BodyPart来设置邮件的格式 message.addRecipient(Message.RecipientType.TO,new InternetAddress(mail_to)); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("Pardon Ideas"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource("./20020423/test.zip");//此处设置邮件的附件 messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName("test.zip"); multipart.addBodyPart(messageBodyPart); message.setContent(multipart); Transport.send(message); System.out.println("send ok!"); } catch(Exception ex) { System.out.println("faild"+ex); } }
//此段代码用来发送带有附件的邮件 void jButton6_actionPerformed(ActionEvent e) { try { Properties props = System.getProperties(); Authenticator auth = new Email_Autherticator(); props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props,auth); //建立session Store store = session.getStore("pop3"); store.connect(host,username,password); //After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it: Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); Message message[] = folder.getMessages(); for (int i=0,n=message.length;i { //获得邮件的部分信息,如头部信息,送信人的署名,送信人的邮件地址 String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal(); String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress(); System.out.println("From:"+out_from_person+"\t"); System.out.println("Address:"+out_from_address+"\t"); String out_subject = message[i].getSubject(); System.out.println("Subject:"+out_subject+"\t"); //以下代码用来获取邮件的主体信息 Part messagePart = message[i]; Object out_content = messagePart.getContent(); if (out_content instanceof Multipart) { messagePart = ((Multipart)out_content).getBodyPart(0); System.out.println("[ Multipart Message ]"); } String out_content_type = messagePart.getContentType(); System.out.println("CONTENT:"+out_content_type); if (out_content_type.startsWith("text/plain") | | out_content_type.startsWith("text/html")) { InputStream ipstm = messagePart.getInputStream(); BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm)); String thisLine = bufreader.readLine(); while (thisLine != null) { System.out.println("thisLine: "+thisLine); thisLine = bufreader.readLine(); } } //获取附件 Multipart mp = (Multipart)message[i].getContent(); for (int j=0,m=mp.getCount();j { System.out.println("***"+m+"***"); Part part = mp.getBodyPart(j); String disposition = part.getDisposition(); if ((disposition != null) && ((disposition.equals(part.ATTACHMENT)) | | (disposition.equals(part.INLINE)))) { //以下代码将获得的附件保存到当前目录下,以part.getFileName()为文件名,也既是附件的名称。 File filename = new File(part.getFileName()); for (int k=0;filename.exists();k++) { filename = new File(part.getFileName()+k); } FileOutputStream myFileoutputstream = new FileOutputStream(filename); int chunk = part.getSize();//获得附件的大小,不一定很准确。 byte [] buffer = new byte[chunk]; InputStream instream = part.getInputStream(); instream.read(buffer,0,chunk); myFileoutputstream.write(buffer,0,chunk); instream.close(); myFileoutputstream.close(); } } System.out.println("------------------------------------------------------------"); message[i].setFlag(Flags.Flag.DELETED,true); } folder.close(true); store.close();//关闭 } catch(Exception ej2) { System.out.println(ej2); } } //此段代码用来发送带有html信息的邮件 void jButton8_actionPerformed(ActionEvent e) { try { Properties props = new Properties(); Authenticator auth = new Email_Autherticator(); props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); Session session = Session.getDefaultInstance(props,auth); MimeMessage message = new MimeMessage(session); //设置邮件正文 String htmltext="< h1>hello< /h1>"+"< a href=\"http://www.sina.com.cn\" target=\"_blank\">click me please!< /a>"; message.setContent(htmltext,"text/html");//text/plain设置邮件的格式因为是带有html文档的,所以用text/html格式 message.setSubject(mail_subject); // message.setText(mail_body);在使用message.setContent()时候,好象不能用message.setText() message.setHeader(mail_head_name,mail_head_value); message.setSentDate(new Date()); Address address = new InternetAddress(mail_from,"sunxiaoming"); message.setFrom(address); Address toAddress = new InternetAddress(mail_to); message.addRecipient(Message.RecipientType.TO,toAddress); Transport.send(message); System.out.println("send ok!"); } catch(Exception ex) { System.out.println("faild"+ex); } }
[email protected]
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.host", "mailserver");
prop.setProperty("mail.smtp.auth", "true");
Session session = Session.getInstance(prop, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
"User","Password");}});
Transport trans = session.getTransport();
Message msg = new MimeMessage(session);
trans.connect();
msg.setContent("中文Message","text/plain;charset=gb2312");
trans.sendMessage(msg,new Address[]{ new InternetAddress("[email protected]")});
trans.close();
<%@ page language="java" %>
<%@ page import="java.lang.*,java.io.*,java.util.*,java.net.*" %>
<%!
public class Parameters
{
public HttpServletRequest request;
public JspWriter out;
public Socket socket;
public PrintWriter mailOut;
public BufferedReader mailIn;
}
void sendCommand(Parameters parms,String cmd)throws IOException
{
parms.out.println("C: "+cmd);
parms.mailOut.print(cmd+"\r\n");
parms.mailOut.flush();
String line=parms.mailIn.readLine();
parms.out.println("S: "+line);
}
void getMessage(Parameters parms,int msg)throws IOException
{
parms.out.println("Retrieving "+msg);
sendCommand(parms,"retr "+msg);
String thisURI=parms.request.getRequestURI();
String thisPath=parms.request.getRealPath(thisURI);
File thisFile=new File(thisPath);
String fileName=thisFile.getParent()+msg+".eml";
PrintWriter fileOut=new PrintWriter(new FileWriter(fileName));
for(int i=0;;i++){
String line=parms.mailIn.readLine();
if(line.startsWith("."))break;
//RdStrm=new StreamReader(NetStrm);
//RdStrm=new StreamReader(NetStrm,System.Text.Encoding.GetEncoding("gb2312"))
//String line1=new String(line.getBytes(),"gb2312");
//line = new BASE64Encoder().Convert.Tobase64(line.getBytes());
//if(i>10)break; fileOut.println(line);
}
fileOut.flush();
fileOut.close();
}
%>
<%
String host=request.getParameter("textfield");
if((host==null)||(host.trim().equals("")))
throw new RuntimeException("no mailhost parameter specified");
String username=request.getParameter("textfield2");
if((username==null)||(username.trim().equals("")))
throw new RuntimeException("no username parameter specified");
String password=request.getParameter("textfield3");
if((password==null)||(password.trim().equals("")))
throw new RuntimeException("no password parameter specified");
out.println("<h3>get mail log</h3>");
out.println("<pre>");
Parameters parms=new Parameters();
parms.request=request;
parms.out=out;
parms.socket=new Socket(host,110);
parms.mailOut=new PrintWriter(parms.socket.getOutputStream());
parms.mailIn=new BufferedReader(new InputStreamReader(parms.socket.getInputStream()));
String line=parms.mailIn.readLine();
out.println(line);
sendCommand(parms,"USER "+username);
sendCommand(parms,"PASS "+password);
sendCommand(parms,"STAT");
sendCommand(parms,"UIDL");
//sendCommand(parms,"LIST");
// sendCommand(parms,"RETR 2");
//sendCommand(parms,"DELE 2");
// sendCommand(parms,"RSET");
parms.mailOut.print("LIST"+"\r\n");
parms.mailOut.flush();
for(;;)
{line=parms.mailIn.readLine();
if(line.startsWith("."))break;
parms.out.println("S: "+line);
} Vector messageList=new Vector();
for(;;)
{line=parms.mailIn.readLine();
if(line.startsWith("."))break;
messageList.addElement(line);
}
int n=messageList.size(); for(int i=1;i<n;i++)
{
getMessage(parms,i);
//sendCommand(parms,"DELE "+i);
}
sendCommand(parms,"QUIT");
parms.socket.close();
out.println("</pre>");
%>
有例子的
http://expert.csdn.net/Expert/topic/1177/1177970.xml?temp=.3405115:)
[email protected]
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;import javax.mail.*;
import javax.mail.internet.*;
public class WebMail extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException { String command = request.getParameter("command"); try {
if ("login".equalsIgnoreCase(command)) {
doLogin(request, response);
} else if ("list".equalsIgnoreCase(command)) {
doList(request, response);
} else if ("read".equalsIgnoreCase(command)) {
doRead(request, response);
} else if ("reply".equalsIgnoreCase(command)) {
doReply(request, response);
} else if ("send".equalsIgnoreCase(command)) {
doSend(request, response);
} else if ("logout".equalsIgnoreCase(command)) {
doLogout(request, response);
}
} catch (MessagingException e) {
throw new ServletException("MessagingException: " + e);
}
} private String defaultFrom; private Session session;
private Store store;
private Folder folder; private void doLogin(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException, MessagingException {
String smtp = request.getParameter("smtp");
String pop3 = request.getParameter("pop3");
String user = request.getParameter("user");
String pass = request.getParameter("pass"); // Save a default From address
defaultFrom = user + "@" + pop3; // Start the session
java.util.Properties properties = System.getProperties();
properties.put("mail.smtp.host", smtp);
session = Session.getInstance(properties, null); // Connect to the store
store = session.getStore("pop3");
store.connect(pop3, user, pass); // Open the INBOX folder
folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY); // List the messages
doList(request, response);
}
private Message[] messages = null; private void doList(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException, MessagingException {
messages = folder.getMessages(); response.setContentType("text/html");
PrintWriter writer = response.getWriter(); // Start a table and print the header
writer.println(
"<html><head><title>list</title></head>" +
"<body><table border=\"1\">" +
"<tr>" +
"<th>Date</th>" +
"<th>From</th>" +
"<th>Subject</th>" +
"</tr>"); // Print each message
for (int i = 0; i < messages.length; ++i) {
writer.println(
"<tr>" +
"<td>" + messages[i].getSentDate() + "</td>" +
"<td>" + messages[i].getFrom()[0] + "</td>" +
"<td><a href='" + request.getRequestURI() +
"?command=read&message=" + i + "'>" +
messages[i].getSubject() + "</a></td>" +
"</tr>");
} // End the table
writer.println("</table>"); // Add a logout link
writer.println("<p><a href='" + request.getRequestURI() +
"?command=logout'>logout</a></p>"); // End the page
writer.println("</body></html>"); writer.close();
} private void doRead(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException, MessagingException { int num = Integer.parseInt(request.getParameter("message")); response.setContentType("text/html");
PrintWriter writer = response.getWriter(); MimeMessage message = (MimeMessage) messages[num]; writer.println("<html><head><title>read: " +
message.getSubject() +
"</title></head><body>"); // Print some select headers
writer.println("<table border=\"1\">" +
"<tr><th>Date: </th><td>" +
message.getSentDate() +
"</td></tr><tr><th>From: </th><td>" +
message.getFrom()[0] +
"</td></tr><tr><th>To: </th><td>" +
message.getRecipients(
Message.RecipientType.TO)[0] +
"</td></tr><tr><th>Subject: </th><td>" +
message.getSubject() +
"</td></tr><tr><td colspan=\"2\"><p>"); ContentType ct = new ContentType(message.getContentType()); // If the text is in HTML, just print it
if ("text/html".equalsIgnoreCase(ct.getBaseType())) {
BufferedReader reader =
new BufferedReader(
new InputStreamReader(
message.getInputStream())); String s; while ((s = reader.readLine()) != null) {
writer.println(s);
}
} else {
Object o = message.getContent(); // If the text is plain, just print it
if (o instanceof String) {
writer.println("<pre>" + o + "</pre>");
} else {
// Print the content type
writer.println(message.getContentType()); // If it is a multipart, list the parts
if (o instanceof MimeMultipart) {
listParts((MimeMultipart) o, writer);
}
}
} // End the message
writer.println("</p></td></tr></table>"); // Print a link to reply
writer.println("<p><a href='" +
request.getRequestURI() +
"?command=reply&message=" + num + "'>reply</a> ");
// Print a link to logout
writer.println("<a href='" +
request.getRequestURI() +
"?command=logout'>logout</a></p>"); // End the page
writer.println("</body></html>");
writer.close();
}
throws MessagingException { writer.println("<ul>"); for (int i = 0; i < mp.getCount(); ++i) {
MimeBodyPart bp = (MimeBodyPart) mp.getBodyPart(i);
writer.println("<li>" + bp.getContentType());
} writer.println("</ul>");
} private void doReply(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException, MessagingException { // Get the message we are replying to
int num = Integer.parseInt(request.getParameter("message")); // Create a new messgage
MimeMessage message = (MimeMessage) messages[num]; String to = ((InternetAddress)message.getFrom()[0]).getAddress(); String subject = "Re: " + message.getSubject(); response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<html><head><title>reply</title></head><body>");
writer.println("<form action='" + request.getRequestURI() +
"?command=send' method='get'>");
writer.println("<input type='hidden' name='command' value='send'>");
writer.println("From: <input name='from' value='" +
defaultFrom + "' type='text'><br>");
writer.println("To: <input name='to' value='" + to +
"' type='text'><br>");
writer.println("Cc: <input name='cc' type='text'><br>");
writer.println("Bcc: <input name='bcc' type='text'><br>");
writer.println("Subject: <input name='subject' value='" +
subject + "' type='text'><br>");
writer.println("<textarea name='text' cols='32' rows='8'></textarea><br>");
// Print the Submit and Reset buttons
writer.println("<input type='submit'><input type='reset'>"); // End the page
writer.println("</body></html>"); writer.close();
} private void doSend(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException, MessagingException { String from = request.getParameter("from");
String to = request.getParameter("to");
String cc = request.getParameter("cc");
String bcc = request.getParameter("bcc");
String subject = request.getParameter("subject");
String text = request.getParameter("text"); // Construct a message
MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
message.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(cc));
message.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse(bcc)); message.setSubject(subject); message.setText(text); // Send the messge
Transport.send(message); response.setContentType("text/html");
PrintWriter writer = response.getWriter(); writer.println("<html><head><title>send</title></head><body>");
writer.println("<p>Your message was sent.</p>");
writer.println("</body></html>");
writer.close();
} private void doLogout(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException, MessagingException { // Close the folder and store
folder.close(false);
store.close(); // Say goodbye
response.setContentType("text/html");
PrintWriter writer = response.getWriter(); writer.println("<html><head><title>logout</title></head>");
writer.println("<body><p>Goodbye.</p></body></html>"); writer.close();
}
}
调试通过,<HTML>
<HEAD><TITLE>WebMail</title></HEAD>
<BODY>
<H1>WebMail</H1>
<form action='/servlet/WebMail' method='get'>
<input type='hidden' name='command' value='login'>
SMTP Server: <input type='text' name='smtp' value="202.199.24.2"><BR>
POP3 Server: <input type='text' name='pop3' value="pop.163.com"><BR>
POP3 Username: <input type='text' name='user' value="netnice"><BR>
POP3 Password: <input type='text' name='pass' value=""><BR>
<input type='submit'><input type='reset'>
</FORM>
</BODY>
</HTML>
at java.lang.Integer.parseInt(Integer.java:394)
at java.lang.Integer.parseInt(Integer.java:476)
at WebMail.doRead(WebMail.java:117)
at WebMail.doGet(WebMail.java:23)
是哪的问题呢
给我一份,谢了
* @(#)msgsend.java 1.15 00/05/24
*
* Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved. */import java.io.*;
import java.net.InetAddress;
import java.util.Properties;
import java.util.Date;import javax.mail.*;
import javax.mail.internet.*;/**
* Demo app that shows how to construct and send an RFC822
* (singlepart) message.
*
* XXX - allow more than one recipient on the command line
*
* @author Max Spivak
* @author Bill Shannon
*/public class msgsend { public static void main(String[] argv) {
new msgsend(argv);
} public msgsend(String[] argv) { String to, subject = null, from = null,
cc = null, bcc = null, url = null;
String mailhost = null;
String mailer = "msgsend";
String protocol = null, host = null, user = null, password = null;
String record = null; // name of folder in which to record mail
boolean debug = false;
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
int optind; for (optind = 0; optind < argv.length; optind++) {
if (argv[optind].equals("-T")) {
protocol = argv[++optind];
} else if (argv[optind].equals("-H")) {
host = argv[++optind];
} else if (argv[optind].equals("-U")) {
user = argv[++optind];
} else if (argv[optind].equals("-P")) {
password = argv[++optind];
} else if (argv[optind].equals("-M")) {
mailhost = argv[++optind];
} else if (argv[optind].equals("-f")) {
record = argv[++optind];
} else if (argv[optind].equals("-s")) {
subject = argv[++optind];
} else if (argv[optind].equals("-o")) { // originator
from = argv[++optind];
} else if (argv[optind].equals("-c")) {
cc = argv[++optind];
} else if (argv[optind].equals("-b")) {
bcc = argv[++optind];
} else if (argv[optind].equals("-L")) {
url = argv[++optind];
} else if (argv[optind].equals("-d")) {
debug = true;
} else if (argv[optind].equals("--")) {
optind++;
break;
} else if (argv[optind].startsWith("-")) {
System.out.println(
"Usage: msgsend [[-L store-url] | [-T prot] [-H host] [-U user] [-P passwd]]");
System.out.println(
"\t[-s subject] [-o from-address] [-c cc-addresses] [-b bcc-addresses]");
System.out.println(
"\t[-f record-mailbox] [-M transport-host] [-d] [address]");
System.exit(1);
} else {
break;
}
} try {
if (optind < argv.length) {
// XXX - concatenate all remaining arguments
to = argv[optind];
System.out.println("To: " + to);
} else {
System.out.print("To: ");
System.out.flush();
to = in.readLine();
}
if (subject == null) {
System.out.print("Subject: ");
System.out.flush();
subject = in.readLine();
} else {
System.out.println("Subject: " + subject);
} Properties props = System.getProperties();
// XXX - could use Session.getTransport() and Transport.connect()
// XXX - assume we're using SMTP
if (mailhost != null)
props.put("mail.smtp.host", mailhost); // Get a Session object
Session session = Session.getDefaultInstance(props, null);
if (debug)
session.setDebug(true); // construct the message
Message msg = new MimeMessage(session);
if (from != null)
msg.setFrom(new InternetAddress(from));
else
msg.setFrom(); msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to, false));
if (cc != null)
msg.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(cc, false));
if (bcc != null)
msg.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse(bcc, false)); msg.setSubject(subject); collect(in, msg); msg.setHeader("X-Mailer", mailer);
msg.setSentDate(new Date()); // send the thing off
Transport.send(msg); System.out.println("\nMail was sent successfully."); // Keep a copy, if requested. if (record != null) {
// Get a Store object
Store store = null;
if (url != null) {
URLName urln = new URLName(url);
store = session.getStore(urln);
store.connect();
} else {
if (protocol != null)
store = session.getStore(protocol);
else
store = session.getStore(); // Connect
if (host != null || user != null || password != null)
store.connect(host, user, password);
else
store.connect();
} // Get record Folder. Create if it does not exist.
Folder folder = store.getFolder(record);
if (folder == null) {
System.err.println("Can't get record folder.");
System.exit(1);
}
if (!folder.exists())
folder.create(Folder.HOLDS_MESSAGES); Message[] msgs = new Message[1];
msgs[0] = msg;
folder.appendMessages(msgs); System.out.println("Mail was recorded successfully.");
} } catch (Exception e) {
e.printStackTrace();
}
} public void collect(BufferedReader in, Message msg)
throws MessagingException, IOException {
String line;
StringBuffer sb = new StringBuffer();
while ((line = in.readLine()) != null) {
sb.append(line);
sb.append("\n");
} // If the desired charset is known, you can use
// setText(text, charset)
msg.setText("this is the first sample");
}
}
[email protected]
[email protected]
[email protected]
发送带有附件的邮件,接收带有附件的邮件
发送html形式的邮件,接受html形式的邮件
[b[发送带有图片的邮件[/b]等做了一个总结。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;
import java.io.*;
import javax.activation.*;
public String host="smtp.163.com";
public String username="abcdefg";
public String password="abcdefg";
public String mail_head_name="this is head of this mail";
public String mail_head_value="this is head of this mail";
public String mail_to="[email protected]";
public String mail_from="[email protected]";
public String mail_subject="this is the subject of this test mail";
public String mail_body="this is the mail_body of this test mail";
//此段代码用来发送普通电子邮件
void jButton1_actionPerformed(ActionEvent e) {
try
{
Properties props = new Properties();//获取系统环境
Authenticator auth = new Email_Autherticator();//进行邮件服务器用户认证 props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
Session session = Session.getDefaultInstance(props,auth);
//设置session,和邮件服务器进行通讯。
MimeMessage message = new MimeMessage(session);
message.setContent("Hello","text/plain");//设置邮件格式
message.setSubject(mail_subject);//设置邮件主题
message.setText(mail_body);//设置邮件正文
message.setHeader(mail_head_name,mail_head_value);//设置邮件标题
message.setSentDate(new Date());//设置邮件发送日期 Address address = new InternetAddress(mail_from,"sunxiaoming");
message.setFrom(address); //设置邮件发送者的地址 //如果要对邮件发送者进行多个参数的设置,可以用以下语句
// Address address[] = {new InternetAddress("[email protected]","sunxmatoaklet"),new InternetAddress("[email protected]","sunxmathotmail")};
// message.addFrom(address); Address toAddress = new InternetAddress(mail_to);//设置邮件接收方的地址
message.addRecipient(Message.RecipientType.TO,toAddress);
// Address ccAddress = new InternetAddress("[email protected]");//设置邮件抄送者的地址
// message.addRecipient(Message.RecipientType.CC,ccAddress);
Transport.send(message);//发送邮件
/* // to get a specific instance from the session for your protocol.pass along the username and password
// (blank if unnecessary).send the message,and close the connection;
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host,username,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
*/
System.out.println("send ok!");
}
catch(Exception ex)
{
System.out.println("faild"+ex);
}
}
public class Email_Autherticator extends Authenticator
{
public Email_Autherticator()
{
super();
}
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(username,password);
}
}
//该程序为接收邮件
void jButton2_actionPerformed(ActionEvent e) {
try
{
Properties props = System.getProperties(); //获取系统变量
Authenticator auth = new Email_Autherticator();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
Session session = Session.getDefaultInstance(props,auth); //建立session
Store store = session.getStore("pop3");
store.connect(host,username,password); //After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:
Folder folder = store.getFolder("INBOX");//连接到Store后,取得一个文件夹,一般默认的是INDEX
folder.open(Folder.READ_WRITE);//READ_ONLY为打开方式
Message message[] = folder.getMessages();//从文件夹获取邮件信息 //可以用两种方式去获得邮件信息,getContent()用来获得邮件的主体信息。而WriteTo()可以用来获得邮件的全部信息,包括头部信息
// System.out.println(((MimeMessage)message).getContent());
for (int i=0,n=message.length;i { String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();
String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress();
System.out.println("From:"+out_from_person+"\t");
System.out.println("Address:"+out_from_address+"\t"); String out_subject = message[i].getSubject();
System.out.println("Subject:"+out_subject+"\t"); //以下代码用来获得邮件的正文信息
Part messagePart = message[i];
Object out_content = messagePart.getContent();
if (out_content instanceof Multipart)
{
messagePart = ((Multipart)out_content).getBodyPart(0);
System.out.println("[ Multipart Message ]");
}
String out_content_type = messagePart.getContentType();
System.out.println("CONTENT:"+out_content_type); if (out_content_type.startsWith("text/plain") | | out_content_type.startsWith("text/html"))
{
InputStream ipstm = messagePart.getInputStream();
BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
String thisLine = bufreader.readLine();
while (thisLine != null)
{
System.out.println("thisLine: "+thisLine);
thisLine = bufreader.readLine();
}
}
System.out.println("------------------------------------------------------------");
message[i].setFlag(Flags.Flag.DELETED,true);//最后删除服务器端的邮件
}
//DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER
folder.close(true);//true的话,彻底删除已经标记为DELETE的邮件,如果为false的话,就不删除
store.close();//关闭
}
catch(Exception ej2)
{
System.out.println(ej2);
}
} void jButton4_actionPerformed(ActionEvent e) {
try
{//该程序为回复邮件
Properties props = System.getProperties(); //获取系统变量
Authenticator auth = new Email_Autherticator(); //取得穃uFFFD衿魅现?
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
Session session = Session.getDefaultInstance(props,auth); //建立session
Store store = session.getStore("pop3");
store.connect(host,username,password); Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages(); for (int i=0,n=message.length;i {
// String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();//获取邮件发信人的署名 String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress();
System.out.println(out_from_address); Message forward = new MimeMessage(session);
forward.setSubject("Fwd:"+message[i].getSubject());
forward.setFrom(new InternetAddress(mail_to));
forward.addRecipient(Message.RecipientType.TO,new InternetAddress(out_from_address)); BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("Here you go with the original message:\n\n"); Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart); messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(message[i].getDataHandler()); multipart.addBodyPart(messageBodyPart);
forward.setContent(multipart); Transport.send(forward);
message[i].setFlag(Flags.Flag.DELETED,true);//DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER
}
folder.close(true);
store.close();//关闭
}
catch(Exception ej2)
{
System.out.println(ej2);
} }void jButton5_actionPerformed(ActionEvent e) {
try
{
Properties props = new Properties();
Authenticator auth = new Email_Autherticator(); props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
Session session = Session.getDefaultInstance(props,auth);
MimeMessage message = new MimeMessage(session);
message.setContent("Hello","text/plain");
message.setSubject(mail_subject);
message.setText(mail_body);
message.setHeader(mail_head_name,mail_head_value);
message.setSentDate(new Date());
message.setFrom(new InternetAddress(mail_from,"sunxiaoming")); //to signal man
//原理:可以将邮件看成有多个部分组成的,如正文是一个部分,附件也是一个部分,所以用BodyPart来设置邮件的格式
message.addRecipient(Message.RecipientType.TO,new InternetAddress(mail_to));
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("Pardon Ideas");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart); messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource("./20020423/test.zip");//此处设置邮件的附件
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName("test.zip");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
System.out.println("send ok!");
}
catch(Exception ex)
{
System.out.println("faild"+ex);
} }
void jButton6_actionPerformed(ActionEvent e) {
try
{
Properties props = System.getProperties();
Authenticator auth = new Email_Autherticator();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
Session session = Session.getDefaultInstance(props,auth); //建立session
Store store = session.getStore("pop3");
store.connect(host,username,password); //After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message message[] = folder.getMessages(); for (int i=0,n=message.length;i {
//获得邮件的部分信息,如头部信息,送信人的署名,送信人的邮件地址
String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();
String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress();
System.out.println("From:"+out_from_person+"\t");
System.out.println("Address:"+out_from_address+"\t");
String out_subject = message[i].getSubject();
System.out.println("Subject:"+out_subject+"\t"); //以下代码用来获取邮件的主体信息
Part messagePart = message[i];
Object out_content = messagePart.getContent();
if (out_content instanceof Multipart)
{
messagePart = ((Multipart)out_content).getBodyPart(0);
System.out.println("[ Multipart Message ]");
}
String out_content_type = messagePart.getContentType();
System.out.println("CONTENT:"+out_content_type); if (out_content_type.startsWith("text/plain") | | out_content_type.startsWith("text/html"))
{
InputStream ipstm = messagePart.getInputStream();
BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
String thisLine = bufreader.readLine();
while (thisLine != null)
{
System.out.println("thisLine: "+thisLine);
thisLine = bufreader.readLine();
}
}
//获取附件
Multipart mp = (Multipart)message[i].getContent();
for (int j=0,m=mp.getCount();j {
System.out.println("***"+m+"***");
Part part = mp.getBodyPart(j);
String disposition = part.getDisposition();
if ((disposition != null) && ((disposition.equals(part.ATTACHMENT)) | | (disposition.equals(part.INLINE))))
{ //以下代码将获得的附件保存到当前目录下,以part.getFileName()为文件名,也既是附件的名称。
File filename = new File(part.getFileName());
for (int k=0;filename.exists();k++)
{
filename = new File(part.getFileName()+k);
}
FileOutputStream myFileoutputstream = new FileOutputStream(filename);
int chunk = part.getSize();//获得附件的大小,不一定很准确。 byte [] buffer = new byte[chunk];
InputStream instream = part.getInputStream();
instream.read(buffer,0,chunk);
myFileoutputstream.write(buffer,0,chunk);
instream.close();
myFileoutputstream.close();
}
}
System.out.println("------------------------------------------------------------");
message[i].setFlag(Flags.Flag.DELETED,true);
}
folder.close(true);
store.close();//关闭
}
catch(Exception ej2)
{
System.out.println(ej2);
}
} //此段代码用来发送带有html信息的邮件
void jButton8_actionPerformed(ActionEvent e) {
try
{
Properties props = new Properties();
Authenticator auth = new Email_Autherticator();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
Session session = Session.getDefaultInstance(props,auth);
MimeMessage message = new MimeMessage(session);
//设置邮件正文
String htmltext="< h1>hello< /h1>"+"< a href=\"http://www.sina.com.cn\" target=\"_blank\">click me please!< /a>";
message.setContent(htmltext,"text/html");//text/plain设置邮件的格式因为是带有html文档的,所以用text/html格式 message.setSubject(mail_subject);
// message.setText(mail_body);在使用message.setContent()时候,好象不能用message.setText()
message.setHeader(mail_head_name,mail_head_value);
message.setSentDate(new Date());
Address address = new InternetAddress(mail_from,"sunxiaoming");
message.setFrom(address);
Address toAddress = new InternetAddress(mail_to);
message.addRecipient(Message.RecipientType.TO,toAddress);
Transport.send(message);
System.out.println("send ok!");
}
catch(Exception ex)
{
System.out.println("faild"+ex);
} }
[email protected]
顺便请问:
邮件附件的中文问题是如何解决的呢,好像单用tomcat就能得到中文附件,用apache+tomcat就得不到中文附件,怎么回事呢?
[email protected]