|
我按照网上的一个例子写的,报错
找了一天都不知道什么错,
package com;
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
class ExtendString {
public ExtendString() {
}
/**
* 去掉字符串两端的空白字符,并将字符串转化为中国的标准字符gb2312的字符串.
*/
public String CS(String str) { // 去掉字符串2端的空白字符
try {
if (str == null)
return "";
str = str.trim();
if (str == null)
return "";
str = new String(str.getBytes("8859_1"), "GBK");
} catch (Exception e) {
System.out.println(e);
}
return str;
}
}
public class SendMail {
private String errMsg = "";
private ExtendString ExStr = new ExtendString();
private String sender = "";// 发件人地址
private String smtpHost = "";// 邮件发送服务器(smtp)
private String user = ""; // 登录用户名
private String password = "";// 登录密码
private String subject = "";// mail主题
public SendMail() {
this.setPropertiesAttri();
}
private void setPropertiesAttri() {
try {
/* InputStream is = getClass().getResourceAsStream(
"MailServer.properties");
Properties prop = new Properties();
prop.load(is);
this.setSmtpHost(prop.get("SmtpHost").toString());
this.setUser(prop.get("User").toString());
this.setPassword(prop.get("Password").toString());
this.setSender(prop.get("Sender").toString());
this.setSubject(ExStr.CS(prop.get("Subject").toString()));
*/
this.setSmtpHost("smtp.163.com");
this.setUser("mysky.15");
this.setPassword("hibernate");
this.setSender("mysky.15@163.com");
this.setSubject("内容");
} catch (Exception ex) {
System.err.println("ex1 in sendmail.java:" + ex.toString());
}
}
/** 设置发件人地址 */
public void setSender(String sender) {
this.sender = sender;
}
public String getSender() {
return sender;
}
/** 设置邮件发送服务器(smtp) */
public void setSmtpHost(String smtpHost) {
this.smtpHost = smtpHost;
}
public String getSmtpHost() {
return smtpHost;
}
/** 设置登录用户名 */
public void setUser(String user) {
this.user = user;
}
public String getUser() {
return user;
}
/** 设置登录密码 */
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
/** 设置mail主题 */
public void setSubject(String subject) {
this.subject = subject;
}
public String getSubject() {
return subject;
}
/**
* 使用smtp发送邮件 主程序
*
* @throws MessagingException
* mail发送失败
*/
public void smtp(String receiver, String content) throws MessagingException {
if (smtpHost == null)
throw new MessagingException("smtpHost not found");
if (user == null)
throw new MessagingException("user not found");
if (password == null)
throw new MessagingException("password not found");
Properties properties = new Properties();
properties.put("mail.smtp.host", smtpHost);// 设置smtp主机
properties.put("mail.smtp.auth", "true");// 使用smtp身份验证
Session session = Session.getDefaultInstance(properties,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
});
// 获得邮件会话对象
MimeMessage mimeMsg = new MimeMessage(session);// 创建MIME邮件对象
if (sender != null)// 设置发件人地址
{
mimeMsg.setFrom(new InternetAddress(sender));
}
if (receiver != null)// 设置收件人地址
{
mimeMsg.setRecipients(Message.RecipientType.TO, parse(receiver));
}
if (subject != null)// 设置邮件主题
{
mimeMsg.setSubject(subject, "GBK");
}
MimeBodyPart part = new MimeBodyPart();// mail内容部分
part.setText(content == null ? "" : content, "GBK");
// 设置邮件格式为html cqc
part.setContent(content.toString(), "text/html;charset=GBK");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(part);// 在 Multipart 中增加mail内容部分
mimeMsg.setContent(multipart);// 增加 Multipart 到信息体
mimeMsg.setSentDate(new Date());// 设置发送日期
Transport.send(mimeMsg);// 发送邮件
}
/** 解析地址集合字符串 */
private InternetAddress[] parse(String addressSet) throws AddressException {
ArrayList list = new ArrayList();
StringTokenizer tokens = new StringTokenizer(addressSet, ";");
while (tokens.hasMoreTokens()) {
list.add(new InternetAddress(tokens.nextToken().trim()));
}
InternetAddress[] addressArray = new InternetAddress[list.size()];
list.toArray(addressArray);
return addressArray;
}
/**
* 供外部调用的接口
*/
public boolean sendMails(String mail, String content) {
int mailLen = 0;
int contentLen = 0;
if (mail == null || content == null) {
return false;
}
try {
this.smtp(mail, content);
} catch (Exception ex) {
ex.printStackTrace();
//System.err.println("ex2 in sendmail.java:" + ex.toString());
}
return true;
}
public static void main(String[] args) {
SendMail mail = new SendMail();
String email = "mysky15@vip.winzheng.com";
String content = "我试试";
try {
mail.sendMails(email, content);
} catch (Exception ex) {
System.err.println("ex33:" + ex.toString());
}
}
}
-----------------------------------------------------
报以下错
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.SendMail.smtp(SendMail.java:185)
at com.SendMail.sendMails(SendMail.java:212)
at com.SendMail.main(SendMail.java:227)
|
|