这是控制台错误:DEBUG: setDebug: JavaMail version 1.4ea
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL false
220 mx.google.com ESMTP c24sm9267873wam.7
DEBUG SMTP: connected to host "smtp.gmail.com", port: 465EHLO PC-200909131652
250-mx.google.com at your service, [123.118.97.210]
250-SIZE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH
250 ENHANCEDSTATUSCODES
DEBUG SMTP: Found extension "SIZE", arg "35651584"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
cGFuZGFtZXN1cHBvcnRAZ21haWwuY29t
334 UGFzc3dvcmQ6
YW55aXRvbmd5dWFu
535-5.7.1 Username and Password not accepted. Learn more at
535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 c24sm9267873wam.7
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:306)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
at com.pandame.mail.EmailSender.send(EmailSender.java:130)
at com.pandame.mail.EmailSender.send(EmailSender.java:60)
at com.pandame.mail.EmailSender.send(EmailSender.java:43)
at com.pandame.web.action.user.FindPasswordAction.getpassword(FindPasswordAction.java:46)
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:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
at com.pandame.web.action.privilege.PermissionProcessor.processActionPerform(PermissionProcessor.java:32)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
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:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:112)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.pandame.web.filter.SetCodeFilter.doFilter(SetCodeFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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)这是Java类public class EmailSender {
private static final String charset = "utf-8";
private static final String defaultMimetype = "text/plain"; public static void main(String[] args) throws Exception {
EmailSender.send(new String[] { "[email protected]" }, "客服邮件",
"<b>熊猫迷</b>", null, "text/html");
} /**
* 发送邮件
*
* @param receiver
* 收件人
* @param subject
* 标题
* @param mailContent
* 邮件内容
* @param mimetype
* 内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
*/
public static void send(String receiver, String subject,
String mailContent, String mimetype) {
send(new String[] { receiver }, subject, mailContent, mimetype);
} /**
* 发送邮件
*
* @param receivers
* 收件人
* @param subject
* 标题
* @param mailContent
* 邮件内容
* @param mimetype
* 内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
*/
public static void send(String[] receivers, String subject,
String mailContent, String mimetype) {
send(receivers, subject, mailContent, null, mimetype);
} /**
* 发送邮件
*
* @param receivers
* 收件人
* @param subject
* 标题
* @param mailContent
* 邮件内容
* @param attachements
* 附件
* @param mimetype
* 内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
*/
public static void send(String[] receivers, String subject,
String mailContent, File[] attachements, String mimetype) {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");// Smtp服务器地址
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");// 需要校验
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication([email protected],
"个人密码此处未写!!");// 登录用户名/密码
}
});
session.setDebug(true);
try {
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setFrom(new InternetAddress("[email protected]"));// 发件人邮件 InternetAddress[] toAddress = new InternetAddress[receivers.length];
for (int i = 0; i < receivers.length; i++) {
toAddress[i] = new InternetAddress(receivers[i]);
}
mimeMessage.setRecipients(Message.RecipientType.TO, toAddress);// 收件人邮件
mimeMessage.setSubject(subject, charset); Multipart multipart = new MimeMultipart();
// 正文
MimeBodyPart body = new MimeBodyPart();
// body.setText(message, charset);不支持html
body.setContent(mailContent, (mimetype != null
&& !"".equals(mimetype) ? mimetype : defaultMimetype)
+ ";charset=" + charset);
multipart.addBodyPart(body);// 发件内容
// 附件
if (attachements != null) {
for (File attachement : attachements) {
MimeBodyPart attache = new MimeBodyPart();
// ByteArrayDataSource bads = new
// ByteArrayDataSource(byte[],"application/x-any");
attache.setDataHandler(new DataHandler(new FileDataSource(
attachement)));
String fileName = getLastName(attachement.getName());
attache.setFileName(MimeUtility.encodeText(fileName,
charset, null));
multipart.addBodyPart(attache);
}
}
mimeMessage.setContent(multipart);
// SimpleDateFormat formcat = new SimpleDateFormat("yyyy-MM-dd");
mimeMessage.setSentDate(new Date());// formcat.parse("2010-5-23")
Transport.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
} private static String getLastName(String fileName) {
int pos = fileName.lastIndexOf("\\");
if (pos > -1) {
fileName = fileName.substring(pos + 1);
}
pos = fileName.lastIndexOf("/");
if (pos > -1) {
fileName = fileName.substring(pos + 1);
}
return fileName;
}
}
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL false
220 mx.google.com ESMTP c24sm9267873wam.7
DEBUG SMTP: connected to host "smtp.gmail.com", port: 465EHLO PC-200909131652
250-mx.google.com at your service, [123.118.97.210]
250-SIZE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH
250 ENHANCEDSTATUSCODES
DEBUG SMTP: Found extension "SIZE", arg "35651584"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
cGFuZGFtZXN1cHBvcnRAZ21haWwuY29t
334 UGFzc3dvcmQ6
YW55aXRvbmd5dWFu
535-5.7.1 Username and Password not accepted. Learn more at
535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 c24sm9267873wam.7
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:306)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
at com.pandame.mail.EmailSender.send(EmailSender.java:130)
at com.pandame.mail.EmailSender.send(EmailSender.java:60)
at com.pandame.mail.EmailSender.send(EmailSender.java:43)
at com.pandame.web.action.user.FindPasswordAction.getpassword(FindPasswordAction.java:46)
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:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
at com.pandame.web.action.privilege.PermissionProcessor.processActionPerform(PermissionProcessor.java:32)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
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:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:112)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.pandame.web.filter.SetCodeFilter.doFilter(SetCodeFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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)这是Java类public class EmailSender {
private static final String charset = "utf-8";
private static final String defaultMimetype = "text/plain"; public static void main(String[] args) throws Exception {
EmailSender.send(new String[] { "[email protected]" }, "客服邮件",
"<b>熊猫迷</b>", null, "text/html");
} /**
* 发送邮件
*
* @param receiver
* 收件人
* @param subject
* 标题
* @param mailContent
* 邮件内容
* @param mimetype
* 内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
*/
public static void send(String receiver, String subject,
String mailContent, String mimetype) {
send(new String[] { receiver }, subject, mailContent, mimetype);
} /**
* 发送邮件
*
* @param receivers
* 收件人
* @param subject
* 标题
* @param mailContent
* 邮件内容
* @param mimetype
* 内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
*/
public static void send(String[] receivers, String subject,
String mailContent, String mimetype) {
send(receivers, subject, mailContent, null, mimetype);
} /**
* 发送邮件
*
* @param receivers
* 收件人
* @param subject
* 标题
* @param mailContent
* 邮件内容
* @param attachements
* 附件
* @param mimetype
* 内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
*/
public static void send(String[] receivers, String subject,
String mailContent, File[] attachements, String mimetype) {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");// Smtp服务器地址
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");// 需要校验
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication([email protected],
"个人密码此处未写!!");// 登录用户名/密码
}
});
session.setDebug(true);
try {
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setFrom(new InternetAddress("[email protected]"));// 发件人邮件 InternetAddress[] toAddress = new InternetAddress[receivers.length];
for (int i = 0; i < receivers.length; i++) {
toAddress[i] = new InternetAddress(receivers[i]);
}
mimeMessage.setRecipients(Message.RecipientType.TO, toAddress);// 收件人邮件
mimeMessage.setSubject(subject, charset); Multipart multipart = new MimeMultipart();
// 正文
MimeBodyPart body = new MimeBodyPart();
// body.setText(message, charset);不支持html
body.setContent(mailContent, (mimetype != null
&& !"".equals(mimetype) ? mimetype : defaultMimetype)
+ ";charset=" + charset);
multipart.addBodyPart(body);// 发件内容
// 附件
if (attachements != null) {
for (File attachement : attachements) {
MimeBodyPart attache = new MimeBodyPart();
// ByteArrayDataSource bads = new
// ByteArrayDataSource(byte[],"application/x-any");
attache.setDataHandler(new DataHandler(new FileDataSource(
attachement)));
String fileName = getLastName(attachement.getName());
attache.setFileName(MimeUtility.encodeText(fileName,
charset, null));
multipart.addBodyPart(attache);
}
}
mimeMessage.setContent(multipart);
// SimpleDateFormat formcat = new SimpleDateFormat("yyyy-MM-dd");
mimeMessage.setSentDate(new Date());// formcat.parse("2010-5-23")
Transport.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
} private static String getLastName(String fileName) {
int pos = fileName.lastIndexOf("\\");
if (pos > -1) {
fileName = fileName.substring(pos + 1);
}
pos = fileName.lastIndexOf("/");
if (pos > -1) {
fileName = fileName.substring(pos + 1);
}
return fileName;
}
}
这里报错了吧
java类为什么不写成代码形式的, 看起来好不舒服..
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication([email protected],
"个人密码此处未写!!");// 登录用户名/密码
}
});"个人密码此处未写!!" 改成你的密码了吧?
http://mybeautiful.javaeye.com/blog/746812
return new PasswordAuthentication([email protected],
"个人密码此处未写!!");// 登录用户名/密码
}
这里的密码我公布了 是我程序的啊 我邮箱,我隐私。。
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
然后这里的props.put("mail.smtp.host", "smtp.gmail.com");// Smtp服务器地址
改为:props.put("mail.smtp.host", "smtp.163.com");// Smtp服务器地址