Alec's BLOG

Java will win the world

Java Mail 最简单的例子

1、sendMail.java      
­
import java.io.File;      
import java.util.Properties;      
import javax.activation.DataHandler;      
import javax.activation.FileDataSource;      
import javax.activation.MimetypesFileTypeMap;      
import javax.mail.Message;      
import javax.mail.Multipart;      
import javax.mail.PasswordAuthentication;      
import javax.mail.Session;      
import javax.mail.Transport;      
import javax.mail.URLName;      
import javax.mail.internet.AddressException;      
import javax.mail.internet.InternetAddress;      
import javax.mail.internet.MimeBodyPart;      
import javax.mail.internet.MimeMessage;      
import javax.mail.internet.MimeMultipart;      
import javax.mail.internet.MimeUtility;      
­
public class sendMail{      
­
      
public static void main(String[] args) {      
// TODO Auto-generated method stub      
// 获取系统属性      
Properties props = System.getProperties();      
­
String smtpHost = "smtp.163.com";      
// 源邮箱地址      
String Sfrom = "fxdlz@163.com";      
// 目的邮箱地址      
String Sto = "lyq32@163.com";      
­
// 源邮箱地址用户名和密码      
String userName = "fxdlz";      
String password = "123";      
­
// 设置邮件服务器相关信息      
props.put("mail.smtp.host", smtpHost);      
props.put("mail.smtp.auth", "true");      
props.put("mail.smtp.port", "25");      
props.put("mail.transport.protocol", "smtp");      
props.put("mail.store.protocol", "imap");      
props.put("mail.stmp.class", "com.sun.mail.smtp.SMTPTrasport");      
props.put("mail.imap.class", "com.sun.mail.imap.IMAPStore");      
­
// 必须通过一个Authenticator的子类SmtpAuth的对象auth来进行用户名和密码验证,SmtpAuth.java代码在最下面      
SmtpAuth auth = new SmtpAuth();      
auth.setUserinfo(userName, password);      
­
// 得到一个会话      
Session s = Session.getInstance(props, auth);      
s.setPasswordAuthentication(new URLName(smtpHost), auth      
.getPasswordAuthentication());      
­
// 定义一个消息      
MimeMessage message = new MimeMessage(s);      
try {      
­
InternetAddress from = new InternetAddress(Sfrom);      
message.setFrom(from);      
InternetAddress to = new InternetAddress(Sto);      
message.addRecipient(Message.RecipientType.TO, to);      
­
message.setSubject("JMail Test Application");      
­
// 当需要发送附件时删除此段,若不发送附件,此句必须,否则出错      
// message.setText("You JMail Application is successfull");      
­
/*-----------------------发送附件--------------------------------*/      
// 邮件消息内容的类型是 'Multipart'      
// 邮件消息的MIME类型是 'multipart/mixed'      
Multipart multipart = new MimeMultipart();      
// 下面介绍邮件消息的文本部分      
MimeBodyPart mbp1 = new MimeBodyPart();      
String textPart = "Hello,I am Alec.";      
// 为文本部分消息内容创建一个DataHandler对象      
DataHandler data = new DataHandler(textPart, "text/plain");      
// 设置文本MimeBodyPart的 DataHandler      
mbp1.setDataHandler(data);      
// 把文本的MimeBodyPart加入到Multipart容器中      
multipart.addBodyPart(mbp1);      
­
// 创建代表word附件的MimeBodyPart      
MimeBodyPart mbp2 = new MimeBodyPart();      
// 创建一个指向一个文件的DataHandler      
FileDataSource fds = new FileDataSource(new File("D:\\lyq.txt"));  //设置附件    
// 确保附件被合适的MIME类型application/msword处理      
MimetypesFileTypeMap ftm = new MimetypesFileTypeMap();      
// MIME类型的语法是后面空格然后跟文件的扩展名      
ftm.addMimeTypes("application/msword doc DOC");      
fds.setFileTypeMap(ftm);      
­
// 使用刚刚创建的FileDataSource实例化DataHandler      
DataHandler fileData = new DataHandler(fds);      
­
// 让这个MimeMultipart包含刚才的word文件      
mbp2.setDataHandler(fileData);      
// 为文件名指定字符集,否则虽然数据可以发到邮件中,但是无法识别出来      
mbp2.setFileName(MimeUtility.encodeWord(fds.getName(), "GB2312",      
null));      
// 把包含了附件的MimeMultipart对象加到Multipart容器中      
multipart.addBodyPart(mbp2);      
­
// 最后,把MimeMessage的内容设置为Multipart对象      
message.setContent(multipart);      
/*-----------------------发送附件--------------------------------*/      
­
// 发送消息      
Transport.send(message);      
­
System.out.println("Send Successfully!");      
­
} catch (Exception e) {      
e.printStackTrace();      
}      
}      
}
2、SmtpAuth.java
­
import javax.mail.Authenticator;      
import javax.mail.PasswordAuthentication;      
­
public class SmtpAuth extends Authenticator {      
­
private String user, password;      
­
public void setUserinfo(String getuser, String getpassword) {      
user = getuser;      
password = getpassword;      
}      
­
protected PasswordAuthentication getPasswordAuthentication() {      
return new PasswordAuthentication(user, password);      
}      
}      
­
3、注意:必须先下载JavaMail 1.4,把mail.jar文件添加到典型安装路径下。如果不想发送附件,把发送附件代码部分删掉即可 

posted on 2007-08-11 22:49 Alec 阅读(366) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

留言簿

文章分类(1)

文章档案(2)

搜索

最新随笔

最新评论