代码应该没问题
是          msg.setFrom(new InternetAddress("sgr"));
这句出错吗?

解决方案 »

  1.   

    楼上的说的对,
    new InternetAddress("sgr"));中的参数sgr应该是一个有效的邮件地址。你的是非法的,你该成如下:
    new InternetAddress("[email protected]"));就可以了。
      

  2.   

    我这样写只是随便举个例子,而且new InternetAddress("sgr"));是不会出错的。在Mail中是FROM:sgr<smtp服务器的address>。请各位试试
      

  3.   

    我在另一个程序中这样试过,是可以的但我找不出两段代码那里不同。
    正确代码:
    package mymail;import java.util.Properties;
    import javax.mail.Authenticator;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.activation.FileDataSource;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.Multipart;
    import javax.mail.internet.MimeMessage;
    import javax.activation.DataHandler;
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeMultipart;
    import javax.mail.internet.InternetAddress;
    import javax.mail.Transport;
    import java.util.Date;
    import javax.mail.Message;public class mailOperation extends baseMail{
        /** 存放session属性(smtp服务器属性) */
        private SmtpAuth sa = null;
        /** 存放session属性(smtp用户验证属性) */
        private Properties props = null;
        /** 确定邮件会话 */
        private Session session = null;
        /** 存放附件 */
        private FileDataSource fds = null;
        /** 存放邮件的各个部分 */
        private MimeBodyPart bodyPart = null;
        /** 存放整个邮件 */
        private Multipart mailBody = null;
        /** 存放整个邮件消息 */
        private MimeMessage msg = null;
        /** 邮件的优先级 */
        private String priority = "3";
        /***/
        private String ContentType = "text/html";    public void setContentType(String ContentType) {
            this.ContentType = ContentType;
        }    /**
         * 设置邮件的优先级
         * @param priority 邮件的优先级,默认为3
         */
        public void setPriority(String priority) {
            this.priority = priority;
        }    public void init() {
            sa = new SmtpAuth();
            sa.getuserinfo(userName, password);
            props = System.getProperties();
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.host", smtp);
            props.put("mail.smtp.port", smtpPort);
            if (checkUser)
                session = Session.getDefaultInstance(props, sa);
            else
                session = Session.getDefaultInstance(props, null);
            session.setDebug(true);
            msg = new MimeMessage(session);
            mailBody = new MimeMultipart();
        }    /**
         * 发送邮件
         * @return 发送成功返回true,否则返回false
         */
        public boolean sendMail() {        bodyPart = new MimeBodyPart();
            try {
                bodyPart.setDataHandler(new DataHandler("请使用浏览器模式",
                        "text/plain; charset=gb2312"));
                mailBody.addBodyPart(bodyPart);
                bodyPart = new MimeBodyPart();
                bodyPart.setDataHandler(new DataHandler("<br>aa<br>bb<br>cc",
                        "text/html; charset=gb2312"));
                mailBody.addBodyPart(bodyPart);
            }
            catch(MessagingException msgEx) {
                System.out.println("222");
                System.err.println(msgEx.getMessage());
            }
            try {
                msg.setSentDate(new Date());
                msg.setContent(mailBody);
                msg.setFrom(new InternetAddress(from));
                System.err.println(from);
                msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to, false));
                msg.setSubject(subject);
    //            msg.setHeader("Content-Type", ContentType);
    //            msg.setHeader("Content-Transfer-Encoding", "8bit");
                msg.setHeader("X-Priority", priority);
                Transport.send(msg);
                System.out.println("*************");
            }
            catch(MessagingException msgEx) {
                System.out.println("333");
                System.err.println(msgEx.getMessage());
                return false;
            }
            return true;
        }
        /**
         * 发送邮件
         * @paramt from 发件人地址
         * @paramt to 收件人地址
         * @return 发送成功返回true,否则返回false
         */
        public boolean sendMail(String from, String to) {
            this.from = from;
            this.to = to;
            return sendMail();
        }
        /**
         * 发送邮件
         * @paramt from 发件人地址
         * @paramt to 收件人地址
         * @paramt mainTxt 邮件文本内容
         * @return 发送成功返回true,否则返回false
         */
        public boolean sendMail(String from, String to, String mainTxt) {
            this.from = from;
            this.to = to;
            this.mainTxt = mainTxt;
            return sendMail();
        }
        /**
         * 增加附件
         * @paramt fileName 附件在客户端地址及文件名
         */
        public void addAccessory(String fileName) {
            try {
                mailBody.addBodyPart(getBodyPart(fileName));
            }
            catch(MessagingException msgEx) {
                System.out.println("444");
                System.err.println(msgEx.getMessage());
            }
        }
        /**
         * 增加附件,放在列表指定的索引位置
         * @paramt fileName 附件在客户端地址及文件名
         * @paramt index 指定索引位置
         */
        public void addAccessory(String fileName, int index) {
            try {
                mailBody.addBodyPart(getBodyPart(fileName), index);
            }
            catch(MessagingException msgEx) {
                System.out.println("555");
                System.err.println(msgEx.getMessage());
            }
        }
        /**
         * 得到邮件的bodyPart
         * @paramt fileName 附件在客户端地址及文件名
         * @return 返回邮件的bodyPart
         */
        private MimeBodyPart getBodyPart(String fileName) {
            fds = new FileDataSource(fileName);
            bodyPart = new MimeBodyPart();
            try {
                bodyPart.setDataHandler(new DataHandler(fds));
                bodyPart.setFileName(fds.getName());
                return bodyPart;
            }
            catch(MessagingException msgEx) {
                System.out.println("666");
                System.err.println(msgEx.getMessage());
                return null;
            }
        }
        /**
         * 删除附件
         * @paramt fileName 附件文件名
         */
        public void delAccessory(String fileName) {
           try {
                mailBody.removeBodyPart(getBodyPart(fileName));
            }
            catch(MessagingException msgEx) {
                System.out.println("1111");
                System.err.println(msgEx.getMessage());
            }
        }
        /**
         * 删除列表指定位置的附件
         * @paramt index 指定索引位置
         */
        public void delAccessory(int index) {
            try {
                mailBody.removeBodyPart(index);
            }
            catch(MessagingException msgEx) {
                System.out.println("777");
                System.err.println(msgEx.getMessage());
            }
        }    private class SmtpAuth extends Authenticator{
            private String user,password;
            public void getuserinfo(String getuser,String getpassword){
                user=getuser;
                password=getpassword;
            }
            protected PasswordAuthentication getPasswordAuthentication(){
                return new PasswordAuthentication(user,password);
            }
        }
    }
      

  4.   

    package mymail;/**
     * 邮件操作的虚类,
     * 主要设置一些邮件所必须的参数和声明一些基本的操作
     */
    public abstract class baseMail {
        /** 邮件服务器的smtp服务地址 */
        protected String smtp = null;
        /** 邮件服务器的smtp服务端口 */
        protected String smtpPort = null;
        /** 邮件服务器的pop3服务地址 */
        protected String pop3 = null;
        /** 邮件服务器的pop3服务端口 */
        protected String pop3Port = null;
        /** 收件人地址 */
        protected String from = null;
        /** 发件人地址 */
        protected String to = null;
        /** 邮件主题 */
        protected String subject = null;
        /** 邮件文本内容 */
        protected String mainTxt = null;
        /** 邮箱用户名 */
        protected String userName = null;
        /** 邮箱密码 */
        protected String password = null;
        /** smtp服务是否要验证用户 */
        protected boolean checkUser = false;    /**
         * 设置smtp服务是否要验证用户
         * @param checkUser 是否要验证用户。true为要验证
         */
        public void setCheckUser(boolean checkUser) {
            this.checkUser = checkUser;
        }
        /**
         * 设置邮件服务器的smtp服务地址
         * @paramt smtp smtp服务地址
         */
        public void setSmtp(String smtp) {
            this.smtp = smtp;
        }
        /**
         * 设置邮件服务器的smtp服务端口
         * @paramt smtpPort smtp服务端口
         */
        public void setSmtpPort(String smtpPort) {
            this.smtpPort = smtpPort;
        }
        /**
         * 设置邮件服务器的pop3服务地址
         * @paramt pop3 pop3服务地址
         */
        public void setPop3(String pop3) {
            this.pop3 = pop3;
        }
        /**
         * 设置邮件服务器的pop3服务端口
         * @paramt pop3Port pop3服务端口
         */
        public void setPop3Port(String pop3Port) {
            this.pop3Port = pop3Port;
        }
        /**
         * 设置收件人地址
         * @paramt from 收件人地址
         */
        public void setFrom(String from) {
            this.from = from;
        }
        /**
         * 设置发件人地址
         * @paramt to 发件人地址
         */
        public void setTo(String to) {
            this.to = to;
        }
        /**
         * 设置邮件主题
         * @paramt subject 邮件主题
         */
        public void setSubject(String subject) {
            this.subject = subject;
        }
        /**
         * 设置邮件文本内容
         * @paramt mainTxt 邮件文本内容
         */
        public void setMainTxt(String mainTxt) {
            this.mainTxt = mainTxt;
        }
        /**
         * 设置邮箱用户名
         * @paramt userName 邮箱用户名
         */
        public void setUserName(String userName) {
            this.userName = userName;
        }
        /**
         * 设置邮箱密码
         * @paramt password 邮箱密码
         */
        public void setPassword(String password) {
            this.password = password;
        }    /**
         * 发送邮件
         * @return 发送成功返回true,否则返回false
         */
        public abstract boolean sendMail();
        /**
         * 发送邮件
         * @paramt from 发件人地址
         * @paramt to 收件人地址
         * @return 发送成功返回true,否则返回false
         */
        public abstract boolean sendMail(String from, String to);
        /**
         * 发送邮件
         * @paramt from 发件人地址
         * @paramt to 收件人地址
         * @paramt text 邮件文本内容
         * @return 发送成功返回true,否则返回false
         */
        public abstract boolean sendMail(String from, String to, String text);
        /**
         * 增加附件
         * @paramt fileName 附件在客户端地址及文件名
         */
        public abstract void addAccessory(String fileName);
        /**
         * 增加附件,放在列表指定的索引位置
         * @paramt fileName 附件在客户端地址及文件名
         * @paramt index 指定索引位置
         */
        public abstract void addAccessory(String fileName, int index);
        /**
         * 删除附件
         * @paramt fileName 附件文件名
         */
        public abstract void delAccessory(String fileName);
        /**
         * 删除列表指定位置的附件
         * @paramt index 指定索引位置
         */
        public abstract void delAccessory(int index);}