我写了一个有关用JavaMail 发邮件的软件,一切配置正常,测试时显示发送失败,我输的邮箱绝对没问题,希望各位帮忙解答一下,代码如下
writerletter.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<html>
</head>
<title>
写邮件内容
</title>
</head>
<body>
<form name="form1" method="post" action="sendMail.jsp">
<table width="100" border="1" align="center" cellspacing="1">
<tr>
<td width="34%">收信人地址:</td>
<td width="107"><input type="text" name="to" id="to"></td>
</tr>
<tr>
<td width="45%">主题:</td>&nbsp;&nbsp;
<td width="107"><input type="text" name="title" id="title"></td>
</td>
</tr>
<tr>
<td height="107" colspan="2">
<textarea name="content" cols="50" rows="5" id="content"></textarea></td>
</tr>
<tr align="center">
<td border="2">
<input type="submit" name="submit" value="提交">
<input type="reset" name="res" value="重输"></td>
</tr>
</table>
</form>
</body>
</html>
此代码没问题
sendMail.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<!--引入要用到的类库-->
<%@ page import="java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*"%>
<%!
    public String codeToString(String str)
    {
      String s=str;
      try
      {
        byte tempB[]=s.getBytes("ISO-8859-1");
        s=new String(tempB);
        return s;
      }
      catch(Exception e)
      {
        return s;
      }
    }      
 %>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html,charset=gb2312">
 <title>发送邮件的结果</title>
 </head>
 <body>
 <%
  try
  {
      String to_mail=codeToString(request.getParameter("to"));
      String to_title=codeToString(request.getParameter("title"));
      String to_content=codeToString(request.getParameter("content"));
      Properties props=new Properties();
      props.put("mail.smpt.host","smpt.126.com");
      props.put("mail.smtp.auth","true");
      Session   s=Session.getInstance(props);
      s.setDebug(true);
      MimeMessage message=new MimeMessage(s);
      InternetAddress from=new InternetAddress("[email protected]");
      message.setFrom(from);
      InternetAddress to=new InternetAddress(to_mail);
      message.setRecipient(Message.RecipientType.TO,to);
      message.setSubject(to_title);
      message.setText(to_content);
      message.setSentDate(new Date());
      message.saveChanges();
      Transport transport=s.getTransport("smpt");
      transport.connect("smpt.126.com","xjllpp","7639797");
      transport.sendMessage(message,message.getAllRecipients());
      transport.close();
%>
<div align="center">
<p>发送成功!</p>
<%
   }
   catch(MessagingException e)
   {
      out.print("发送失败!");
   }
%>
</body>
</html>      
此代码显示:发送失败
谢谢各位啦!  
      
      
      

解决方案 »

  1.   

    你这样做是不测试不通的。
    因为你用126的服务器发它需要SSL验证的。
    除非你有自己的邮件服务器。
    那样测试是可以通过的。
    我简单的修改了下你的代码:
    <%@   page   contentType="text/html;charset=gb2312"%> 
    <!--引入要用到的类库--> 
    <%@   page   import="java.util.*,javax.mail.*"%> 
    <%@   page   import="javax.mail.internet.*"%> 
    <%! 
            public   String   codeToString(String   str) 
            { 
                String   s=str; 
                try 
                { 
                    byte   tempB[]=s.getBytes("ISO-8859-1"); 
                    s=new   String(tempB); 
                    return   s; 
                } 
                catch(Exception   e) 
                { 
                    return   s; 
                } 
            }             
      %> 
      <html> 
      <head> 
      <meta   http-equiv="Content-Type"   content="text/html,charset=gb2312"> 
      <title> 发送邮件的结果 </title> 
      </head> 
      <body> 
      <% 
      class MailAuthenticator extends Authenticator {
            private String strUser;
            private String strPwd;
            public MailAuthenticator(String user, String password) {
                    this.strUser = user;
                    this.strPwd = password;
            }
            }
        try 
        { 
                String   to_mail=codeToString(request.getParameter("to")); 
                String   to_title=codeToString(request.getParameter("title")); 
                String   to_content=codeToString(request.getParameter("content")); 
                String user = "[email protected]"; //内网服务器注册好的mail地址
                  String password = "111111";  //密码
                  String host = "192.168.150.25" ;//本公司的内网邮件服务器
                  Properties   props=new   Properties(); 
                props.put("mail.smpt.host",host); 
                props.put("mail.smtp.auth","true"); 
                MailAuthenticator myauth = new MailAuthenticator(user, password);
        Session mailSession = Session.getInstance(props, myauth);
        mailSession.setDebug(true);
        Message message = new MimeMessage(mailSession);
        message.setFrom(new InternetAddress(user));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to_mail));
        message.setSubject(to_title);
        message.setText(to_content);
        message.saveChanges();
        Transport transport = mailSession.getTransport("smtp");
        transport.connect(host, user, password);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    %> 
    <div   align="center"> 
    <p> 发送成功! </p> 
    <% 
          } 
          catch(MessagingException   e) 
          { 
                out.print("发送失败!"); 
          } 
    %> 
    </body> 
    </html>