JavaMail我已经安装上了:)希望大家说的详细点,我不太懂~~我现在在线,调试成功后马上结帖给分~~很有希望得100分哦~~~
解决方案 »
- el标签取值
- hibernate
- EXTjs高手看过来,这个小问题竟然恶心我一天一夜还没解决啊
- 添加hibernate一对一关联后出现后台报错
- Hibernate项目中,用GSON解析JSON问题
- 如何用JSP向ORACLE数据库读写WORD文档
- 创建MYSQL数据库出现错误!为什么??
- 一个执行servlet的错误,请指教
- javabean的疑难
- Property "Any" is already defined. Use <jaxb:property> to resolve this confl
- 数据库中文问题: Access + Jdbcodbc驱动程序
- 同一个页面多次调用数据库连接BEAN的问题~~
import java.util.*;
import javax.mail.*;
import java.io.*;
import javax.mail.internet.*;
import javax.activation.*;public class Email {
protected String to = null;
protected String subject = "Email Test";
protected String body = null; public Email() {
super();
} public void setTo(String to) {
this.to = to;
} public void setBody(String body) {
this.body = body;
} public void sendmail() {
try
{
String host = "smtp.163.net";
String from = "your name";
String to = "other email address";
String username = "your username";
String password = "your password";
this.body = "This is a test"; SmtpAuth sa=new SmtpAuth();
sa.getuserinfo(username,password);
Session session;
MimeMessage message;
Properties props = System.getProperties();
props.put("mail.smtp.auth","true");
props.put("mail.smtp.host", host);
session = Session.getInstance(props, sa);
session.setDebug(true);
message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(body);
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp);
message.setContent(mp);
message.setSentDate(new java.util.Date());
Transport transport = session.getTransport("smtp");
transport.connect("smtp.163.net",username,password);
transport.send(message);
}
catch (MessagingException e) {
System.out.println("error" + e.getMessage());
}
} class SmtpAuth extends javax.mail.Authenticator {
private String user,password;
public void getuserinfo(String getuser,String getpassword){
user=getuser;
password=getpassword;
}
protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
return new javax.mail.PasswordAuthentication(user,password);
}
}
}
<%
Properties props = new Properties();
props.put("mail.smtp.host", "你的SMTP服务器");
Session s = Session.getInstance(props,null); MimeMessage message = new MimeMessage(s); InternetAddress from = new InternetAddress("发件人邮件地址");
message.setFrom(from);
InternetAddress to = new InternetAddress("收件人邮件地址");
message.addRecipient(Message.RecipientType.TO, to);
message.setSubject("Test from JavaMail.");
message.setText("Hello from JavaMail!"); Transport.send(message);
%>这是最简单的例子.
<%
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.0451.com");
Session s = Session.getInstance(props,null); MimeMessage message = new MimeMessage(s); InternetAddress from = new InternetAddress("[email protected]");
message.setFrom(from);
InternetAddress to = new InternetAddress("[email protected]");
message.addRecipient(Message.RecipientType.TO, to);
message.setSubject("Test from JavaMail.");
message.setText("Hello from JavaMail!"); Transport.send(message);
%>这样没有问题,我把[email protected]换成任何一个就提示地址无效!!
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;public class sendMailBean {
private String EntryName;
private String Password;
private String pop3Server;
private String smtpServer;
private String To;
private String Body;
private String Subject;Properties props = new Properties ();public sendMailBean() {}
public void setEntryname(String name){
this.EntryName=name;
}
public void setPassword(String password){
this.Password=password;
}
public void setPop3Server(String pop3){
this.pop3Server=pop3;
}
public void setSmtpServer(String smtp){
this.smtpServer=smtp;
}
public void setRecipient(String to){
this.To=to;
}
public void setBody(String body){
this.Body=body;
}
public void setSubject(String subject){
this.Subject=subject;
}
public String sendmail(){
String log=null;
try{
props=System.getProperties();
props.put("mail.smtp.host",smtpServer);
props.put("mail.smtp.auth","true");
PopupAuthenticator popAuthenticator = new PopupAuthenticator();
PasswordAuthentication pop = popAuthenticator.performCheck(EntryName,Password);
Session session=Session.getInstance(props,popAuthenticator );
Message msg=new MimeMessage(session); msg.setFrom(new InternetAddress(EntryName));
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(To,false));
msg.setSubject(Subject);
msg.setText(Body);
msg.setSentDate(new Date());
Transport.send(msg);
return "Message sent OK.";
}
catch(Exception ex)
{
ex.printStackTrace();
log = ex.getMessage();
}
return log;}}
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.*;
import javax.servlet.http.*;public class WebMailBean implements HttpSessionBindingListener {
Session session = null;
String protocol = null;
String host = null;
int port = -1;
String user = null;
String defaultFrom = null;
Store store = null;
Folder[] folders = null;
String[] folderNames = null;
Folder currentFolder = null;
int currentMessageNumber = 0;
Message currentMessage = null; //使用你选择的smtp服务器
public WebMailBean() {
Properties properties = System.getProperties();
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", "mail.yangnan.com");
session = Session.getInstance(properties, null); // session.setDebug(true);
} // 返回一个已安装协议的列表 public String[] getProtocols() {
Provider[] providers = session.getProviders(); List storeProtocols = new ArrayList(); for (int i = 0; i < providers.length; ++i) {
if (providers[i].getType() == Provider.Type.STORE) {
storeProtocols.add(providers[i].getProtocol());
}
} return (String[]) storeProtocols.toArray(new String[0]);
} // 属性设置方法
// 包括主机,协议,端口等 public void setProtocol(String protocol) {
if (this.protocol == null) {
this.protocol = protocol;
}
} public String getProtocol() {
return this.protocol;
} public void setHost(String host) {
if (this.host == null) {
this.host = host;
}
} public String getHost() {
return this.host;
} public void setPort(int port) {
if (this.port == -1) {
this.port = port;
}
} public int getPort() {
return this.port;
}
//用户
public void setUser(String user) {
if (this.user == null) {
this.user = user;
}
} public String getUser() {
return this.user;
} //使用密码来初始化一个连接 public void setPassword(String password) throws MessagingException {
connect(password);
} // 使用用户的名称和主机来初始化一个发送人地址 public String getFrom() {
if (defaultFrom == null) {
defaultFrom = user + "@" + host; }
return defaultFrom;
}
void connect(String password) throws MessagingException {
if (store == null) {
store = session.getStore(protocol);
store.connect(host, port, user, password);
cacheFolders();
setFolder("INBOX");
}
} // 在用户登录时判断是否仍然在连接中 public boolean isConnected() {
if (store != null) {
return store.isConnected(); }
return false;
} // 关闭连接 void close() {
if (isConnected()) {
try { //将所有打开的文件夹关闭 if (folders != null) {
for (int i = 0; i < folders.length; ++i) {
if (folders[i].isOpen()) {
folders[i].close(true);
}
}
} if (store != null) {
store.close(); }
} catch (MessagingException e) { // 异常的处理
}
}
} // 对文件夹的操作进行缓存 void cacheFolders() throws MessagingException {
Folder defaultFolder = store.getDefaultFolder();
Folder[] childFolders = defaultFolder.list(); List availableFolders = new ArrayList(); for (int i = 0; i < childFolders.length; ++i) {
String folderName = childFolders[i].getName();
if (!folderName.startsWith(".")
&&!folderName.equalsIgnoreCase("INBOX")) {
availableFolders.add(childFolders[i]);
}
} // 按照文件夹的名称进行排序 Collections.sort(availableFolders, new Comparator() {
public int compare(Object o1, Object o2) {
return ((Folder) o1).getName()
.compareToIgnoreCase(((Folder) o2).getName());
}
}); // 将INBOX加到列表的第一的位置
Folder inbox = defaultFolder.getFolder("INBOX"); if (inbox.exists()) {
availableFolders.add(0, inbox); }
folders = (Folder[]) availableFolders.toArray(new Folder[0]);
} // 从缓存的数组中寻找文件夹 Folder findFolder(String folderName) {
for (int i = 0; i < folders.length; ++i) {
if (folders[i].getName().equals(folderName)) {
return folders[i];
}
} return null;
} public void setFolder(String folderName) throws MessagingException {
currentFolder = findFolder(folderName); if ((!currentFolder.isOpen()) && (currentFolder.exists())
&& ((currentFolder.getType() & Folder.HOLDS_MESSAGES)
!= 0)) {
currentFolder.open(Folder.READ_WRITE);
} currentMessageNumber = 0;
currentMessage = null;
} // 得到当前文件夹名称
public String getFolderName() {
return currentFolder.getName();
} //得到一个缓存文件夹名称数组
public String[] getFolderNames() {
String[] folderNames = new String[folders.length]; for (int i = 0; i < folders.length; ++i) {
folderNames[i] = folders[i].getName();
} return folderNames;
} //得到除当前文件夹以外的所有文件夹的名称
//以便用于信息在文件夹之间的转移 public String[] getOtherFolderNames() {
String[] folderNames = new String[folders.length - 1]; for (int i = 0, j = 0; i < folders.length; ++i) {
if (folders[i] != currentFolder) {
folderNames[j++] = folders[i].getName();
}
} return folderNames;
} // 返回当前文件夹中的信件数目
public int getMessageCount() throws MessagingException {
return currentFolder.getMessageCount();
} //循环得到当前文件夹中未删除的信件
public boolean getNextMessage() throws MessagingException {
int messageCount = currentFolder.getMessageCount(); for (int i = currentMessageNumber + 1; i <= messageCount; ++i) {
Message nextMessage = currentFolder.getMessage(i); if (!nextMessage.isSet(Flags.Flag.DELETED)) {
currentMessageNumber = i;
currentMessage = nextMessage; return true;
}
} return false;
} // 设置信件编号,rest一下信件的指针。
public void setMessage(int messageNumber)
throws MessagingException {
if (messageNumber == 0) {
currentMessageNumber = messageNumber;
currentMessage = null; } else {
currentMessageNumber = messageNumber - 1;
getNextMessage();
}
}
public int getMessageNumber() {
return currentMessage.getMessageNumber();
} // 得到当前信件发送时间,转为字符串格式
public String getMessageSentDate() throws MessagingException {
Date sentDate = currentMessage.getSentDate(); if (sentDate != null) {
return sentDate.toString();
} else {
return "Date unknown";
}
} // 得到信件的发送地址和回复地址。
public String getMessageFrom() throws MessagingException {
Address[] addresses = currentMessage.getFrom(); if (addresses == null) {
addresses = currentMessage.getReplyTo(); }
if (addresses.length > 0) {
return addresses[0].toString(); }
return "";
} // 得到信件的回复地址。在地址数组中的第一个地址。
public String getMessageReplyTo() throws MessagingException {
Address[] addresses = currentMessage.getReplyTo(); if (addresses.length > 0) {
return addresses[0].toString(); }
return "";
}
public String getMessageTo() throws MessagingException {
Address[] addresses =
currentMessage.getRecipients(Message.RecipientType.TO); if (addresses != null && addresses.length > 0) {
return addresses[0].toString(); }
return "";
} // 得到信件主题 public String getMessageSubject() throws MessagingException {
String subject = currentMessage.getSubject(); if (subject == null) {
subject = ""; }
return subject;
} //得到信件的大小 public String getMessageSize() throws MessagingException {
String size = "?"; int bSize = currentMessage.getSize(); if (bSize != -1) {
if (bSize >= 1024 * 1024) {
int mbSize = bSize / (1024 * 1024);
size = mbSize + " MB"; } else if (bSize >= 1024) {
int kbSize = bSize / 1024;
size = kbSize + " KB"; } else {
size = bSize + " Bytes";
}
} return size;
} // 得到信件的内容
public String getMessageText()
throws IOException, MessagingException {
String text = currentMessage.getContentType(); if (currentMessage.isMimeType("text/*")) {
text = (String) currentMessage.getContent();
} else if (currentMessage.isMimeType("multipart/*")) {
Multipart multipart = (Multipart) currentMessage.getContent();
BodyPart firstPart = multipart.getBodyPart(0); if (firstPart.isMimeType("text/*")) {
text = (String) firstPart.getContent();
}
} return text;
} // 返回一个信件列表
// 主要用于多封信件的发送,删除,转移等 Message[] findMessages(String[] messageNumbers)
throws MessagingException {
if (messageNumbers != null) {
List messageList = new ArrayList(); for (int i = 0; i < messageNumbers.length; ++i) {
int messageNumber = 0; try {
messageNumber = Integer.parseInt(messageNumbers[i]); } catch (NumberFormatException e) {
messageNumber = 0;
} if (messageNumber > 0) {
messageList.add(currentFolder.getMessage(messageNumber));
}
} return (Message[]) messageList.toArray(new Message[0]);
} return new Message[0];
} // jsp调用时根据得到的命令参数来进行处理。 public void doCommand(HttpServletRequest request)
throws MessagingException {
String command = request.getParameter("command");
String[] messageNumbers = request.getParameterValues("number");
String toFolderName = request.getParameter("to"); Folder toFolder = findFolder(toFolderName);
//进行复制处理
if ("Copy".equalsIgnoreCase(command)) {
if (toFolder != null) {
Message[] messages = findMessages(messageNumbers);
currentFolder.copyMessages(messages, toFolder);
}
} else if ("Move".equalsIgnoreCase(command)) {//转移信件到别的文件夹 if (toFolder != null) {
Message[] messages = findMessages(messageNumbers);
currentFolder.copyMessages(messages, toFolder);
currentFolder.setFlags(messages,
new Flags(Flags.Flag.DELETED), true);
}
} else if ("Delete".equalsIgnoreCase(command)) {//删除信件 Message[] messages = findMessages(messageNumbers);
currentFolder.setFlags(messages, new Flags(Flags.Flag.DELETED),
true); } else if ("Send".equalsIgnoreCase(command)) {//发送信件//得到数据
//发送人地址
//发送地址
//抄送地址
//暗送地址
//主题
//内容
//回复(如果是回复信件的话,得到原信件的编号)
defaultFrom = 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"); String reply = request.getParameter("reply"); Message message = null;
int replyNumber = 0; try {
replyNumber = Integer.parseInt(reply); } catch (NumberFormatException e) {} if (replyNumber > 0) {
message = currentFolder.getMessage(replyNumber).reply(false);
} else {
message = new MimeMessage(session);
} message.setFrom(new InternetAddress(defaultFrom)); if (to != null) {
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to)); }
if (cc != null) {
message.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(cc)); }
if (bcc != null) {
message.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse(bcc)); }
message.setSubject(subject);
message.setText(text); Transport.send(message);
}
} // 因扩展HttpSessionBindingListener接口所以必须实现valueBound,valueUnbound方法 public void valueBound(HttpSessionBindingEvent event) {} public void valueUnbound(HttpSessionBindingEvent event) {
close();
}
}
//**********SendMail.java****************//
//Purpose: Send HTML or Text Mail
//function: setFrom(String from)---From mail address, e.g. [email protected]
// setUser(String user)---Account of sender, e.g. anyone
// sSetPassword(String password)----Password of sender
// setsmtpServer(String smtp)----SMTP mail Server
// setReply(String reply)----Recipient mail
// setSubject(String subject)-----Mail subject
// setContent(String content)-----Mail content
// setAuthentic(String authentic)----whether needs authentic
// setFileName(String filename)----Attached file
.....
[email protected]
www.cn-java.com 上有专门的说明,在JavaMail专题里。
给我来一份,谢谢了
我也来一份吧!谢谢了!!
[email protected]
[email protected]
<%
Properties props = new Properties();
props.put("mail.smtp.host", "你的SMTP服务器");
Session s = Session.getInstance(props,null); MimeMessage message = new MimeMessage(s); InternetAddress from = new InternetAddress("发件人邮件地址");
message.setFrom(from);
InternetAddress to = new InternetAddress("收件人邮件地址");
message.addRecipient(Message.RecipientType.TO, to);
message.setSubject("Test from JavaMail.");
message.setText("Hello from JavaMail!"); Transport.send(message);
%>我发的信,怎么标题好象是繁体,内容里的汉字都是乱码~~?????:(
import java.util.*;
import javax.mail.*;
import java.io.*;
import javax.mail.internet.*;
import javax.activation.*;public class Email {
protected String to = null;
protected String subject = "Email Test";
protected String body = null; public Email() {
super();
} public void setTo(String to) {
this.to = to;
} public void setBody(String body) {
this.body = body;
} public void sendmail() {
try
{
String host = "smtp.163.net";
String from = "your name";
String to = "other email address";
String username = "your username";
String password = "your password";
this.body = "This is a test"; SmtpAuth sa=new SmtpAuth();
sa.getuserinfo(username,password);
Session session;
MimeMessage message;
Properties props = System.getProperties();
props.put("mail.smtp.auth","true");
props.put("mail.smtp.host", host);
session = Session.getInstance(props, sa);
session.setDebug(true);
message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(body);
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp);
message.setContent(mp);
message.setSentDate(new java.util.Date());
Transport transport = session.getTransport("smtp");
transport.connect("smtp.163.net",username,password);
transport.send(message);
}
catch (MessagingException e) {
System.out.println("error" + e.getMessage());
}
} class SmtpAuth extends javax.mail.Authenticator {
private String user,password;
public void getuserinfo(String getuser,String getpassword){
user=getuser;
password=getpassword;
}
protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
return new javax.mail.PasswordAuthentication(user,password);
}
}
}