用java发邮件 出现如下错误 ,代码如下

问题描述

用java发邮件 出现如下错误 ,代码如下

/**

  • 表示邮件类,你需要设置:账户名和密码、收件人、抄送(可选)、暗送(可选)、主题、内容,以及附件(可选)
  • 在创建了Mail对象之后
  • 可以调用它的setSubject()、setContent(),设置主题和正文
  • 也可以调用setFrom()和 addToAddress(),设置发件人,和添加收件人。
  • 也可以调用addAttch()添加附件
  • 创建AttachBean:new AttachBean(new File("..."), "fileName");
    */
    public class Mail {
    private String from;//发件人
    private StringBuilder toAddress = new StringBuilder();//收件人
    private StringBuilder ccAddress = new StringBuilder();//抄送
    private StringBuilder bccAddress = new StringBuilder();//暗送

    private String subject;//主题
    private String content;//正文

    // 附件列表
    private List attachList = new ArrayList();

    public Mail() {}

    public Mail(String from, String to) {
    this(from, to, null, null);
    }

    public Mail(String from, String to, String subject, String content) {
    this.from = from;
    this.toAddress.append(to);
    this.subject = subject;
    this.content = content;
    }

    /**

    • 返回发件人
    • @return
      */
      public void setFrom(String from) {
      this.from = from;
      }

    /**

    • 返回发件人
    • @return
      */
      public String getFrom() {
      return from;
      }

    /**

    • 返回主题
      */
      public String getSubject() {
      return subject;
      }

    /**

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

    /**

    • 获取主题内容
      */
      public String getContent() {
      return content;
      }

    /**

    • 设置主题内容
    • @param content
      */
      public void setContent(String content) {
      this.content = content;
      }

    /**

    • 获取收件人
    • @return
      */
      public String getToAddress() {
      return toAddress.toString();
      }

    /**

    • 获取抄送
    • @return
      */
      public String getCcAddress() {
      return ccAddress.toString();
      }

    /**

    • 获取暗送
    • @return
      */
      public String getBccAddress() {
      return bccAddress.toString();
      }

    /**

    • 添加收件人,可以是多个收件人
    • @param to
      */
      public void addToAddress(String to) {
      if(this.toAddress.length() > 0) {
      this.toAddress.append(",");
      }
      this.toAddress.append(to);
      }

    /**

    • 添加抄送人,可以是多个抄送人
    • @param cc
      */
      public void addCcAddress(String cc) {
      if(this.ccAddress.length() > 0) {
      this.ccAddress.append(",");
      }
      this.ccAddress.append(cc);
      }

    /**

    • 添加暗送人,可以是多个暗送人
    • @param bcc
      */
      public void addBccAddress(String bcc) {
      if(this.bccAddress.length() > 0) {
      this.bccAddress.append(",");
      }
      this.bccAddress.append(bcc);
      }

    /**

    • 添加附件,可以添加多个附件
    • @param attachBean
      */
      public void addAttach(AttachBean attachBean) {
      this.attachList.add(attachBean);
      }

    /**

    • 获取所有附件
    • @return
      */
      public List getAttachs() {
      return this.attachList;
      }
      }

/*

  • 附件类,只有文件,即附件才文件名
    */
    public class AttachBean {
    private String cid;
    private File file;
    private String fileName;

    public String getCid() {
    return cid;
    }

    public void setCid(String cid) {
    this.cid = cid;
    }

    public File getFile() {
    return file;
    }

    public void setFile(File file) {
    this.file = file;
    }

    public String getFileName() {
    return fileName;
    }

    public void setFileName(String fileName) {
    this.fileName = fileName;
    }

    public AttachBean() {

    }

    public AttachBean(File file, String fileName) {
    super();
    this.file = file;
    this.fileName = fileName;
    }
    }

