错误提示:
javax.mail.SendFailedException: Sending failed;
  nested exception is:
class javax.mail.MessagingException: 553 authentication is required,smtp4,DtGowLDLvP3WHSlI_Zk1Bg==.28140S2 1210654166 at javax.mail.Transport.send0(Transport.java:218)
源文件如下:
<%@ page contentType="text/html;charset=utf-8" language="java" import="java.sql.*,java.io.*,java.util.*"%>
<%@ include file="include.inc"%>
<%@ page import="com.bwrn.page.Show"%>
<%@ page import="javax.mail.internet.*"%>
<%@ page import="javax.activation.*"%>
<%@ page import="javax.mail.*"%>
<%
request.setCharacterEncoding("utf-8");
Show show=new Show();
boolean blnError=true;//�����쳣��Ϣ
boolean blnSend=false;//��������Ϣ
String strTo="[email protected]";

InternetAddress[] address=null;
String strMailserver="smtp.163.com";
String [] arrstrFrom=request.getParameterValues("addrres");
String strSubject=request.getParameter("title");
String strMessage=request.getParameter("content");
String file=request.getParameter("file");
if(arrstrFrom.length>0)
{
          int intI=0;
          for(intI=0;intI<arrstrFrom.length;intI++)
          {
            if(!arrstrFrom[intI].equals(""))
          {
          try
          {
            //设定所要用的Mail服务器和所使用的传
            java.util.Properties props=System.getProperties();
//props.put("mail.smtp.host", "smtp.jspinsider.com"); 
            props.put("mail.host",strMailserver);     //设置邮件服务器地址ַ
            props.put("mail.transport.protocol","smtp");  //设置通信协            //Session
            javax.mail.Session mailSession=javax.mail.Session.getDefaultInstance(props,null);            mailSession.setDebug(false);            Message msg=new MimeMessage(mailSession);
   //设定传送邮件的发
            msg.setFrom(new InternetAddress(strTo));            address=InternetAddress.parse(arrstrFrom[intI],false);
            msg.setRecipients(Message.RecipientType.TO,address);
            
            msg.setSubject(strSubject);
          
            msg.setSentDate(new java.util.Date());
           
            msg.setText(strMessage);         
            msg.setFileName("file");
   
            Transport.send(msg);            out.print("发送成功"+arrstrFrom[intI]+"<br>");
            blnSend=true;
          }
          catch(Exception e)
          {
            if(blnError)
            out.print(show.errorBox(e.getMessage(),"发送失败"));
            blnError=false;
            e.printStackTrace();
          }
          }
        }
     }
else
{
          out.print(show.errorBox("请完善信息","错误提示"));
} if(blnSend)
{
          out.print(show.errorBox("发送成功","发送信息"));
}
else if(blnError&!blnSend)
{
          out.print(show.errorBox("发送失败","发送信息"));
}
%>请高手、专家门指点谢谢 搞的我头都大了

