下面是我很早已前写的
编译通过
运行正常
/*
*Author:tyfun
*DateTime:2002.01.09
*Package:com.westarsoft.function
*/package com.westarsoft.function;import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;public class SendMail {
    private String SMTPServer = new String();
    private String from = new String();
    private String subject = new String();
    private String content = new String();
    private String user = new String();
    private String password = new String();
    private String fileAttachment = new String();
    public String getSMTPServer() {
        return SMTPServer;
    }
    public void setSMTPServer(String SMTPServer) {
        this.SMTPServer = SMTPServer;
    }
    public String getFrom() {
        return from;
    }
    public void setFrom(String from) {
        this.from = from;
    }
    public String getSubject() {
        return subject;
    }
    public void setSubject(String subject) {
        this.subject = subject;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getFileAttachment() {
        return fileAttachment;
    }
    public void setFileAttachment(String fileAttachment) {
        this.fileAttachment = fileAttachment;
    }        public void sendMailTo(String to,String cc,String bcc) {
        try {
            Properties props = new Properties();
            Session sendMailSession;
            Store store;
            Transport transport;
            
            sendMailSession = Session.getInstance(props, null);
            props.put("mail.smtp.host", SMTPServer);
            MimeMessage newMessage = new MimeMessage(sendMailSession);
            newMessage.setFrom(new InternetAddress(from));
             newMessage.setSubject(subject);
            newMessage.setSentDate(new Date());
            /*
            StringTokenizer tokenTO = new StringTokenizer(to, ",");        
            InternetAddress[] addrArrTO = new InternetAddress[tokenTO.countTokens()];
            int i = 0;
            while(tokenTO.hasMoreTokens()) {
                addrArrTO[i] = new InternetAddress(tokenTO.nextToken().toString());
                i++;
            }
            */            
            transport = sendMailSession.getTransport("smtp");
            transport.connect(SMTPServer, user, password);
            //newMessage.setRecipients(Message.RecipientType.TO, addrArrTO);
            newMessage.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            newMessage.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
            newMessage.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(bcc));
            
            MimeBodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText(content);
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(messageBodyPart);
            messageBodyPart = new MimeBodyPart();
            DataSource source = new FileDataSource(fileAttachment);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(fileAttachment);
            multipart.addBodyPart(messageBodyPart);
            newMessage.setContent(multipart);
                    
            transport.send(newMessage);
        }
        catch(Exception e) {
            System.out.println(e);
        }
    }
}<%
if(request.getMethod().equals("POST")) {
    SendMail mail = new SendMail();
    mail.setSMTPServer("200.1.1.157");
    mail.setUser("lint");
    mail.setPassword("xxxxx");
    mail.setFrom(request.getParameter("from"));
    mail.setSubject(request.getParameter("subject"));
    mail.setContent(request.getParameter("content"));
    mail.setFileAttachment(request.getParameter("filename"));
    mail.sendMailTo(request.getParameter("to"),request.getParameter("cc"),request.getParameter("bcc"));
}
%>

解决方案 »

  1.   

    http://www.csdn.net/develop/Read_Article.asp?Id=14929
      

  2.   

    leshui(大象无形)(有物混成,先天地生),有问题,代码还是一样的代码,我发不出去,
    Exception 还是一样的Exception,多了一点:boundary="----=_Part_0_31XXXXXXXXXXXXXXX",
    多谢指出是哪个地方的原因.
      

  3.   

    应该没问题的
    是不是有的包没有
    要两个包 javamail和jaf
      

  4.   

    发html类型的邮件,请参考javaMail自带的一个例子,具体我记不清了
      

  5.   

    to:leshui(大象无形)(有物混成,先天地生)
    不可能没有包的,如果没有包的话,首先,编译就不能通过.这是什么情况,会不会是smtp服务器的问题?
      

  6.   

    我找到错误原因了,是DCH(DataContentHandler)的原因,Transport在发送邮件的时候,先要将其转换成MIME类型,它将调用javax.mail.activation.CommandMap,具体代码如下:
    javax.mail.activation.CommandMap cmp = javax.mail.activation.CommandMap.getDefaultCommandMap();
    DataConentHandler DCH = cmp.createDataContentHandler(contenttype);//contenttype="text/palin","text/html","multipart/*"...
    if(DCH==null)
    {
         throw new UnSupprotedDataTypeException("no object DCH for MIME type"+contenttype);
     }CommandMap会在META-INF目录下找一个叫mailcap的文件,我的系统没有找到,所以DCH对角为空,呵呵呵.还是谢谢各位.