小弟刚学用JSP来写程序.. 今天用JAVAMAIL来尝试写一个发MAIL的小程序...
但是写好后却不发不成功... 上网看了很多很多..都没有一个真正能解决的答案.. 看看那位大侠可以帮帮我... 我的JAVA代码是这样的.. package web;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
public class SendTextMail { String SMTPHost,user,password,from,to,subject,content;
public SendTextMail() {
// TODO Auto-generated constructor stub
}
public String getContent()
{
return content;
}
public void setContent(String content)
{
try{
content = new String(content.getBytes("ISO8859-1"),"utf-8");
}catch(Exception ex){
ex.printStackTrace();
}
this.content = content;
}
public String getFrom(){
return from;
}
public void setFrom(String from){
this.from = from;
}
public String getTo(){
return to;
}
public void setTo(String to){
this.to = to;
}
public String getUser()
{
return user;
}
public void setUser(String user){
this.user = user;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}
public String getSMTPHost(){
return SMTPHost;
}
public void setSMTPHost(String host){
this.SMTPHost = host;
}
public String getSubject(){
return subject;
}
public void setSubjet(String subject){
try{
subject = new String(subject.getBytes("iso8859-1"),"utf-8");
}catch(Exception ex){
ex.printStackTrace();
}
}
static class SmtpAuth extends Authenticator{
String user,password;
void setAccount(String user,String password){
this.user = user;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(user,password);
}
}
public boolean send()
{
Properties props = new Properties();
props.put("mail.smtp.host",SMTPHost);
props.put("mail.smtp.auth","true");
try{
SmtpAuth auth = new SmtpAuth();
auth.setAccount(user, password);
Session mailSession = Session.getInstance(props,auth);
mailSession.setDebug(true);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
msg.setSubject(subject);
msg.setText(content);
msg.setSentDate(new Date());
msg.setHeader("X-Priority", "1");
msg.saveChanges();
Transport trans = mailSession.getTransport("smtp");
trans.connect(SMTPHost,user,password);
trans.sendMessage(msg,msg.getAllRecipients());
trans.close();
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}}
错误信息... DEBUG: setDebug: JavaMail version 1.4.1
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.163.com", port 25, isSSL false
DEBUG SMTP: EOF: [EOF]
DEBUG SMTP: could not connect to host "smtp.163.com", port: 25, response: -1javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25, response: -1
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1379)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
at javax.mail.Service.connect(Service.java:288)
at javax.mail.Service.connect(Service.java:169)
at web.SendTextMail.send(SendTextMail.java:105)
at org.apache.jsp.sendMail_jsp._jspService(sendMail_jsp.java:65)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
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 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)
我看不懂..好像是连接不了SMTP.163.COM吧?? 怎么样才能解决呢?? 网上有人说是因为防火墙的问题..我试过关了也不行.. 有人说是身份验证的问题.. 我也检查了我的代码一次.. 好像也符合要求...
求大侠们求求小弟... :)
但是写好后却不发不成功... 上网看了很多很多..都没有一个真正能解决的答案.. 看看那位大侠可以帮帮我... 我的JAVA代码是这样的.. package web;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.*;
public class SendTextMail { String SMTPHost,user,password,from,to,subject,content;
public SendTextMail() {
// TODO Auto-generated constructor stub
}
public String getContent()
{
return content;
}
public void setContent(String content)
{
try{
content = new String(content.getBytes("ISO8859-1"),"utf-8");
}catch(Exception ex){
ex.printStackTrace();
}
this.content = content;
}
public String getFrom(){
return from;
}
public void setFrom(String from){
this.from = from;
}
public String getTo(){
return to;
}
public void setTo(String to){
this.to = to;
}
public String getUser()
{
return user;
}
public void setUser(String user){
this.user = user;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}
public String getSMTPHost(){
return SMTPHost;
}
public void setSMTPHost(String host){
this.SMTPHost = host;
}
public String getSubject(){
return subject;
}
public void setSubjet(String subject){
try{
subject = new String(subject.getBytes("iso8859-1"),"utf-8");
}catch(Exception ex){
ex.printStackTrace();
}
}
static class SmtpAuth extends Authenticator{
String user,password;
void setAccount(String user,String password){
this.user = user;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(user,password);
}
}
public boolean send()
{
Properties props = new Properties();
props.put("mail.smtp.host",SMTPHost);
props.put("mail.smtp.auth","true");
try{
SmtpAuth auth = new SmtpAuth();
auth.setAccount(user, password);
Session mailSession = Session.getInstance(props,auth);
mailSession.setDebug(true);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
msg.setSubject(subject);
msg.setText(content);
msg.setSentDate(new Date());
msg.setHeader("X-Priority", "1");
msg.saveChanges();
Transport trans = mailSession.getTransport("smtp");
trans.connect(SMTPHost,user,password);
trans.sendMessage(msg,msg.getAllRecipients());
trans.close();
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}}
错误信息... DEBUG: setDebug: JavaMail version 1.4.1
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.163.com", port 25, isSSL false
DEBUG SMTP: EOF: [EOF]
DEBUG SMTP: could not connect to host "smtp.163.com", port: 25, response: -1javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25, response: -1
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1379)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
at javax.mail.Service.connect(Service.java:288)
at javax.mail.Service.connect(Service.java:169)
at web.SendTextMail.send(SendTextMail.java:105)
at org.apache.jsp.sendMail_jsp._jspService(sendMail_jsp.java:65)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
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 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)
我看不懂..好像是连接不了SMTP.163.COM吧?? 怎么样才能解决呢?? 网上有人说是因为防火墙的问题..我试过关了也不行.. 有人说是身份验证的问题.. 我也检查了我的代码一次.. 好像也符合要求...
求大侠们求求小弟... :)
解决方案 »
- MyEclipse8.5在struts.xml里右键为什么没有New Action选项?
- 你心目中Web前端做的好的公司有哪些?你想去哪些公司做Web前端?
- 用java调用sh程序启动tomcat 但失败了,有谁做过吗?
- 河南郑州搏弈投资顾问公司招聘网站设计人员,兼职也可
- 用jbulder2005开发strut,web.xml总是读取旧的内容,郁闷。。。
- 初學JSP很弱的問題,進者有分!!!!!!!!
- 各位大虾 遇到个 jboss 连sybase ASE 12 的问题.
- 折腾了一整天没在JBuilder里连上SQLServer,大家帮帮忙吧。
- Hashtable 的使用问题!
- tomcat+apache集群,tomcat启动报错error setting options; No faulty members identified
- js 牛人进,解决全部分都给你
- 批处理文件 急!!!
ping smtp.163.com
telnet smtp.163.com 25看看通不通
我怎样看port 25 有没有被占用呢??
如果被占用了.. 我应该怎样在代码中改端口呢??
我的邮箱支持SMTP阿.. 我很早之前就注册了.
public void connect(String host, int port, String user, String password)
调用这个方法
javamail的实现是
public void connect(String host, String user, String password)
throws MessagingException {
connect(host, -1, user, password);
}
你换一个别的邮箱看看吧。163的我就没成功过。