最近在做个东西 ,,需要与邮件绑定 ,以前也一直没用过javaMail做实验 今天做了下 都一天都没做起来 网上例子很多但都不实用啊 希望大家帮忙 我的样例如下:
<html>
<head>
<title>JavaMail.html</title>
<meta http-equiv="Content-Type" content="text/html;charset=GB2312">
</head>
<body><h2>利用JavaMail来发送电子邮件</h2><form name="form" method="POST" action="JavaMail.jsp">
<p>寄信人:<input type="text" name="From" size="35" maxlength="35"></p>
<p>收信人:<input type="text" name="To" size="35" maxlength="35"></p>
<p>主题: <input type="text" name="Subject" size="35" maxlength="35"></p>
<p>内容:<textarea name="Message" cols="30" rows="5"></textarea></p>
<input type="submit" value="发送">
<input type="reset" value="清除">
</form>
</body>
</html>package com.yang;import javax.mail.*;
import java.util.*;public class PopupAuthenticator extends Authenticator { String username, password; public PopupAuthenticator(String username, String password) {
this.username = username;
this.password = password;
} public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password);
}
}
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%@ page import="java.util.*,java.io.*" %>
<%@ page contentType="text/html;charset=GB2312" %><html>
<head>
<title>JavaMail.jsp</title>
</head>
<body><h2>利用JavaMail来传送电子邮件 </h2>
<% InternetAddress[] address = null; request.setCharacterEncoding("GB2312"); Authenticator auth = (Authenticator)
new com.yang.PopupAuthenticator("[email protected]","swtzx19870719"); String mailserver = "smtp.qq.com";
String From = request.getParameter("From");
String to = request.getParameter("To");
String Subject = request.getParameter("Subject");
String messageText = request.getParameter("Message"); boolean sessionDebug = false;
try { // 设定所要用的Mail 服务器和所使用的传输协议
java.util.Properties props = System.getProperties();
props.put("mail.host",mailserver);
props.put("mail.transport.protocol","smtp");
// 产生新的Session 服务
javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(props,null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
// 设定传送邮件的发信人
msg.setFrom(new InternetAddress(From));
// 设定传送邮件至收信人的信箱
address = InternetAddress.parse(to,false);
msg.setRecipients(Message.RecipientType.TO, address);
// 设定信中的主题
msg.setSubject(Subject);
// 设定送信的时间
msg.setSentDate(new Date());
// 设定传送信的MIME Type
msg.setText(messageText); // 送信
Transport.send(msg); out.println("邮件已顺利传送");
}
catch (MessagingException mex) { mex.printStackTrace();
}
%></body>
</html>我现在就假设 用QQ 服务器发送 用户 [email protected] 向 [email protected] 进行发送 ,,但怎么做都是错 我实在不会搞了 忘大家指点 其中邮件服务器要怎么设 我的代码写的是不是也有问题 要怎么改 大家帮忙 我系统急用~~
以下是打印堆栈错误信息
com.sun.mail.smtp.SMTPSendFailedException: 503 Error: need EHLO and AUTH first ! 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 org.apache.jsp.JavaMail_jsp._jspService(JavaMail_jsp.java:116)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
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:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
<html>
<head>
<title>JavaMail.html</title>
<meta http-equiv="Content-Type" content="text/html;charset=GB2312">
</head>
<body><h2>利用JavaMail来发送电子邮件</h2><form name="form" method="POST" action="JavaMail.jsp">
<p>寄信人:<input type="text" name="From" size="35" maxlength="35"></p>
<p>收信人:<input type="text" name="To" size="35" maxlength="35"></p>
<p>主题: <input type="text" name="Subject" size="35" maxlength="35"></p>
<p>内容:<textarea name="Message" cols="30" rows="5"></textarea></p>
<input type="submit" value="发送">
<input type="reset" value="清除">
</form>
</body>
</html>package com.yang;import javax.mail.*;
import java.util.*;public class PopupAuthenticator extends Authenticator { String username, password; public PopupAuthenticator(String username, String password) {
this.username = username;
this.password = password;
} public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password);
}
}
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%@ page import="java.util.*,java.io.*" %>
<%@ page contentType="text/html;charset=GB2312" %><html>
<head>
<title>JavaMail.jsp</title>
</head>
<body><h2>利用JavaMail来传送电子邮件 </h2>
<% InternetAddress[] address = null; request.setCharacterEncoding("GB2312"); Authenticator auth = (Authenticator)
new com.yang.PopupAuthenticator("[email protected]","swtzx19870719"); String mailserver = "smtp.qq.com";
String From = request.getParameter("From");
String to = request.getParameter("To");
String Subject = request.getParameter("Subject");
String messageText = request.getParameter("Message"); boolean sessionDebug = false;
try { // 设定所要用的Mail 服务器和所使用的传输协议
java.util.Properties props = System.getProperties();
props.put("mail.host",mailserver);
props.put("mail.transport.protocol","smtp");
// 产生新的Session 服务
javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(props,null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
// 设定传送邮件的发信人
msg.setFrom(new InternetAddress(From));
// 设定传送邮件至收信人的信箱
address = InternetAddress.parse(to,false);
msg.setRecipients(Message.RecipientType.TO, address);
// 设定信中的主题
msg.setSubject(Subject);
// 设定送信的时间
msg.setSentDate(new Date());
// 设定传送信的MIME Type
msg.setText(messageText); // 送信
Transport.send(msg); out.println("邮件已顺利传送");
}
catch (MessagingException mex) { mex.printStackTrace();
}
%></body>
</html>我现在就假设 用QQ 服务器发送 用户 [email protected] 向 [email protected] 进行发送 ,,但怎么做都是错 我实在不会搞了 忘大家指点 其中邮件服务器要怎么设 我的代码写的是不是也有问题 要怎么改 大家帮忙 我系统急用~~
以下是打印堆栈错误信息
com.sun.mail.smtp.SMTPSendFailedException: 503 Error: need EHLO and AUTH first ! 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 org.apache.jsp.JavaMail_jsp._jspService(JavaMail_jsp.java:116)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
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:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
楼主【swt570481062】截止到2008-08-04 00:34:46的历史汇总数据(不包括此帖):
发帖的总数量:7 发帖的总分数:420 每贴平均分数:60
回帖的总数量:16 得分贴总数量:5 回帖的得分率:31%
结贴的总数量:4 结贴的总分数:330
无满意结贴数:0 无满意结贴分:0
未结的帖子数:3 未结的总分数:90
结贴的百分比:57.14 % 结分的百分比:78.57 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
楼主加油
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=swt570481062
javamail:http://java.sun.com/products/javamail/downloads/index.htmlJAF:http://java.sun.com/javase/technologies/desktop/javabeans/jaf/downloads/index.html下载后把.zip解压,然后把mail.jar和activation.jar复制到项目下的web-info/lib下值得一说的是java ee 5和这个mail.jar和activation.jar有冲突这个类在j2ee1.4下运行完全没有问题,但是如果在java ee 5下运行会报类找不到的错误,解决办法就是把myeclipse下的java ee 5的mail.jar和activation.jar干掉package javamail;import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class SendMail { 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 SendMail() {// setSmtpHost(getConfig.mailHost);// 如果没有指定邮件服务器,就从getConfig类中获取
setSmtpHost("smtp.126.com");// 如果没有指定邮件服务器,就从getConfig类中获取 createMimeMessage(); } public SendMail(String smtp) { setSmtpHost(smtp); createMimeMessage(); } /**
*
* @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(
"<meta http-equiv=Content-Type content=text/html; charset=gb2312>"
+ 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) {
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; } } /**
*
* Just do it as this
*
*/ public static void main(String[] args) { String mailbody = "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"
+ "<div align=center><a href=http://www.csdn.net> csdn </a></div>"; SendMail themail = new SendMail("smtp.126.com");//smtp服务器 themail.setNeedAuth(true); if (themail.setSubject("Title") == false)//标题
return; if (themail.setBody(mailbody) == false)//正文
return; if (themail.setTo("[email protected]") == false)//接收方
return; if (themail.setFrom("[email protected]") == false)//发送方
return; if (themail.addFileAffix("g:\\test.txt") == false)//附件
return; themail.setNamePass("mailUsername", "mailPassword");//用户名密码 if (themail.sendout() == false)
return; }}http://heisetoufa.ggblog.com/341469.html
你的问题好像是没有smtp的权限
下面是我以前写的javamail的例子
你可以参考一下
http://blog.csdn.net/yirentianran/archive/2008/04/24/2323652.aspx
你的 服务器设的是 smtp.163.com 是不是我的 发送和接受人的邮件 都要是163的???