没有人帮我看看么?
郁闷呀!
上头要我写发email的程序
又没人教我,全都要自学
最怕就是出这种小问题,好像不是什么问题,但程序就是通不过,不知道什么原因

解决方案 »

  1.   

    //用如下方法进行发送
    Transport tran=msession.getTransport("smtp");
    tran.connect(mailSmtpServer,mailUser,mailPass);
    tran.send(msg);
      

  2.   

    我以前写的:
    public class SendMail {
        /**
         * 待发送的邮件
         */
        private Mail mail;    /**
         * 发送邮件的配置
         */
        private MailBox mailBox;    /**
         * 传入待发送的邮件
         * 
         * @param mailBox
         *            发送邮件的配置信息
         * @param mail
         *            发送的邮件
         */
        public SendMail(MailBox mailBox, Mail mail) {
            this.mail = mail;
            this.mailBox=mailBox;
        }    protected void send() throws Exception {
            //发送邮件使用的服务器
            String hostName = mailBox.getHostName();
            //连接服务器的用户名
            String userName = mailBox.getUserName();
            //连接服务器的用户密码
            String password = mailBox.getPassword();        //Properties env = System.getProperties();
            Properties env=new Properties();
            //存储发送邮件服务器的信息
            env.put("mail.smtp.host", hostName);
            //同时通过验证
            env.put("mail.smtp.auth", "true");        //得到登陆器
            AbstractAuthenticator authenticator = MailElementFactory.getInstance()
                    .createAuthenticator();
            //根据属性新建一个邮件会话
            Session session = Session.getDefaultInstance(env);
            session.setDebug(false);        //创建一个消息
            MimeMessage message = new MimeMessage(session);
            //设定该消息的信息        //设定发件人
            UserEMailAddress fromAddress = mail.getFromUser();
            if (fromAddress != null) {
                String fromUser = fromAddress.getUserName();
                String fromEmail = fromAddress.getEmailAddress();
                InternetAddress fromInter = new InternetAddress(fromUser, fromEmail);
                message.setFrom(fromInter);
            } else {
                InternetAddress from=new InternetAddress("[email protected]");
                message.setFrom(from);
            }        //设定发送到
            Collection toUser = mail.getToUser();
            if (toUser != null && toUser.size() > 0) {
                Iterator iter = toUser.iterator();
                while (iter.hasNext()) {
                    UserEMailAddress address = (UserEMailAddress) iter.next();
                    addAddress(message, address, Message.RecipientType.TO);
                }
            }        //设定抄送到
            Collection copyUser = mail.getCopyUser();
            if (copyUser != null && copyUser.size() > 0) {
                Iterator iter = copyUser.iterator();
                while (iter.hasNext()) {
                    UserEMailAddress address = (UserEMailAddress) iter.next();
                    addAddress(message, address, Message.RecipientType.CC);
                }
            }        //密送到
            Collection copySecretUser = mail.getCopySecrecyUser();
            if (copySecretUser != null && copySecretUser.size() > 0) {
                Iterator iter = copySecretUser.iterator();
                while (iter.hasNext()) {
                    UserEMailAddress address = (UserEMailAddress) iter.next();
                    addAddress(message, address, Message.RecipientType.BCC);
                }
            }        //设定回复地址
            Collection repliesUser = mail.getRepliesUser();
            if (repliesUser != null && repliesUser.size() > 0) {
                Iterator replyIter = repliesUser.iterator();
                Collection replyAddresses = new ArrayList();
                while (replyIter.hasNext()) {
                    UserEMailAddress reAddress = (UserEMailAddress) replyIter
                            .next();
                    String replyUserName = reAddress.getUserName();
                    String replyEmail = reAddress.getEmailAddress();
                    InternetAddress re = new InternetAddress(replyUserName,
                            replyEmail);
                    replyAddresses.add(re);
                }
                message.setReplyTo((Address[]) replyAddresses
                        .toArray(new Address[] {}));
            }
            
            //设定需要发送收条,第二参数为回复地址,可以多个设定
            if(mail.isReplySign()){
                //设定收条地址
                repliesUser = mail.getRepliesUser();
                if (repliesUser != null && repliesUser.size() > 0) {
                    Iterator replyIter = repliesUser.iterator();
                    Collection replyAddresses = new ArrayList();
                    while (replyIter.hasNext()) {
                        UserEMailAddress reAddress = (UserEMailAddress) replyIter
                                .next();
                        String replyUserName = reAddress.getUserName();
                        String replyEmail = reAddress.getEmailAddress();
                        InternetAddress re = new InternetAddress(replyUserName,
                                replyEmail);
                        replyAddresses.add(re);
                    }
                    message.addHeader("Disposition-Notification-To","[email protected],[email protected]");
                }     
            }
           
            
            //设定主题
            message.setSubject(mail.getSubject());        //设定发送时间
            message.setSentDate(mail.getSendDate());        //创建消息体
            buildMessageContent(message);
            //加了没有反映
    //        message.setFlag(Flags.Flag.DRAFT,true);
    //        message.setFlag(Flags.Flag.SEEN,true);
                    
            
            
            
            message.saveChanges();
            
            Transport transport=session.getTransport("smtp");
            MailListener listener=new MailListener();
            transport.addTransportListener(listener);
            transport.addConnectionListener(listener);
            transport.connect(hostName,userName,password);
            transport.sendMessage(message,message.getAllRecipients());
            transport.close();
        }    protected void buildMessageContent(Message message)throws Exception {
        // create and fill the first message part
        MimeBodyPart textBody = new MimeBodyPart();
        textBody.setText(mail.getBodyText());     //添加附件
        Multipart multiPart=new MimeMultipart();
        Collection attackments=mail.getMutiparts();
        if(attackments!=null&&attackments.size()>0){
            Iterator iter=attackments.iterator();
            while(iter.hasNext()){
                Attackment attackment=(Attackment)iter.next();
                String fileName=attackment.getFileName();
                MimeBodyPart multiBodyPart=new MimeBodyPart();
                FileDataSource ds=new FileDataSource(fileName);
                
                multiBodyPart.setDataHandler(new DataHandler(ds));
                String separator=File.separator;
                int index=fileName.lastIndexOf(separator);
                String name=fileName.substring(index+1);
                multiBodyPart.setFileName(name);
                multiPart.addBodyPart(multiBodyPart);
            }
        }
        message.setContent(multiPart);
        }
      

  3.   

    protected void addAddress(Message message, UserEMailAddress address,
                Message.RecipientType type) throws MailException {
            try {
                String toName = address.getUserName();
                String emailAddress = address.getEmailAddress();
                InternetAddress inter = new InternetAddress();
                inter.setPersonal(toName);
                inter.setAddress(emailAddress);
                message.setRecipient(type, inter);
            } catch (Exception e) {
                throw new MailException(e.fillInStackTrace());
            }
        }    public static void main(String[] args) throws Exception {
            String hostName="192.168.0.181";
            String password="7570083";
            String protocol="pop3";
            String userName="chenshm";
            String name="localhost";
            String url="d://";
            MailBox mailBox = new MailBox(hostName,userName,password,protocol,name,url);        
            Mail mail=new Mail();
            Collection toUser=new ArrayList();
            UserEMailAddress to1=new UserEMailAddress("csm","csm@localhost");
            toUser.add(to1);
            mail.setToUser(toUser);
            mail.setSubject("mySend");
            UserEMailAddress from=new UserEMailAddress("csm","[email protected]");
            mail.setFromUser(from);
            mail.setBodyText((new Date()).toGMTString());
            //设定附件
            Attackment attackment=new Attackment();
            File file=new File("E:\\download\\jmail\\javamail-1.3.2ea\\demo\\sendfile.java");
            attackment.setFileName("E:\\download\\jmail\\javamail-1.3.2ea\\demo\\sendfile.java");
            StringBuffer attackmentBuffer=new StringBuffer();
            String line=null;
            BufferedReader reader=new BufferedReader(new FileReader(file));
            while(true){
             line=reader.readLine();
             if(line==null){
             break;
             }
             attackmentBuffer.append(line);
            }
            attackment.setContent(attackmentBuffer.toString());
            mail.addMutipart(attackment);
            
            attackment=new Attackment();
            file=new File("D:\\eclipse\\startup.jar");
            attackment.setFileName("D:\\eclipse\\startup.jar");
            attackmentBuffer=new StringBuffer();
            line=null;
            reader=new BufferedReader(new FileReader(file));
            while(true){
             line=reader.readLine();
             if(line==null){
             break;
             }
             attackmentBuffer.append(line);
            }
            attackment.setContent(attackmentBuffer.toString());
            mail.addMutipart(attackment);
            
            SendMail test = new SendMail(mailBox, mail);
            test.send();
        }
    }
      

  4.   

    你的代码差一句
    props.put("mail.smtp.auth", "true");吧
      

  5.   

    奇怪了,怎么试都不行呀
    我用的用户名和密码是我的账号的用户名密码
    是不是smtp服务器的用户名密码是专门的,不能使用个人账户的用户名密码?
    对邮件发送不太了解,问的问题比较弱智
      

  6.   

    你在SMTP上的用户名是这个"我的用户名"吗,他其实应该叫帐号,就是你的邮箱帐号,比如[email protected] 这里的用户名(SMTP帐号)是yourname,
    如果你的SMTP要求认证,一般都采用与POP3一样的用户名和密码,如果用其他的,SMTP
    服务帮助应该告诉。还有,认证时候的方式一般采用BASE64格式发送认证信息(这些在
    JAVA MAIL包中已经封装了)
      

  7.   

    现在有很少SMTP使用中文帐号,因为标准协议规范中没有定义中文帐号。
      

  8.   

    哦,我没有在这里写出真实的用户名和密码:)
    我的smtp服务器是:mail.caexpo.org
    pop3服务器同上
    我有一个账户
    然后我用这个账户发送邮件,然后失败!
      

  9.   

    老大们
    假设我有一个邮箱叫[email protected]
    username:my
    password:my
    要发到另一个邮箱:[email protected]
    只要发送的代码,该怎么写呢?
    怎样才能发出去呢?
    受不了了?
    谁给我贴一点代码亚,要可以运行的
     shangqiao(伤桥)老兄的太长了
    我只要发邮件的
    分不够可以加!多谢了
      

  10.   

    ......
    java.util.Properties props = System.getProperties();
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.auth","true");
    Session mailsession =Session.getInstance(props, null);
      Transport transport=null;
      try{
        transport = mailsession.getTransport("smtp");
        mail.saveChanges();
        transport.connect(host,username,password);
        transport.sendMessage(mail,mail.getAllRecipients());
        out.print("<center>邮件发送成功</center>");
      }catch(Exception e){
        //    e.printStackTrace();
        System.out.println("-------------------------------------------");
        System.out.println("web writeto.jsp error:"+e.getMessage());
        System.out.println("-------------------------------------------");
        out.print("<center>邮件发送失败:"+e.getMessage()+"</center><br>");
      }finally{
         if (transport!=null && transport.isConnected())
            transport.close();
      }