import javax.activation.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class TestSmtp{
private String smtp="smtp.163.com";
private String subject="Try";
private String to="xxxxxx";//目的信箱
private String user="xxxxxxx";//我的163信箱用户名
private String pass="xxxxxxxxxx";//我的163信箱密码
private String body="This is the mail body";
private class SmtpAuthenticator extends Authenticator {
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication
(user, pass);
}
}
public boolean sendMail(){  
//发送一个邮件 
try { 
Properties props=System.getProperties(); 
props.put("mail.smtp.auth","true"); 
props.put("mail.smtp.host",smtp); Session sess = Session.getDefaultInstance(props, new SmtpAuthenticator());

// Session sess=Session.getDefaultInstance        (props,null);
sess.setDebug(true); 
MimeMessage msg = new MimeMessage(sess); 
msg.setDataHandler(new DataHandler(body,"text/html; charset=gb2312")); 
  msg.setFrom(new InternetAddress(smtp));
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to,false));
msg.setSubject(subject); 
msg.setSentDate(new Date());
System.out.println("Date set");  
Transport transport = sess.getTransport("smtp");
System.out.println("get transport");
transport.connect(smtp,user,pass);
System.out.println("connect build");
transport.send(msg); 
transport.close();
return true; 

catch (Exception e) { 
return false; 

}

public static void main(String []args){
TestSmtp sender=new TestSmtp();
boolean flag=sender.sendMail();
if(flag)
System.out.println("send successfully");
else
System.out.println("send fault");
}
}

解决方案 »

  1.   

    /////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    一个发送MAIL的BEANpackage homepage; import java.io.IOException; 
    import java.io.OutputStream; 
    import java.util.Date; 
    import java.util.Hashtable; 
    import javax.activation.DataHandler; 
    import javax.activation.FileDataSource; 
    import javax.mail.*; 
    import javax.mail.internet.*; 
    /** 
    * Title: JavaMail system 
    * Description: 
    * Copyright: Copyright (c) 2002 
    * Company: home 
    * @author coolwen.com 
    * @version 1.0 
    */ 
    public class SmtpAuthenticator extends javax.mail.Authenticator{ 
    //SMTP身份验证 
    protected javax.mail.PasswordAuthentication getPasswordAuthentication() 

    return new javax.mail.PasswordAuthentication("coolwen.com","password"); 

    } package homepage; import java.io.IOException; 
    import java.io.OutputStream; 
    import java.util.Date; 
    import java.util.Hashtable; 
    import javax.activation.DataHandler; 
    import javax.activation.FileDataSource; 
    import javax.mail.*; 
    import javax.mail.internet.*; 
    import java.util.*; 
    import java.io.File; 
    /** 
    * Title: JavaMail system 
    * Description: 
    * Copyright: Copyright (c) 2002 
    * Company: home 
    * @author coolwen.com 
    * @version 1.0 
    */ public class SendMail{ private String smtp="smtp.163.com",from="[email protected]"; 
    //发送一个邮件 
    public boolean SendMail(String subject,String body,String to,String filename){ 
    try { SmtpAuthenticator sa=new SmtpAuthenticator(); 
    Properties props=System.getProperties(); 
    props.put("mail.smtp.auth","true"); 
    props.put("mail.smtp.host",smtp); Session sess=Session.getInstance(props,sa); 
    sess.setDebug(true); Message msg = new MimeMessage(sess); 
    msg.setDataHandler(new DataHandler(body,"text/html; charset=gb2312")); 
    if(filename.equals("") || filename == null||filename.equals("null")) 

    msg.setFrom(new InternetAddress(from)); 
    msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to,false)); 
    msg.setSubject(subject); 
    }else{ 
    msg.setFrom(new InternetAddress(from)); 
    msg.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(to)); 
    msg.setSubject(subject); 
    MimeBodyPart mbp1 = new MimeBodyPart(); 
    mbp1.setText(body); 
    MimeBodyPart mbp2 = new MimeBodyPart(); 
    //File file=new File(filename); 
    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()); 
    //msg.setText(body); 
    Transport.send(msg); 
    return true; 
    } catch (Exception e) { 
    return false; 



    在JSP中使用 <%@page contentType="text/html; charset=gb2312" language="java"%> 
    <jsp:useBean id="send" scope="page" class="homepage.SendMail" /> 
    <% 
    if(send.SendMail("中国","中国","[email protected]","D:\\myGUI.java")) 
    out.println("ok"); 
    else 
    out.println("no"); 
    %>
      

  2.   

    smtp.163.com发送的时候是需要认证的,如此而已
      

  3.   

    仅仅是因为smtp.163.com需要认证吗?我用smtp.sina.com试也不行,有那个信箱smtp服务器是不用认证的?