在做这个实验之前,我们应该准备一些包,你可以到这里下载点击打开链接http://download.csdn.net/detail/wohenai791515672/5673893
一.邮件服务器按功能可以划分为两种类型,SMTP与POP3/IMAP。SMTP用来替用户发送邮件和接收外面发送给本地用户的邮件;POP3/IMAP用来帮用户读取邮件。在了解邮件服务器后,我们应该知道用户要与邮件服务器交互,应该先登录此服务器。但是邮件服务器与邮件服务器之间是不需要登录验证的。
二.对于发送邮件基本原来实现,从Session对象中获得实现了Transport对象,使用Session对象创建Transport对象,并调用Message对象的方法封装邮件数据。连接指定的SMTP服务器,调用Transport对象中的邮件发送方法发送Message对象中封装邮件数据。(实现时要注意引入mail包)
//创建Session对象
Session session=Session.getDefaultInstance(new Properties());
//创建MimeMessage
MimeMessage msg=new MimeMessage(Session);
//可以设置邮件发送人,主题,日期
msg.setForm();
msg.setSentDate();
//设置邮件的内容
msg.setContent();
msg.saveMessage();
//获取Transport对象
Transport transport=session.getTransport();
Transport.connect(server,user,pass);
transport.sendMessage(message);transport.close();
Authenticator类的应用
public class myAuthenticator extends Authenticator{
String username=null;
String password=null;
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public myAuthenticator(String userName,String passWord)
{
this.username=userName;
this.password=passWord;
}
Protected PasswordAuthentication getPasswordAuthenticator()
{
Return new PasswordAuthentication(username,password);
}
可以为邮件发送程序配置代理
(1)提高访问速度(2)代理服务器可以起到防火墙的作用(3)通过代理服务器可以
访问一些不能直接访问的网站。(4)具有一定的隐身作用。
三.对于邮件接收的实现,从session中获得实现了某种邮件发送协议的store对象,
以某个邮箱帐户的身份连接上POP3或IMAP服务器,调用Store的getFolder的方法
,获取代表该帐户的邮箱中的某个邮件夹的Folder对象,调用Folder对象中的getMessage()或getMessage方法,获取邮件夹中每一封邮件,每一封邮件以一个Message对象返回。
roperties prop=new Properties();
prop.setProperty("mail.store.protocol",protocol);
prop.setProperty("mail.pop3.host",pop3Server);
Session mailSession=Session.getDefaultInstance(prop,null);
mailSession.setDebug(false);
Store store=mailSession.getStore(protocol);
store.connect(pop3Server,username,password);//pop3服务器的登录认证
Folder folder =store.getFolder("inbox");
folder.open(Folder.READ_WRITE);
Message[] messages=folder.getMessages();
for(int i=0;i<messages.length;i++)
{
String subject=messages[i].getSubject();
Address[] froms=messages[i].getFrom();
Address from=froms[0];
System.out.println("第"+(i+1)+"封邮件的主题:"+subject+"\t发件人地址为:"+from);
}
四.在邮件发送过程中要发送图片与附件。参考http://developer.51cto.com/art/200907/133797.htm
为邮件添加附件和内嵌图片,这需要在邮件撰写页面中选择邮件附件的多个文件和作为内嵌图片的多个图片文件,这些文件必须上传到web服务器后,web应用程序才能将他们的内容插入到整份MIME邮件 消息中,这涉及文件编程上传处理。对于文件上传处理,我们要注意的是路径一定要写正确。我这时参考了网上的代码,但是它的有问题,因为savefile路径不对,导致文件不能上传。
//一定要加“/”,new File(saveDir+"/"+fileName)
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(saveDir+"/"+fileName)));//获得文件输出流
因为我们新建文件夹时,可能给的路径是 String savePath = "d:/savefiles/";
但是通过 saveDir = new File(savePath);路径变成savePath = "d:/savefiles”
所以我们一定要加“/”。
五,用js打开文件对话框
<html>
<head>
<script type="text/javascript">
function openFileSelect()
{
var obj = document.getElementById('test');
obj.click();
}
</script>
</head>
<body>
<img src="liuyaf.JPG" οnclick='openFileSelect();'/>
<input type='file' name='tttt' value='' id='test' style='display:none'>
</body>
</html>