用JavaMail API编写邮件发送程序 ---------------------------------- 
例子代码如下: 
import java.util.* ; 
import java.io.* ; 
import javax.mail.* ; 
import javax.mail.internet.* ; 
import javax.activation.* ; 
public class jsendMail { 
//定义收件人、发送人、主题等 
String to=“”,from=“”,host=“”,filename=“”,messagetext=“”,subject=“”; 
boolean debug=false; 
//保存发送的文件名 
Vector vfile = new Vector(10,10); 
//保存发送的正文 
Vector vmsg = new Vector(10,10); 
public jsendMail() {} 
public jsendMail(String to,String from,String smtpServer,String subject) 

//初始化收件人、发送人、主题 
this.to=to; 
this.from=from; 
this.host=smtpServer; 
this.subject=subject; 

//收集附加文件 
public void attachfile(String fname) 

vfile.addElement(fname); 

//收集邮件正文 
public void setMessage(String msg) 

vmsg.addElement(msg); 

//设置调试标志 
public void setDebug(boolean debug) 

this.debug=debug; 

//邮件发送函数 
public boolean startSend() 

Properties props = System.getProperties(); 
props.put(“mail.smtp.host”, host); 
Session session=Session.getDefaultInstance 
(props, null); 
session.setDebug(debug); 
try { 
//创建一个消息,并初始化该消息的各项元素 
MimeMessage msg = new MimeMessage(session); 
msg.setFrom(new InternetAddress(from)); 
InternetAddress[] address={new Internet 
Address(to)}; 
msg.setRecipients(Message.RecipientType.TO,address); 
msg.setSubject(subject); 
//把message part加入新创建的Multipart 
Multipart mp = new MimeMultipart(); 
// 邮件内容的第一部分 
Enumeration emsg=vmsg.elements(); 
while(emsg.hasMoreElements()) 

messagetext=emsg.nextElement().toString(); 
MimeBodyPart mbp1=new MimeBodyPart(); 
mbp1.setText(messagetext); 
mp.addBodyPart(mbp1); 

vmsg.removeAllElements(); 
// 邮件内容的第二部分 
Enumeration efile=vfile.elements(); 
while(efile.hasMoreElements()) 

MimeBodyPart mbp2=new MimeBodyPart(); 
filename=efile .nextElement().toString(); 
FileDataSource fds=new FileDataSource(filename); 
mbp2.setDataHandler(new DataHandler(fds)); 
mbp2.setFileName(fds.getName()); 
mp.addBodyPart(mbp2); 

vfile.removeAllElements(); 
// 把MultiPart加入邮件 
msg.setContent(mp); 
// 设置邮件头的发送日期 
msg.setSentDate(new Date()); 
// 发送邮件 
Transport.send(msg); 
} catch (MessagingException mex) { 
mex.printStackTrace(); 
Exception ex = null; 
if ((ex=mex.getNextException())!=null) 

ex.printStackTrace(); 

return false; 

return true; 
}//end public void startSend() 
public static void main(String[] args) 

jsendMail sendmail=new jsendMail(“[email protected]”,“[email protected]”,“smtp.21cn.com”,“test JavaMail API”); 
sendmail.attachfile(“jsendMail.java"); 
sendmail.attachfile(“jsendMail.class"); 
sendmail.setMessage(“send a file"); 
sendmail.setMessage(“send a javafile"); 
sendmail.startSend(); 

} 找到的 ,不知有没用?

解决方案 »

  1.   

    谢谢各位的参与!只要能给我参考的资料的,我都给分,以表示对大家支持的感谢.
    多谢楼上的sedge(sedge),不过,你的程序没有设置Authentication验证,好象在2000年前这是可以发送邮件的(那时不需要验证),但现在用你这个程序发送邮件,是发送不出去的.现在需要SMTP服务器安全认证才能发送的.因为,不可能随便用一个发件箱(from)就可以发邮件给另一个人的邮箱(to)的,如果不验证这个发件用户的身份,一些含恶意的人就可以随便用一个人的邮箱给另外一个自己讨厌的人的邮箱发送一些病毒了.我不明白的是,验证的时候,验证的是否就是发送邮箱的用户名和密码.希望使用javaMail做过发送电子邮件的大虾们指点迷津,有完整的程序代码的可否给我参考参考的(我需要是能成功发送邮件的)?只要能实现发送邮件就可以了,不必要功能是很全面的.谢谢了
      

  2.   

    就是嘛,你漏了props.put("mail.smtp.auth", "true");这样就成了.希望楼主加了这行,试了肯定成了.
      

  3.   

    还有什么问题就发email给我,[email protected]