报错:
javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.AuthenticationFailedException
at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at com.raecom.MailSender.sendMail(mailsender.java:141)
at com.raecom.MailSender.sendData(mailsender.java:101)
at com.raecom.MailSender.run(mailsender.java:72)
at java.lang.Thread.run(Thread.java:536)
源代码如下,怎么解决??
------------------------------
package com.raecom;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
import javax.activation.*;
import javax.mail.*;
import javax.mail.Message.*;
import javax.mail.internet.*;
/**
* <p>Copyright: Copyright (c) 2004</p>
* @author [email protected]
* @version 1.0
*/
public class MailSender
implements Runnable {
private int time = 5 * 60 * 1000; //扫描数据库时间间隔
private boolean flag = true; //停止线程标记
private String server = "127.0.0.1"; //SMTP服务器地址
private String port = "25"; //SMTP服务器端口
private String address ="[email protected]"; //用于发送EMAIL的发送者地址
private String username = "[email protected]"; //发送者的用户名
private String password ="111111"; //发送者的密码
private boolean validate = true; //邮件服务器是否要求验证
private File root = null; //WEB根目录 public MailSender() {
} public void setAddress(String address) {
this.address = address;
} public void setPassword(String password) {
this.password = password;
} public void setPort(String port) {
if (port != null && port.length() > 0) {
this.port = port;
}
} public void setServer(String server) {
this.server = server;
} public void setUsername(String username) {
this.username = username;
} public void setValidate(boolean validate) {
this.validate = validate;
} public void setTime(int minute) {
this.time = minute * 60 * 1000;
} public void run() {
long lastTime = new Date().getTime(); //保存前一次发送邮件的时间
while (flag) { //服务器停止时退出线程
long k = new Date().getTime() - lastTime;
if (k < -1000) { //防止系统修改时间
lastTime = new Date().getTime();
continue;
}
if (k > time) { //超过设定时间间隔开始发送邮件
sendData();
lastTime = new Date().getTime();
}
try {
Thread.sleep(100);
}
catch (Exception e) {}
}
} public void stop() {
flag = false;
} /** */
private void sendData() {
String toAddress = null;
String tosmaddress = null; Session session = Session.getInstance(getProperties(), new Authentic());
while(flag)
{
//服务器停止时退出线程
toAddress = tosmaddress;//发送地址(从rs中得到)
String subject = "this is subject";//邮件主题
String content = "this is content" ;//邮件内容
String file[] = null;//所有附件(绝对路径)
sendMail(session, tosmaddress, subject, content, file);//发送邮件
}
} /**
* 发送邮件
* @param session 会话
* @param toAddress 目的地址
* @param subject 邮件主题
* @param content 邮件内容(HTML)
* @param files 邮件附件
* @return 是否发送成功
*/
private boolean sendMail(Session session, String toAddress, String subject,
String content, String[] files) {
toAddress = "[email protected]";
try {
Message rs = new MimeMessage(session);
Address from = new InternetAddress(address);
rs.setFrom(from); //发送地址
rs.setRecipient(RecipientType.TO, new InternetAddress(toAddress)); //接收地址
rs.setSubject(subject); //邮件主题
Multipart mp = new MimeMultipart();
BodyPart html = new MimeBodyPart();
html.setContent(content, "text/html; charset=GB2312"); //邮件HTML内容
mp.addBodyPart(html);
if (files != null && files.length > 0) { //邮件附件
for (int i = 0; i < files.length; i++) {
MimeBodyPart mbp = new MimeBodyPart();
FileDataSource fds = new FileDataSource(files[i]);
mbp.setDataHandler(new DataHandler(fds));
mp.addBodyPart(mbp);
}
}
rs.setContent(mp); //邮件全部内容
rs.setSentDate(new Date()); //发送时间
Transport.send(rs); //发送
return true;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
} /**
* 邮件会话属性
* @return 会话属性
*/
private Properties getProperties() {
Properties rs = new Properties();
rs.put("mail.smtp.host", server);
rs.put("mail.smtp.port", port);
rs.put("mail.smtp.auth", validate ? "true" : "false");
return rs;
} public void setRoot(File root) {
this.root = root;
} class Authentic
extends Authenticator { //验证密码 public Authentic() {
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
} }}
javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.AuthenticationFailedException
at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at com.raecom.MailSender.sendMail(mailsender.java:141)
at com.raecom.MailSender.sendData(mailsender.java:101)
at com.raecom.MailSender.run(mailsender.java:72)
at java.lang.Thread.run(Thread.java:536)
源代码如下,怎么解决??
------------------------------
package com.raecom;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
import javax.activation.*;
import javax.mail.*;
import javax.mail.Message.*;
import javax.mail.internet.*;
/**
* <p>Copyright: Copyright (c) 2004</p>
* @author [email protected]
* @version 1.0
*/
public class MailSender
implements Runnable {
private int time = 5 * 60 * 1000; //扫描数据库时间间隔
private boolean flag = true; //停止线程标记
private String server = "127.0.0.1"; //SMTP服务器地址
private String port = "25"; //SMTP服务器端口
private String address ="[email protected]"; //用于发送EMAIL的发送者地址
private String username = "[email protected]"; //发送者的用户名
private String password ="111111"; //发送者的密码
private boolean validate = true; //邮件服务器是否要求验证
private File root = null; //WEB根目录 public MailSender() {
} public void setAddress(String address) {
this.address = address;
} public void setPassword(String password) {
this.password = password;
} public void setPort(String port) {
if (port != null && port.length() > 0) {
this.port = port;
}
} public void setServer(String server) {
this.server = server;
} public void setUsername(String username) {
this.username = username;
} public void setValidate(boolean validate) {
this.validate = validate;
} public void setTime(int minute) {
this.time = minute * 60 * 1000;
} public void run() {
long lastTime = new Date().getTime(); //保存前一次发送邮件的时间
while (flag) { //服务器停止时退出线程
long k = new Date().getTime() - lastTime;
if (k < -1000) { //防止系统修改时间
lastTime = new Date().getTime();
continue;
}
if (k > time) { //超过设定时间间隔开始发送邮件
sendData();
lastTime = new Date().getTime();
}
try {
Thread.sleep(100);
}
catch (Exception e) {}
}
} public void stop() {
flag = false;
} /** */
private void sendData() {
String toAddress = null;
String tosmaddress = null; Session session = Session.getInstance(getProperties(), new Authentic());
while(flag)
{
//服务器停止时退出线程
toAddress = tosmaddress;//发送地址(从rs中得到)
String subject = "this is subject";//邮件主题
String content = "this is content" ;//邮件内容
String file[] = null;//所有附件(绝对路径)
sendMail(session, tosmaddress, subject, content, file);//发送邮件
}
} /**
* 发送邮件
* @param session 会话
* @param toAddress 目的地址
* @param subject 邮件主题
* @param content 邮件内容(HTML)
* @param files 邮件附件
* @return 是否发送成功
*/
private boolean sendMail(Session session, String toAddress, String subject,
String content, String[] files) {
toAddress = "[email protected]";
try {
Message rs = new MimeMessage(session);
Address from = new InternetAddress(address);
rs.setFrom(from); //发送地址
rs.setRecipient(RecipientType.TO, new InternetAddress(toAddress)); //接收地址
rs.setSubject(subject); //邮件主题
Multipart mp = new MimeMultipart();
BodyPart html = new MimeBodyPart();
html.setContent(content, "text/html; charset=GB2312"); //邮件HTML内容
mp.addBodyPart(html);
if (files != null && files.length > 0) { //邮件附件
for (int i = 0; i < files.length; i++) {
MimeBodyPart mbp = new MimeBodyPart();
FileDataSource fds = new FileDataSource(files[i]);
mbp.setDataHandler(new DataHandler(fds));
mp.addBodyPart(mbp);
}
}
rs.setContent(mp); //邮件全部内容
rs.setSentDate(new Date()); //发送时间
Transport.send(rs); //发送
return true;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
} /**
* 邮件会话属性
* @return 会话属性
*/
private Properties getProperties() {
Properties rs = new Properties();
rs.put("mail.smtp.host", server);
rs.put("mail.smtp.port", port);
rs.put("mail.smtp.auth", validate ? "true" : "false");
return rs;
} public void setRoot(File root) {
this.root = root;
} class Authentic
extends Authenticator { //验证密码 public Authentic() {
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
} }}
解决方案 »
- struts2里拦截器的返回值的作用是什么?
- 求教:我有一个方法,每隔5分钟就要和数据库进行交互,想问大家一下,我这个方法应该怎么写啊?而且这个方法不需要人为操作,是自己自动的
- 我想做个类似csdn首页这样的页面,大家有什么好的建议。
- 求求各位帮帮,不然我马上要挨骂了.高分求验证码问题.
- jsp session问题
- 向高手求救!把excel转换成xml时遇到的问题:如何区分日期型和数字型数据?。。。。。。。。。
- jsp开发常见错误
- jsp的邮件的发送实现了,请教高手接受邮件的源代码?急!
- 乱码问题
- jquery 还是 EL 表达式来填充jsp
- iframe框的问题
- 渴求一个webwork+spring+hibernate的简单例子,谢谢
props.put("mail.smtp.host","smtp.163.com");
props.put("mail.smtp.auth","true");
props.put("mail.smtp.user", "[email protected]");
props.put("mail.smtp.password", "0");
//下面的Sessioni要验证
Session session = Session.getInstance(props, new PopupAuthenticator("[email protected]", "0")PopupAuthenticator类:
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class PopupAuthenticator extends Authenticator
{
String username=null;
String password=null; public PopupAuthenticator(String user, String pass)
{
username = user;
password = pass;
} protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(username, password);
}
}