/**

  • @author itcast 本类只有这么一个方法,用来发邮件!
    */
    public class MailUtils {
    public static Session createSession(String host, final String username, final String password) {
    Properties prop = new Properties();
    prop.setProperty("mail.host", host);// 指定主机
    prop.setProperty("mail.smtp.auth", "true");// 指定验证为true

    // 创建验证器
    Authenticator auth = new Authenticator() {
        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
    };
    
    // 获取session对象
    return Session.getInstance(prop, auth);
    

    }

    /**

    • 发送指定的邮件
    • @param mail
      */
      public static void send(Session session, final Mail mail) throws MessagingException,
      IOException {

      MimeMessage msg = new MimeMessage(session);// 创建邮件对象
      msg.setFrom(new InternetAddress(mail.getFrom()));// 设置发件人
      msg.addRecipients(RecipientType.TO, mail.getToAddress());// 设置收件人

      // 设置抄送
      String cc = mail.getCcAddress();
      if (!cc.isEmpty()) {
      msg.addRecipients(RecipientType.CC, cc);
      }

      // 设置暗送
      String bcc = mail.getBccAddress();
      if (!bcc.isEmpty()) {
      msg.addRecipients(RecipientType.BCC, bcc);
      }

      msg.setSubject(mail.getSubject());// 设置主题

      MimeMultipart parts = new MimeMultipart();// 创建部件集对象

      MimeBodyPart part = new MimeBodyPart();// 创建一个部件
      part.setContent(mail.getContent(), "text/html;charset=utf-8");// 设置邮件文本内容
      parts.addBodyPart(part);// 把部件添加到部件集中

      ///////////////////////////////////////////

      // 添加附件
      List attachBeanList = mail.getAttachs();// 获取所有附件
      if (attachBeanList != null) {
      for (AttachBean attach : attachBeanList) {
      MimeBodyPart attachPart = new MimeBodyPart();// 创建一个部件
      attachPart.attachFile(attach.getFile());// 设置附件文件
      attachPart.setFileName(MimeUtility.encodeText(attach
      .getFileName()));// 设置附件文件名
      String cid = attach.getCid();
      if(cid != null) {
      attachPart.setContentID(cid);
      }
      parts.addBodyPart(attachPart);
      }
      }

      msg.setContent(parts);// 给邮件设置内容
      Transport.send(msg);// 发邮件
      }
      }

email_template.properties类

subject=u6765u81EAITCASTu7684u6FC0u6D3Bu90AEu4EF6
content=u606Du559CuFF0Cu60A8u5DF2u6CE8u518Cu6210u529FuFF0Cu8BF7u8F6Cu53D133333@qq.com
host=smtp.qq.com
username=33333
password=33333

