邮件可以发送出去,就是加上附件不行,在d盘根目录确实存在一个ttt.txt文件,没有任何异常,就是发不出附件,谢谢高手!!
import java.util.Date;
import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;public class JMail{     public static void main(String[] arge) throws Exception {
        String from = "[email protected]";
        String to = "[email protected]";
        String subject = "Test mail";
        String body = "A text mail";
        Properties props = System.getProperties();
        // 设置SMTP邮件服务器:
        props.put("mail.smtp.host", "smtp.sohu.com");
        props.setProperty("mail.smtp.port", "25"); 
        // SMTP服务器需要验证:
        props.put("mail.transport.protocol", "smtp"); 
        props.put("mail.smtp.starttls.enable","true"); 
        props.put("mail.smtp.auth", "true");
        // 传入用户名和口令:
        Session session = Session.getDefaultInstance(props,
                new PasswordAuthenticator("[email protected]", "password"));
        // 创建新邮件:
        Message msg = new MimeMessage(session);
        
        msg.setFrom(new InternetAddress(from));
        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
        msg.setSubject(subject);
        msg.setText(body);
        msg.setSentDate(new Date());
        // 发送:
         MimeBodyPart mbp1 = new MimeBodyPart();
         mbp1.attachFile("sss");
         Multipart multi = new MimeMultipart(); 
     FileDataSource fds = new FileDataSource("d:\\ttt.txt");
     mbp1.setDataHandler(new DataHandler(fds));
     mbp1.setFileName("ddd");
     multi.addBodyPart(mbp1);
     msg.setContent(multi);
     msg.saveChanges();
        Transport.send(msg);
       
    }
}class PasswordAuthenticator extends Authenticator {    private String username;
    private String password;    public PasswordAuthenticator(String username, String password) {
        this.username = username;
        this.password = password;
    }    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }}

解决方案 »

  1.   

    出什么异常啊? 你确信你的JAF是可用的?Class.forName先确认这点。
      

  2.   

    mbp1.attachFile("sss"); 
    这个眼生
      

  3.   

    //   传入用户名和口令: 
                    Session   session   =   Session.getDefaultInstance(props, 
                                    new   PasswordAuthenticator("[email protected]",   "password")); 
    session.setDebug(true);?
      

  4.   

    不知道是我没说清楚 还是LZ没看清楚 (可以发送附件)我是把你的代码完全COPY过去测试的 也在D盘下建了那个文件 收到的邮件附件就是ddd
      

  5.   

    我用的Sohu.com的邮箱和qq.com的邮箱怎么都收不到附件?请问你用的什么邮箱?
      

  6.   

    是不是与我的操作系统有关系?我用的Vista+MyEclipse6.0(JDK1.5自带的,没有另外装)??楼上用的什么jdk?
      

  7.   

    我用163的邮箱 JDK1.6不知道是不是你系统的问题,你先试下用正常的途径可不可以发附件(不要用你写的这个程序) 
      

  8.   

    mbp1.setFileName("ddd"); 改成 mbp1.setFileName("ddd.txt");