测试qq/163/sina等邮箱之间的互发,main方式下运行ok
问题:
放到ssh项目里面运行,qq/163/sina 选择其中一个作为发件者像其它邮箱发送ok。
再更换smtp后发送就会出现异常:
com.sun.mail.smtp.SMTPSendFailedException: 550 Invalid User bb780aed-091e-48f0-8d05-624c9dce8e3b at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)
at com.hzjd.rms.grant.Mail.sendMail(Mail.java:93)
at com.hzjd.rms.grant.GrantAction.updateGrant(GrantAction.java:306)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.hzjd.rms.filter.LoginFilter.doFilter(LoginFilter.java:58)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:619)有路过的帮忙看看,谢谢,下面贴源码

解决方案 »

  1.   

    实在找不出问题出在哪里了public class Mail {
    public static void main(String[] args) {
    new Mail().sendMail("smtp.qq.com", "25", true, "[email protected]",
    "****", "*****@163.com", "主题:", "这就是正文", true);
    } /**
     * 发送邮件
     * 
     * @param mailServerHost
     *            邮件服务器地址
     * @param mailServerPort
     *            邮件服务器端口
     * @param validate
     *            是否要求身份验证
     * @param fromAddress
     *            发送邮件地址
     * @param toAddress
     *            接收邮件地址
     * @param subject
     *            邮件主题
     * @param content
     *            邮件内容
     * @param isHTML
     *            是否HTML形式发送
     * @param isSSL
     *            邮件服务器是否需要安全连接(SSL)
     * @return true:发送成功;false:发送失败
     */
    public boolean sendMail(String mailServerHost, String mailServerPort,
    boolean validate, String fromAddress, String userPass,
    String toAddress, String subject, String content, boolean isHTML,
    boolean isSSL) {
    // 获取系统环境
    Properties p = new Properties();
    // 进行邮件服务器用户认证
    p.put("mail.smtp.host", mailServerHost);
    p.put("mail.smtp.port", mailServerPort);
    p.put("mail.smtp.auth", validate ? "true" : "false");
    if (isSSL) {
    p.put("mail.smtp.starttls.enable", "true");
    p.put("mail.smtp.socketFactory.fallback", "false");
    p.put("mail.smtp.socketFactory.port", mailServerPort);
    }
    // 邮件用户验证
    Authenticator auth = null;
    if (validate) {
    auth = new MyAuthenticator(fromAddress, userPass);
    }
    try {
    // 设置session,和邮件服务器进行通讯。
    Session session = Session.getDefaultInstance(p, auth);
    Message message = new MimeMessage(session);
    Address from = new InternetAddress(fromAddress);
    Address to = new InternetAddress(toAddress);
    message.setFrom(from);
    message.setRecipient(Message.RecipientType.TO, to);
    message.setSubject(subject);
    message.setSentDate(new Date());
    Multipart m = new MimeMultipart();
    BodyPart bp = new MimeBodyPart();
    bp.setText(content);
    m.addBodyPart(bp);
    message.setContent(m);
    Transport.send(message);
    return true;
    } catch (Exception e) {
    e.printStackTrace();
    return false;
    }
    }
    }
      

  2.   

    public class Mail {
    public static void main(String[] args) {
    new Mail().sendMail("smtp.qq.com", "25", true, "[email protected]",
    "admin_dcf1", "[email protected]", "主题:", "这就是正文", true);
    } /**
     * 发送邮件
     * 
     * @param mailServerHost
     *            邮件服务器地址
     * @param mailServerPort
     *            邮件服务器端口
     * @param validate
     *            是否要求身份验证
     * @param fromAddress
     *            发送邮件地址
     * @param toAddress
     *            接收邮件地址
     * @param subject
     *            邮件主题
     * @param content
     *            邮件内容
     * @param isSSL
     *            邮件服务器是否需要安全连接(SSL)
     * @return true:发送成功;false:发送失败
     */
    public boolean sendMail(String mailServerHost, String mailServerPort,
    boolean validate, String fromAddress, String userPass,
    String toAddress, String subject, String content, boolean  isSSL) {
    // 获取系统环境
    Properties p = new Properties();
    // 进行邮件服务器用户认证
    p.put("mail.smtp.host", mailServerHost);
    p.put("mail.smtp.port", mailServerPort);
    p.put("mail.smtp.auth", validate ? "true" : "false");
    if (isSSL) {
    p.put("mail.smtp.starttls.enable", "true");
    p.put("mail.smtp.socketFactory.fallback", "false");
    p.put("mail.smtp.socketFactory.port", mailServerPort);
    }
    // 邮件用户验证
    Authenticator auth = null;
    if (validate) {
    auth = new MyAuthenticator(fromAddress, userPass);
    }
    try {
    // 设置session,和邮件服务器进行通讯。
    Session session = Session.getDefaultInstance(p, auth);
    Message message = new MimeMessage(session);
    Address from = new InternetAddress(fromAddress);
    Address to = new InternetAddress(toAddress);
    message.setFrom(from);
    message.setRecipient(Message.RecipientType.TO, to);
    message.setSubject(subject);
    message.setSentDate(new Date());
    Multipart m = new MimeMultipart();
    BodyPart bp = new MimeBodyPart();
    bp.setText(content);
    m.addBodyPart(bp);
    message.setContent(m);
    Transport.send(message);
    return true;
    } catch (Exception e) {
    e.printStackTrace();
    return false;
    }
    }
    }
      

  3.   

    Transport.send(message); 
    上面的写法是不正确的.// 获得Transport实例对象 
            Transport transport = session.getTransport(); 
            // 打开连接 
            transport.connect("xxx", "xfds"); 
            // 将message对象传递给transport对象,将邮件发送出去 
            transport.sendMessage(message, message.getAllRecipients()); 
            // 关闭连接 
            transport.close(); 
      

  4.   

    接收端的email地址错误吧。[email protected]确定有没有这个email地址?
      

  5.   

    问题解决了。
    transport.connect("smtp","xxx", "xfds");  
    结贴  谢谢大家