下面是一个用JavaMail发送附件的例子,你参考参考,看是不是你的代码有问题?
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;public class AttachExample {
  public static void main (String args[]) 
      throws Exception {
    String host = args[0];
    String from = args[1];
    String to = args[2];
    String fileAttachment = args[3];    // Get system properties
    Properties props = System.getProperties();    // Setup mail server
    props.put("mail.smtp.host", host);    // Get session
    Session session = 
      Session.getInstance(props, null);    // Define message
    MimeMessage message = 
      new MimeMessage(session);
    message.setFrom(
      new InternetAddress(from));
    message.addRecipient(
      Message.RecipientType.TO, 
      new InternetAddress(to));
    message.setSubject(
      "Hello JavaMail Attachment");    // create the message part 
    MimeBodyPart messageBodyPart = 
      new MimeBodyPart();    //fill message
    messageBodyPart.setText("Hi");    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messageBodyPart);    // Part two is attachment
    messageBodyPart = new MimeBodyPart();
    DataSource source = 
      new FileDataSource(fileAttachment);
    messageBodyPart.setDataHandler(
      new DataHandler(source));
    messageBodyPart.setFileName(fileAttachment);
    multipart.addBodyPart(messageBodyPart);    // Put parts in message
    message.setContent(multipart);    // Send the message
    Transport.send( message );
  }
}

解决方案 »

  1.   

    我想知道其中的host是否是smtp的名字(如smtp.263.net)?
      

  2.   

    mail.3wins.com
    这个smtp不需要认证,你试一下
      

  3.   

    我的程序如下:(帮忙指正)
      public void SendEmail(String mailfrom, String subject, String msgbody, String filename) {
        Properties props = System.getProperties();
        String host = "smtp.263.net";
        String mailto = "[email protected]";
        props.put("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(props, null);
        try {
           MimeMessage msg = new MimeMessage(session);
           msg.setFrom(new InternetAddress(mailfrom));
           msg.addRecipient(Message.RecipientType.TO, new InternetAddress(mailto));
           msg.setSubject(subject);
           MimeBodyPart mbp1 = new MimeBodyPart();
           mbp1.setText(msgbody);
           MimeBodyPart mbp2 = new MimeBodyPart();
           FileDataSource fds = new FileDataSource(filename);
           mbp2.setDataHandler(new DataHandler(fds));
           mbp2.setFileName(fds.getName());
           Multipart mp = new MimeMultipart();
           mp.addBodyPart(mbp1);
           mp.addBodyPart(mbp2);
           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();
           }
        }
      }
      

  4.   

    错误为:javax.mail.NoSuchProviderException:No Provider for Address type:rfc822
                at javax.mail.Session.GetTransport<Session.java:475>
                at javax.mail.Transport.send0(Transport.java:154)
                .....
      

  5.   

    263是需要认证的,你的代码中没有处理这一步,
    你换一个不需要认证的SMTP试试看,或者自己装一个
    IMail之类的邮件服务器可以很方便的测试!
      

  6.   

    我试过,这个服务器无需认证。服务器认证我没写过,估计应该是在mail from 命令时认证,并返回一个可否通过的代码,应该是 50x。建议你看看smtp协议
    等我试一下你的程序先!