/*
* 3. 发邮件
/
/

* 把配置文件内容加载到prop中
/
Properties prop = new Properties();
try {
prop.load(this.getClass().getClassLoader().getResourceAsStream("email_template.properties"));
} catch (IOException e1) {
throw new RuntimeException(e1);
}
/

* 登录邮件服务器,得到session
*/
String host = prop.getProperty("host");//服务器主机名
String name = prop.getProperty("username");//登录名
String pass = prop.getProperty("password");//登录密码
Session session = MailUtils.createSession(host, name, pass);

    /*
     * 创建Mail对象
     */
    String from = prop.getProperty("from");
    String to = user.getEmail();
    String subject = prop.getProperty("subject");
    // MessageForm.format方法会把第一个参数中的{0},使用第二个参数来替换。
    // 例如MessageFormat.format("你好{0}, 你{1}!", "张三", "去死吧"); 返回“你好张三,你去死吧!”
    String content = MessageFormat.format(prop.getProperty("content"), user.getActivationCode());
    Mail mail = new Mail(from, to, subject, content);
    /*
     * 发送邮件
     */
    try {
        MailUtils.send(session, mail);
    } catch (MessagingException e) {
        throw new RuntimeException(e);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

错误:严重: Servlet.service() for servlet UserServlet threw exception

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at cn.itcast.servlet.BaseServlet.service(BaseServlet.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.itcast.filter.EncodingFilter.doFilter(EncodingFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at cn.itcast.servlet.BaseServlet.service(BaseServlet.java:44)
... 16 more
Caused by: java.lang.RuntimeException: javax.mail.AuthenticationFailedException: failed to connect
at cn.itcast.goods.user.service.UserService.regist(UserService.java:144)
at cn.itcast.goods.user.web.servlet.UserServlet.regist(UserServlet.java:133)
... 21 more
Caused by: javax.mail.AuthenticationFailedException: failed to connect
at javax.mail.Service.connect(Service.java:322)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:121)
at javax.mail.Transport.send0(Transport.java:190)
at javax.mail.Transport.send(Transport.java:120)
at cn.itcast.mail.MailUtils.send(MailUtils.java:91)
at cn.itcast.goods.user.service.UserService.regist(UserService.java:142)
... 22 more

解决方案

java发邮件的代码
java 发邮件 代码
java实现发邮件的代码

解决方案二:

http://blog.csdn.net/qh_java/article/details/50174387

解决方案三:

本人纯属菜鸟 各位大神麻烦看看 错误出现在哪里

时间: 2024-09-24 05:37:14

用java发邮件 出现如下错误 ,代码如下的相关文章

Java发邮件:Java Mail与Apache Mail

一.邮件简介 一封邮件由很多信息构成,主要的信息如下,其他的暂时不考虑,例如抄送等: 1.收件人:收件人的邮箱地址,例如xxx@xx.com 2.收件人姓名:大部分的邮件显示时都会显示,例如loadfate 779554589@qq.com 3.发件人:发件人的邮箱地址 4.发件人姓名: 5.主题:邮件的标题 6.内容及附件:邮件的主要内容 二.使用Java发邮件的通用步骤 一般的项目中没有单独的邮件服务器,一般情况下都是使用别人的服务器. 1.设置smtp服务器:不同的邮件服务器有不同的地址,

java发邮件(邮件中有HTML代码)的问题。。。

问题描述 今天java写了个小程序,就是个发邮件的,碰到个不会解决的问题,问题如下:我在后台的java代码发送邮件的时候,发送的是页面的HTML代码,那么在接收的邮件里就能看见我要的了(图片.超链接什么的),但是这个HTML代码是我自己拼的字符串,为现在想问的是,,,发邮件的界面怎么做成想163邮箱那样的,能在页面上画表格什么什么的,并且能在后台发送的时候取到页面上的代码呢?...我也不知道该怎么说了..上面乱乱的,不知道大家看明白么.....如果大家还有别的什么好办法,跟我说说,,谢谢.谢谢.

用JAVA发邮件问题,急!

问题描述 我用的是SSH框架开发的,在里面写了个发邮件公司,报以下错误,查了好久都没解决,请各位高手帮忙解决一下java.lang.reflect.InvocationTargetExceptionsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)sun.reflect.Dele

用.net发邮件,出现错误,在线等,高手过来帮忙!!!

问题描述 System.Net.Mail.SmtpClientclient=newSystem.Net.Mail.SmtpClient("smtp.163.com");client.UseDefaultCredentials=true;client.Credentials=newSystem.Net.NetworkCredential("t1estmail","******");client.DeliveryMethod=System.Net.M

java实现邮件验证实现程序代码

在之前总结了如何用java发送邮件,java实现数据库连接池和java的properties类的使用,对于实现这个需求我们就有了足够的技术储备,现在我们需要的就是如何把这些技术综合起来. 需求:我们的用户忘了密码,需要发送一个修改密码的链接到他的邮箱里去,用户点击链接便可 以修改密码. 总体思路: 当用户申请邮箱验证时,生成一个和用户名和当前时间绑定的md5值,存入验证数据库,同时将这个值拼接成验证连接发送到用户邮箱,当用户链接时和验证数据库的md5值比对,如果一致就给予用户修改密码的权限,同时

电子邮件-java发Email 异常 连接失败

问题描述 java发Email 异常 连接失败 代码大致如下 //发邮件 Properties pros = new Properties(); pros.load(this.getClass().getClassLoader().getResourceAsStream("email_template.properties")); String host = pros.getProperty("host");//获取主机 String uname = pros.ge

java利用QQ邮件服务器发邮件的代码 谁有 各位大神谢谢了

问题描述 java利用QQ邮件服务器发邮件的代码 谁有 各位大神谢谢了 ...................................................................... 解决方案 //发送邮件 try { Properties prop = new Properties(); //设置服务器地址 prop.put("mail.smtp.host", "smtp.qq.com"); //设置需要身份验证 prop.put(&

关于java mail 发邮件的问题总结(转)

今天项目中有需要用到java mail发送邮件的功能,在网上找到相关代码,代码如下: import java.io.IOException; import java.util.Properties; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.interne

java 用QQ邮箱发邮件问题

问题描述 java 用QQ邮箱发邮件问题 代码如下: private static final String account = "xxx@qq.com"; private static final String password = "xxx"; private static final String host = "smtp.qq.com"; // private static final String account = "xxx