使用 smtp 协议时是需要进行用户名和密码验证的

解决方案 »

  1.   

    我以前也做过一个关于JavaMail的项目,自己做着玩的, 具体的密码验证可以这样实现:class EmailAuthenticator extends Authenticator
    {
    private String m_username=null;
    private String m_userpass=null; void setUsername(String username)
    {
    m_username=username;
    }
    void setUserpass(String  userpass)
    {
    m_userpass=userpass;
    } EmailAuthenticator(String username,String userpass)
    {
    super();
    setUsername(username);
    setUserpass(userpass);
    }
    public PasswordAuthentication getPasswordAuthentication()
    {
    return new PasswordAuthentication(m_username,m_userpass);
    }
    }String host="smtp.163.com";
    String username="hahahaha";   //自己修改
    String passwd="********";   //自己修改String from="[email protected]";
    String to="[email protected]";
    String subject="This is a letter form server";
    String text="Happy Every Day!!";EmailAuthenticator mailAuthenticator=new EmailAuthenticator(username,passwd);
    try
    {
    Properties props=new Properties();
    props.put("mail.smtp.host",host);
    props.put("mail.smtp.auth","true"); Session mysession=Session.getInstance(props,(Authenticator)mailAuthenticator);
    MimeMessage message=new MimeMessage(mysession); message.setFrom(new InternetAddress(from));
    message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
    message.setSubject(subject); MimeBodyPart messageBodyPart =new MimeBodyPart();
    messageBodyPart.setText(text); 
    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messageBodyPart);

    message.setContent(multipart);
    Transport transport=mysession.getTransport("smtp");
    transport.connect(host,username,passwd);
    transport.sendMessage(message,message.getAllRecipients());
    transport.close();
    }
     catch(Exception e)
    {
     out.println("发送失败");
    }
      

  2.   

    可能是网络的原因.我试过在公司发不了,但是在家里上网就可以发.给个例子:
    http://www.gz-okay.cn/ideagrace/html/doc/2005/06/22/00034.html