VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1085|回复: 2

javaMail问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-4 13:00:01 | 显示全部楼层 |阅读模式
我按照网上的一个例子写的,报错
找了一天都不知道什么错,

package com;

import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;



class ExtendString {
        public ExtendString() {
        }

        /**
         * 去掉字符串两端的空白字符,并将字符串转化为中国的标准字符gb2312的字符串.
         */
        public String CS(String str) { // 去掉字符串2端的空白字符
                try {
                        if (str == null)
                                return "";
                        str = str.trim();
                        if (str == null)
                                return "";
                        str = new String(str.getBytes("8859_1"), "GBK");
                } catch (Exception e) {
                        System.out.println(e);
                }
                return str;
        }

}

public class SendMail {
        private String errMsg = "";

        private ExtendString ExStr = new ExtendString();

        private String sender = "";// 发件人地址

        private String smtpHost = "";// 邮件发送服务器(smtp)

        private String user = ""; // 登录用户名

        private String password = "";// 登录密码

        private String subject = "";// mail主题

        public SendMail() {
                this.setPropertiesAttri();
        }

        private void setPropertiesAttri() {
                try {
/*                        InputStream is = getClass().getResourceAsStream(
                                        "MailServer.properties");
                        Properties prop = new Properties();
                        prop.load(is);

                        this.setSmtpHost(prop.get("SmtpHost").toString());
                        this.setUser(prop.get("User").toString());
                        this.setPassword(prop.get("Password").toString());
                        this.setSender(prop.get("Sender").toString());
                        this.setSubject(ExStr.CS(prop.get("Subject").toString()));
                        */
                        this.setSmtpHost("smtp.163.com");
                        this.setUser("mysky.15");
                        this.setPassword("hibernate");
                        this.setSender("mysky.15@163.com");
                        this.setSubject("内容");

                } catch (Exception ex) {
                        System.err.println("ex1 in sendmail.java:" + ex.toString());
                }
        }

        /** 设置发件人地址 */

        public void setSender(String sender) {
                this.sender = sender;
        }

        public String getSender() {
                return sender;
        }

        /** 设置邮件发送服务器(smtp) */
        public void setSmtpHost(String smtpHost) {
                this.smtpHost = smtpHost;
        }

        public String getSmtpHost() {
                return smtpHost;
        }

        /** 设置登录用户名 */
        public void setUser(String user) {
                this.user = user;
        }

        public String getUser() {
                return user;
        }

        /** 设置登录密码 */
        public void setPassword(String password) {
                this.password = password;
        }

        public String getPassword() {
                return password;
        }

        /** 设置mail主题 */
        public void setSubject(String subject) {
                this.subject = subject;
        }

        public String getSubject() {
                return subject;
        }

        /**
         * 使用smtp发送邮件 主程序
         *
         * @throws MessagingException
         *             mail发送失败
         */
        public void smtp(String receiver, String content) throws MessagingException {
                if (smtpHost == null)
                        throw new MessagingException("smtpHost not found");
                if (user == null)
                        throw new MessagingException("user not found");
                if (password == null)
                        throw new MessagingException("password not found");

                Properties properties = new Properties();
                properties.put("mail.smtp.host", smtpHost);// 设置smtp主机
                properties.put("mail.smtp.auth", "true");// 使用smtp身份验证

                Session session = Session.getDefaultInstance(properties,
                                new Authenticator() {
                                        public PasswordAuthentication getPasswordAuthentication() {
                                                return new PasswordAuthentication(user, password);
                                        }
                                });

                // 获得邮件会话对象
                MimeMessage mimeMsg = new MimeMessage(session);// 创建MIME邮件对象
                if (sender != null)// 设置发件人地址
                {
                        mimeMsg.setFrom(new InternetAddress(sender));
                }
                if (receiver != null)// 设置收件人地址
                {
                        mimeMsg.setRecipients(Message.RecipientType.TO, parse(receiver));
                }
                if (subject != null)// 设置邮件主题
                {
                        mimeMsg.setSubject(subject, "GBK");
                }
                MimeBodyPart part = new MimeBodyPart();// mail内容部分
                part.setText(content == null ? "" : content, "GBK");

                // 设置邮件格式为html cqc
                part.setContent(content.toString(), "text/html;charset=GBK");
                Multipart multipart = new MimeMultipart();
                multipart.addBodyPart(part);// 在 Multipart 中增加mail内容部分
                mimeMsg.setContent(multipart);// 增加 Multipart 到信息体
                mimeMsg.setSentDate(new Date());// 设置发送日期
                Transport.send(mimeMsg);// 发送邮件
        }

        /** 解析地址集合字符串 */
        private InternetAddress[] parse(String addressSet) throws AddressException {
                ArrayList list = new ArrayList();
                StringTokenizer tokens = new StringTokenizer(addressSet, ";");
                while (tokens.hasMoreTokens()) {
                        list.add(new InternetAddress(tokens.nextToken().trim()));
                }
                InternetAddress[] addressArray = new InternetAddress[list.size()];
                list.toArray(addressArray);
                return addressArray;
        }

        /**
         * 供外部调用的接口
         */

        public boolean sendMails(String mail, String content) {
                int mailLen = 0;
                int contentLen = 0;
                if (mail == null || content == null) {
                        return false;
                }

                try {
                        this.smtp(mail, content);
                } catch (Exception ex) {
                        ex.printStackTrace();
                        //System.err.println("ex2 in sendmail.java:" + ex.toString());
                }

                return true;
        }

        public static void main(String[] args) {

                SendMail mail = new SendMail();
                String email = "mysky15@vip.winzheng.com";
                String content = "我试试";
                try {
                        mail.sendMails(email, content);
                } catch (Exception ex) {
                        System.err.println("ex33:" + ex.toString());
                }
        }

}


-----------------------------------------------------
报以下错
javax.mail.SendFailedException: Sending failed;
  nested exception is:
        class javax.mail.AuthenticationFailedException
        at javax.mail.Transport.send0(Transport.java:218)
        at javax.mail.Transport.send(Transport.java:80)
        at com.SendMail.smtp(SendMail.java:185)
        at com.SendMail.sendMails(SendMail.java:212)
        at com.SendMail.main(SendMail.java:227)
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-5 12:51:01 | 显示全部楼层
显示邮件验证失败,你得去找找Transport.java:218,SendMail.java:185里面写了些什么内容,做了什么处理,根据所进行的操作去查找出错得原因
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-6 10:24:01 | 显示全部楼层
Transport.java 是javax.mail包下的一个类,不是我写的
SendMail.java:185 行是 mail.sendMails(email, content);
我没找到什么错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表