baitianhai(hong):
  您好,我想实现在网页内向输入的邮箱地址发送邮件(信息)。

解决方案 »

  1.   


    import javax.mail.*;
    import javax.mail.internet.*;public class JavaMailTest
    {  public JavaMailTest()
      {
      }  public static void main(String[] args) throws MessagingException
      {
         String smtpHost = "hostname";//接收邮件服务器
         String from = "xxx";//发送人邮件地址
         String to = "xxx@hostname" ;//接收人邮件地址     //start a session
         java.util.Properties props = System.getProperties();
         props.put("mail.debug","false");
         Session session = Session.getInstance(props, null);     //construct a message
         MimeMessage message = new MimeMessage(session);
         message.setFrom(new InternetAddress(from));
         message.addRecipient(Message.RecipientType.TO,
                              new InternetAddress(to));
         message.setSubject("主题");     message.setText("邮件内容");     //connect to transport
         Transport transport = session.getTransport("smtp");
         transport.connect(smtpHost, "", "");     //send the message and close the connection
         transport.sendMessage(message, message.getAllRecipients());
         transport.close();
      }
    }
      

  2.   

    /**
       * 发送邮件,可设置抄送地址,暗送地址
       * @return i,返回<int>1</int>表示发送成功,返回<int>0</int>则发送失败
       */
      public int sendMail()
      {
        String status = null;  //用于显示错误状态
        int i = 0;    Properties properties = System.getProperties();
        properties.setProperty("mail.transport.protocol","smtp");
        properties.put("mail.smtp.host","www.tbx.com.cn");           //创建信件服务器
        properties.put("mail.smtp.auth","true");                     //身份认证    //得到对话对象
        Session session = Session.getDefaultInstance(properties, new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(user,password);
    }
        });
        try
        {
          //创建一个消息,并初始化该消息的各项元素
          MimeMessage message = new MimeMessage(session);
          message.setFrom(new InternetAddress(from));      InternetAddress[] toadd = InternetAddress.parse(to);
          InternetAddress[] ccadd = InternetAddress.parse(cc);
          InternetAddress[] bcadd = InternetAddress.parse(bcc);
          message.setRecipients(Message.RecipientType.TO,toadd);
          message.setRecipients(Message.RecipientType.CC,ccadd);
          message.setRecipients(Message.RecipientType.BCC,bcadd);
          message.setSubject(subject);      Multipart mp = new MimeMultipart();
          Enumeration ef = file.elements();
          MimeBodyPart mbp = new MimeBodyPart();
          mbp.setText(text);
          mp.addBodyPart(mbp);      //检查序列中是否还有更多的对象
          while (ef.hasMoreElements())
          {
    MimeBodyPart mbp1 = new MimeBodyPart();
    //选择出每一个附件名
    String filename = ef.nextElement().toString();
    //得到数据源
    FileDataSource fds = new FileDataSource(filename);
    //得到附件本身并至入BodyPart
    mbp1.setDataHandler(new DataHandler(fds));
    //得到文件名同样至入BodyPart
    mbp1.setFileName(fds.getName());
    mp.addBodyPart(mbp1);
          }
          //移走集合中的所有元素
          file.removeAllElements();
          //Multipart加入到信件
          message.setContent(mp);
          //设置信件头的发送日期
          message.setSentDate(new Date());      //发送信件
          Transport transport = session.getTransport("smtp");
          transport.send(message,message.getAllRecipients());
          transport.close();      i = 1;
          status = "send sucesseful.";
        }
        catch (AddressException e)
        {
          status = "There was an error parsing the addresses.";
          System.err.println(e.getMessage());
        }
        catch (SendFailedException e)
        {
          status = "There was an error sending the message.";
          System.err.println(e.getMessage());
        }
        catch (MessagingException e)
        {
          status = "There was an unexpected eorror.";
          System.err.println(e.getMessage());
        }
        catch (Exception e)
        {
          status = "Error";
          System.err.println(e.getMessage());
        }
        finally
        {
          System.out.println("status: " + status);
          return i;
        }
      }
      

  3.   

    出现:“javax.mail.SendFailedException: Sending failed; nested exception is: javax.mail.AuthenticationFailedException ”是什么原因???
      

  4.   

    你用的服务器需要SMTP认证
    定义认证类
    public  class  SmtpAuthenticator  extends  javax.mail.Authenticator  
               {  
                           String  usr=null;    
                           String  pw=null;    
                           public  SmtpAuthenticator(String  user,String  pass)  
                           {  
                                       this.usr  =  user;  
                                       this.pw  =  pass;  
                           }    
                           protected  javax.mail.PasswordAuthentication  getPasswordAuthentication()  
                                   {  
                                           return  new  javax.mail.PasswordAuthentication(usr,  pw);  
                                   }  
               }  
    然后使用
    //用户认证过程  
                           SmtpAuthenticator  sa  =  new  SmtpAuthenticator(username,password);  
                           Session  sess=Session.getInstance(props,sa);    
                           sess.setDebug(false);  
    详情请看这里,或者搜索一下
    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=12942
      

  5.   

    package email.tools;import javax.mail.*;public class Email_Autherticatorbean extends javax.mail.Authenticator {
        private String m_username = null;
        private String m_userpass = null;    public void setUsername(String username) {
            m_username = username;
        }    public void setUserpass(String userpass) {
            m_userpass = userpass;
        }    public Email_Autherticatorbean() {
            super();
        }    public Email_Autherticatorbean(String username, String userpass) {
            super();
            setUsername(username);
            setUserpass(userpass);
        }
        //一定要有这个方法,它是在需要身份验证时自动被调用的
        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(m_username,m_userpass);
        }
    }
    ************************8
    package email.tools;public class Figure {
        private String sender ;
        private String recevier ;
        private String subject ;
        private String copyfor;
        private String hiddenfor;
        private String content;
        private String filePath;
        public void setSender(String s){this.sender = s;}
        public String getSender(){return this.sender;}
        public void setRecevier(String s){this.recevier = s;}
        public String getRecevier(){return this.recevier;}
        public void setSubject(String s){this.subject = s;}
        public String getSubject(){return this.subject;}
        public void setCopyfor(String s){this.copyfor = s;}
        public String getCopyfor(){return this.copyfor;}
        public void setHiddenfor(String s){this.hiddenfor = s;}
        public String getHiddenfor(){return this.hiddenfor;}
        public void setContent(String s){this.content = s;}
        public String getContent(){return this.content;}
        public void setFilePath(String s){this.filePath = s;}
        public String getFilePath(){return this.filePath;}
    }
    ******************
    package email.tools;public class MailUserAttribute implements java.io.Serializable {
        private String smtp = "";
        private String user = "";
        private String password = "";
        public void setSMTP(String s){this.smtp = s;}
        public String getSMTP(){return this.smtp;}
        public void setUser(String s){this.user = s;}
        public String getUser(){return this.user;}
        public void setPassword(String s){this.password = s;}
        public String getPassword(){return this.password;}
    }
    *************************
    package email.tools;import java.io.*;
    import java.net.InetAddress;
    import java.util.Properties;
    import java.util.Date;import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;
    public class SendMail implements java.io.Serializable {
        private Figure fig = null;
        private MailUserAttribute ua = null;
        private MimeMessage mimeMsg = null;
        private Session session = null;    public SendMail(Figure figure , MailUserAttribute mua) {
            fig = figure;
            ua = mua;
        }    public void send() {
            try {
                Properties props = System.getProperties();  //获得系统属性
                props.put("mail.smtp.host", ua.getSMTP());      //设置SMTP主机
                props.put("mail.smtp.auth","true");         //设置身份验证为真,若须身份验证则必须设为真
                //获得邮件会话对象
                //session = Session.getDefaultInstance(props,null);
                //注意下面这行的 Session.getDefaultInstance 方法的第二个参数
                session = Session.getDefaultInstance(props, new Email_Autherticatorbean(ua.getUser(), ua.getPassword()));
                //创建MIME邮件对象
                mimeMsg = new MimeMessage(session);
                //设置发信人
                mimeMsg.setFrom(new InternetAddress(fig.getSender()));
                //设置收信人
                if(fig.getRecevier() != null){
                    mimeMsg.setRecipients( Message.RecipientType.TO, InternetAddress.parse(fig.getRecevier()));
                }
                //设置抄送人
                if(fig.getCopyfor() != null){
                    mimeMsg.setRecipients( Message.RecipientType.CC, InternetAddress.parse(fig.getCopyfor()));
                }
                //设置暗送人
                if(fig.getHiddenfor() != null){
                    mimeMsg.setRecipients( Message.RecipientType.BCC, InternetAddress.parse(fig.getHiddenfor()));
                }
                //设置邮件主题
                mimeMsg.setSubject(fig.getSubject(),"GBK");
                //设置邮件内容
                mimeMsg.setText(fig.getContent() ,"GBK" );
                //发送日期
                mimeMsg.setSentDate(new Date());
                //发送邮件
                Transport.send( mimeMsg );
                System.out.println( "email send!");
            }catch(Exception e) {
                e.printStackTrace();
            }
        }    public static void main(String[] arg) {
            Figure fig = new Figure();
            MailUserAttribute ma = new MailUserAttribute();
            String mailhost = "smtp.163.net";
            String from = "[email protected]";
            String to = "[email protected]";
            String subject = "您好";
            String content  = "带身份验证的";
            String user = "bzg119";
            String password = "774210";
            ma.setSMTP(mailhost);
            ma.setUser(user);
            ma.setPassword(password);
            fig.setSender(from);
            fig.setRecevier(to);
            fig.setSubject(subject);
            fig.setContent(content);
            SendMail sm = new SendMail(fig , ma);
            sm.send();
        }
    }
    最后一个是主执行程序