通过电子邮件找回密码问题100分求解

zjwilove4 2009-05-27 07:54:24
项目需要完成一个通过电子邮件找回密码的服务,小弟在网上找了篇代码但是却出现异常如下:望大家帮助

javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. n6sm2296378wag.39

at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at com.cdjj.y2t034.mavk.email.FindPwdEmail.SendMail(FindPwdEmail.java:58)
at com.cdjj.y2t034.mavk.email.FindPwdEmail.main(FindPwdEmail.java:87)


package com.cdjj.y2t034.mavk.email;

import java.util.Calendar;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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;

/**
* 发送电子邮件的类
* 功能:提供用户通过电子邮件找回密码
* 时间:2009年5月27日
* 地点:望平街(home)
* 作者:mavk
* @author mavk
*
*/
public class FindPwdEmail {
private String E_from = "liu3232wei@gmail.com";// 发件人地址
private String E_smtp = "smtp.gmail.com";// 邮件发送服务器(smtp)
private String E_user = "liu3232wei"; // 登录用户名
private String E_password = "********";// 登录密码
public FindPwdEmail() {
}

public boolean SendMail(String E_to, String E_title, String E_content) {
try {
Transport transport;
Properties props = new Properties();
props.put("mail.smtp.host", E_smtp);// 设置smtp主机
props.put("mail.smtp.auth", "true");// 使用smtp身份验证
props.put("mail.smtp.prot", "465");
Authenticator pauth = new passauth(E_user, E_password);
Session mySession = Session.getInstance(props, pauth);
Message mimeMsg = new MimeMessage(mySession);// 创建MIME邮件对象
mimeMsg.setFrom(new InternetAddress(E_from));// 设置发件人地址
mimeMsg.setRecipient(Message.RecipientType.TO, new InternetAddress(E_to));//设置收件人地址
mimeMsg.setSubject(E_title);// 设置邮件主题
mimeMsg.setSentDate(new Date());// 设置发送日期
MimeBodyPart part = new MimeBodyPart();// mail内容部分
part.setText(E_content);
part.setContent(E_content.toString(), "text/html;charset=gb2312");// 设置邮件格式为html
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(part);// 在 Multipart 中增加mail内容部分
mimeMsg.setContent(multipart);// 增加 Multipart 到信息体
// mimeMsg.setText(E_content);
transport = mySession.getTransport("smtp");
Transport.send(mimeMsg);// 发送邮件 transport.send(mimeMsg);/
System.out.println("发送成功");
return true;
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
}

private class passauth extends Authenticator {
private String authUser = "";

private String authPwd = "";

public passauth(String username, String password) {
authUser = username;
authPwd = password;
}

public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(this.authUser, this.authPwd);
}
}

// 主函数,调试用的,
public static void main(String[] args) {
Calendar rightNow = Calendar.getInstance();
System.out.println("开始的时候" + rightNow.getTime());
FindPwdEmail mail = new FindPwdEmail();
mail.SendMail("liu3232wei@126.com", "javamail发的信",
"用javamail发的信。现在测试。请配合,哈哈");
Calendar rightNow1 = Calendar.getInstance();
System.out.println("结束的时候" + rightNow1.getTime());

}
}
...全文
503 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dearjianggege 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jinxfei 的回复:]
535 #5.7.0 Authentication failed

登录异常?
[/Quote]这个问题咋解决呢,期待中?
zjwilove4 2009-05-27
  • 打赏
  • 举报
回复
好了,谢谢大家的帮助。
网络科技 2009-05-27
  • 打赏
  • 举报
回复
换个邮箱试下,有时邮箱服务器不稳定.
jinxfei 2009-05-27
  • 打赏
  • 举报
回复
535 #5.7.0 Authentication failed

登录异常?
zjwilove4 2009-05-27
  • 打赏
  • 举报
回复
使用了xnjnmn的代码还是会出现以下异常:
DEBUG: setDebug: JavaMail version 1.3.1
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
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.sina.com", port 25

220 irxd5-202.sinamail.sina.com.cn ESMTP
DEBUG SMTP: connected to host "smtp.sina.com", port: 25

EHLO Mavk_WindowsXP
250-irxd5-202.sinamail.sina.com.cn
250-8BITMIME
250-SIZE 31457280
250-AUTH PLAIN LOGIN
250 AUTH=PLAIN LOGIN
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "SIZE", arg "31457280"
DEBUG SMTP: Found extension "AUTH", arg "PLAIN LOGIN"
DEBUG SMTP: Found extension "AUTH=PLAIN", arg "LOGIN"
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
bGl1MzIzMndlaUBzaW5hLmNvbQ==
334 UGFzc3dvcmQ6
emp3aWxvdmU0
535 #5.7.0 Authentication failed
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.cdjj.y2t034.mavk.email.JavaMail.sendMail(JavaMail.java:54)
at com.cdjj.y2t034.mavk.email.JavaMail.main(JavaMail.java:66)

是不是我本身的环境有问题呢
zjwilove4 2009-05-27
  • 打赏
  • 举报
回复
我把导进去了
xnjnmn 2009-05-27
  • 打赏
  • 举报
回复

import java.util.Date;
import java.util.Properties;
import javax.servlet.*; //此句报错误的话请注释
import javax.mail.Session;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Message;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import javax.mail.Transport;
public class javaMail {
private Properties properties;
private Session mailSession;
private MimeMessage mailMessage;
private Transport trans;
public javaMail() {
}
public void sendMail() {
try {
properties = new Properties();
//设置邮件服务器
properties.put("mail.smtp.host", "smtp.sina.com");
//验证
properties.put("mail.smtp.auth", "true");
//根据属性新建一个邮件会话
mailSession = Session.getInstance(properties,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("xnjnmn@sina.com",
"*******");
}
});
mailSession.setDebug(true);
//建立消息对象
mailMessage = new MimeMessage(mailSession);
//发件人
mailMessage.setFrom(new InternetAddress("xnjnmn@sina.com"));
//收件人
mailMessage.setRecipient(MimeMessage.RecipientType.TO,
new InternetAddress("xnjnmn@163.com"));
//主题
mailMessage.setSubject("测试");
//内容
mailMessage.setText("test");
//发信时间
mailMessage.setSentDate(new Date());
//存储信息
mailMessage.saveChanges();
//
trans = mailSession.getTransport("smtp");
//发送
trans.send(mailMessage);
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
javaMail javaMail=new javaMail();
javaMail.sendMail();
}
}


测试通过
zoutuo 2009-05-27
  • 打赏
  • 举报
回复
应该是jar没有导入吧。你用的是什么包?JavaMail要导包。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