解决方案 »

  1.   

    //props.put("mail.smtp.host", "smtp.jspinsider.com");  
      props.put("mail.host",strMailserver);==============
    问题好像出在这一句,原因是没有设置成功SMTP主机,你试试将其修改为
    props.put("mail.smtp.host", strMailserver);  
      

  2.   

    /* 
     在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。
     问题零散,而历史的回复早已经淹没在问题的海洋之中。  本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。
     看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。  此篇仅介绍用javamail实现发送邮件功能,其中涉及smtp认证,邮件附件发送,及HTML内容邮件等。 
     其它有关多邮箱的实现,接收POP3邮件及IMAP等内容,将在后续文章中介绍。  如下程序需要:javamail,JAF包,j2ee.jar包含了上述两个包,建议大家安装J2SDKEE或直接拷贝j2ee.jar,
     将其添加到jbuilder的library中,或系统ClassPath中 
     */
    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;public class ToMail { private MimeMessage mimeMsg; // MIME邮件对象 private Session session; // 邮件会话对象 private Properties props; // 系统属性 // private boolean needAuth = false; // smtp是否需要认证 private String username = ""; // smtp认证用户名和密码 private String password = ""; private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象 /**
     * 
     */
    // public TOMail() {
    // setSmtpHost(getConfig.mailHost);//如果没有指定邮件服务器,就从getConfig类中获取
    // createMimeMessage();
    // }
    // public ToMail(String smtp){
    // setSmtpHost(smtp);
    // createMimeMessage();
    // }
    public ToMail() { } public void setMail(String toMail, String title, String message) {
    setSmtpHost("smtp.sina.com");// 设置邮件服务器
    createMimeMessage(); // 获取邮件会话对象
    setNeedAuth(true);// 设置是否进行smtp验证
    if (setSubject(title) == false)
    System.out.println("邮件标题设置失败!");// 设置邮件标题
    if (setBody(message) == false)
    System.out.println("邮件内容设置失败!");// 设置邮件内容
    if (setTo(toMail) == false)
    System.out.println("接收邮件设置失败!");// 设置接收邮件的地址
    if (setFrom("[email protected]") == false)
    System.out.println("发送邮件设置失败!"); // 设置发送邮件的地址
    // if(addFileAffix("c:\\boot.ini") == false) return false;//设置附件
    setNamePass("[email protected]", "密码");// 设置发送出邮件的用户名称和密码
    // if(sendout() == false) return;//发送出邮件
    // if(sendout() == false) return false;//发送出邮件
    } public boolean go() {
    if (sendout() == false)
    return false;// 发送出邮件
    return true;
    } /**
     * @param hostName
     *            String
     */
    public void setSmtpHost(String hostName) {
    // System.out.println("设置系统属性:mail.smtp.host = "+hostName);
    if (props == null)
    props = System.getProperties(); // 获得系统属性对象 props.put("mail.smtp.host", hostName); // 设置SMTP主机
    } /**
     * @return boolean
     */
    public boolean createMimeMessage() {
    try {
    // System.out.println("准备获取邮件会话对象!");
    session = Session.getDefaultInstance(props, null); // 获得邮件会话对象
    } catch (Exception e) {
    System.err.println("获取邮件会话对象时发生错误!" + e);
    return false;
    } // System.out.println("准备创建MIME邮件对象!");
    try {
    mimeMsg = new MimeMessage(session); // 创建MIME邮件对象
    mp = new MimeMultipart(); return true;
    } catch (Exception e) {
    System.err.println("创建MIME邮件对象失败!" + e);
    return false;
    }
    } /**
     * @param need
     *            boolean
     */
    public void setNeedAuth(boolean need) {
    // System.out.println("设置smtp身份认证:mail.smtp.auth = "+need);
    if (props == null)
    props = System.getProperties();
    if (need) {
    props.put("mail.smtp.auth", "true");
    } else {
    props.put("mail.smtp.auth", "false");
    }
    } /**
     * @param name
     *            String
     * @param pass
     *            String
     */
    public void setNamePass(String name, String pass) {
    username = name;
    password = pass;
    } /**
     * @param mailSubject
     *            String
     * @return boolean
     */
    public boolean setSubject(String mailSubject) {
    // System.out.println("设置邮件主题!");
    try {
    mimeMsg.setSubject(mailSubject);
    return true;
    } catch (Exception e) {
    System.err.println("设置邮件主题发生错误!");
    return false;
    }
    } /**
     * @param mailBody
     *            String
     */
    public boolean setBody(String mailBody) {
    try {
    BodyPart bp = new MimeBodyPart();
    bp.setContent("" + mailBody, "text/html;charset=GB2312");
    mp.addBodyPart(bp);
    return true;
    } catch (Exception e) {
    System.err.println("设置邮件正文时发生错误!" + e);
    return false;
    }
    } /**
     * @param name
     *            String
     * @param pass
     *            String
     */
    public boolean addFileAffix(String filename) { // System.out.println("增加邮件附件:"+filename);
    try {
    BodyPart bp = new MimeBodyPart();
    FileDataSource fileds = new FileDataSource(filename);
    bp.setDataHandler(new DataHandler(fileds));
    bp.setFileName(fileds.getName());
    mp.addBodyPart(bp);

    return true;
    } catch (Exception e) {
    System.err.println("增加邮件附件:" + filename + " 发生错误!" + e);
    return false;
    }
    } /**
     * @param name
     *            String
     * @param pass
     *            String
     */
    public boolean setFrom(String from) {
    // System.out.println("设置发信人!");
    try {
    mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人
    return true;
    } catch (Exception e) {
    System.out.println("设置发信人: " + from + " 发生错误!");
    return false;
    }
    } /**
     * @param name
     *            String
     * @param pass
     *            String
     */
    public boolean setTo(String to) {
    if (to == null)
    return false;
    try {
    mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
    .parse(to));
    return true;
    } catch (Exception e) {
    return false;
    } } /**
     * @param name
     *            String
     * @param pass
     *            String
     */
    public boolean setCopyTo(String copyto) {
    if (copyto == null)
    return false;
    try {
    mimeMsg.setRecipients(Message.RecipientType.CC,
    (Address[]) InternetAddress.parse(copyto));
    return true;
    } catch (Exception e) {
    return false;
    }
    } /**
     * @param name
     *            String
     * @param pass
     *            String
     */
    public boolean sendout() {
    try {
    mimeMsg.setContent(mp);
    mimeMsg.saveChanges();
    // System.out.println("正在发送邮件...."); Session mailSession = Session.getInstance(props, null);
    Transport transport = mailSession.getTransport("smtp");
    transport.connect((String) props.get("mail.smtp.host"), username,
    password);
    transport.sendMessage(mimeMsg, mimeMsg
    .getRecipients(Message.RecipientType.TO));
    // transport.send(mimeMsg); // System.out.println("发送邮件成功!");
    transport.close(); return true;
    } catch (Exception e) {
    System.err.println("用户注册邮件验证发送失败!" + e);
    return false;
    }
    }
    }
      

  3.   

    用你说的改了以后 错误提示如下:
    Sending failed; nested exception is: class javax.mail.MessagingException: 553 authentication is required,smtp1,C9GowLBrxCIxhClIN8F4CA==.34357S2 1210680369 我的这个页面现在还在 MyEclipse里面开发中。全部在MyEclispe平台上运行。 我想把上面的代码修改一下而不是重新写。因为我的这个代码是别人用过的 可以使用,我觉的是配置的问题 单没找到在哪里? 谢谢
      

  4.   

    我自己本机要不要配置什么东西。我是新手 。希望高手们帮忙。谢谢 JSP中发送邮件,现在的错误好像是要身份验证。怎么添加代码谢谢!