怎样使用JavaMail?

brotherq 2007-10-16 01:58:36
新学JAVA,参考书是《深入浅出JBuilder8程序设计与开发》,作者:刘斌 编著,出版社:中国青年出版社。其中第14章“Servlet的应用”中讲了利用JavaMail发送邮件的例子。我按照书上讲的下载JavaMail API和JAF类文件包并在Tools菜单的Configure Libraries引入后。打开例子源程序:
以下是源程序开头的部分类引用代码:
import javax.servlet.*;
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
可是这些代码都出错,提示package不存在,这是为什么啊?是不是Configure Libraries引入方法有错还是需要配置Tomcat或者Weblogic。请高手指教!




...全文
65 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ieliew 2007-11-18
  • 打赏
  • 举报
回复
在jb的工程属性->path的ruquire libaries里把javamail导入,然后参考下面的代码
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import com.sun.activation.registries.*;
public class SendMail1 {
private MimeMessage mimeMsg; //MIME邮件对象

private Session session; //邮件会话对象

private Properties props; //系统属性

private boolean needAuth = false; //smtp是否需要认证

private String username = ""; //smtp认证用户名和密码

private String password = "";
private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象

/**
*
*/
public SendMail1() {
setSmtpHost("smtp.163.com");//如果没有指定邮件服务器,就从getConfig类中获取

createMimeMessage();
}
public SendMail1(String smtp){
setSmtpHost(smtp);
createMimeMessage();
}
/**
* @param hostName String
*/
public void setSmtpHost(String hostName) {
System.out.println("设置系统属性:mail.smtp.host = "+hostName);
if(props == null)props = System.getProperties(); //获得系统属性对象

props.put("mail.smtp.auth","true");
props.put("mail.smtp.host",hostName); //设置SMTP主机

}
/**
* @return boolean
*/
public boolean createMimeMessage()
{
try{
System.out.println("准备获取邮件会话对象!");
session = Session.getDefaultInstance(props,null); //获得邮件会话对象

}
catch(Exception e){
System.err.println("获取邮件会话对象时发生错误!"+e);
return false;
}
System.out.println("准备创建MIME邮件对象!");
try{
mimeMsg = new MimeMessage(session); //创建MIME邮件对象

mp = new MimeMultipart();
return true;
}
catch(Exception e){
System.err.println("创建MIME邮件对象失败!"+e);
return false;
}
}

/**
* @param need boolean
*/
public void setNeedAuth(boolean need) {
System.out.println("设置smtp身份认证:mail.smtp.auth = "+need);
if(props == null)props = System.getProperties();
if(need){
props.put("mail.smtp.auth","true");
}else{
props.put("mail.smtp.auth","false");
}
}
/**
* @param name String
* @param pass String
*/
public void setNamePass(String name,String pass) {
username = name;
password = pass;
}
/**
* @param mailSubject String
* @return boolean
*/
public boolean setSubject(String mailSubject) {
System.out.println("设置邮件主题!");
try{
mimeMsg.setSubject(mailSubject);
return true;
}
catch(Exception e) {
System.err.println("设置邮件主题发生错误!");
return false;
}
}
/**
* @param mailBody String
*/
public boolean setBody(String mailBody) {
try{
BodyPart bp = new MimeBodyPart();
bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+mailBody,"text/html;charset=GB2312");
mp.addBodyPart(bp);
return true;
}
catch(Exception e){
System.err.println("设置邮件正文时发生错误!"+e);
return false;
}
}
/**
* @param name String
* @param pass String
*/
public boolean addFileAffix(String filename) {
System.out.println("增加邮件附件:"+filename);
try{
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
return true;
}
catch(Exception e){
System.err.println("增加邮件附件:"+filename+"发生错误!"+e);
return false;
}
}

/**
* @param name String
* @param pass String
*/
public boolean setFrom(String from) {
System.out.println("设置发信人!");
try{
mimeMsg.setFrom(new InternetAddress(from)); //设置发信人

return true;
}
catch(Exception e)
{ return false; }
}

/**
* @param name String
* @param pass String
*/
public boolean setTo(String to){
if(to == null)return false;
try{
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
return true;
}
catch(Exception e)
{ return false; }
}
/**
* @param name String
* @param pass String
*/
public boolean setCopyTo(String copyto)
{
if(copyto == null)return false;
try{
mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));
return true;
}
catch(Exception e)
{ return false; }
}

/**
* @param name String
* @param pass String
*/
public boolean sendout()
{
try{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件....");
Session mailSession = Session.getInstance(props,null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String)props.get("mail.smtp.host"),username,password);
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
//transport.send(mimeMsg);

System.out.println("发送邮件成功!");
transport.close();
return true;
}
catch(Exception e)
{
System.err.println("邮件发送失败!"+e);
return false;
}
}
/**
* @param destMail 目的地邮件地址
* @param content 正文内容
*/
public void send(String destMail,String content,String Subject,String to,String path[],int Annex,String user,String pass)
{
String mailbody = "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+
"<div align=center>"+content+"</div>";

if(setSubject(Subject) == false) return;
if(setBody(mailbody) == false) return;
if(setTo(to) == false) return;
if(setFrom(destMail) == false) return;
for(int i=0;i<Annex;i++){
if(addFileAffix(path[i])==false) return;
}
setNamePass(user,pass);
if(sendout() == false) return;
}
/**
* Just do it as this
*/
public static void main(String[] args) {
String path []=new String[10];
path [0]="c:\\hello.txt";
//path [1]="c:\\AppCFG.ini";
int Annex=1;
SendMail1 mail = new SendMail1();
mail.send("waylei_1@163.com","测试,测试<br>ceshi","主题-测试","waylei_1@163.com",path,Annex,"waylei_1","*********");
}
}
issgates 2007-10-16
  • 打赏
  • 举报
回复
应该是你的当前工程未导入相关包

50,541

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