javamail的问题

oubo824219 2009-08-18 03:44:25
一个类
package com.mail;

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;

public class SendMail {

private String sender = "oubo219@126.com";
private String smtpHost = "smtp.126.com";

private String user = "oubo219@126.com";
private String password = "oubo13423307898";




private void sendBody(String mailTo, String subject, String information)
throws Exception, MessagingException {
Properties prop = new Properties();
prop.put("mail.smtp.host", smtpHost);// 设置smtp主机
prop.put("mail.smtp.auth", "true");// 使用smtp身份验证
prop.put("mail.smtp.user", user);
prop.put("mail.smtp.password", password);
Session session = Session.getInstance(prop, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(sender, password);
}
});
// 获得邮件会话对象
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(sender));
// 设置收件人地�?
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
// 设置邮件主题
message.setSubject(subject);
// mail内容部分
MimeBodyPart part = new MimeBodyPart();
part.setText(information == null ? "" : information, "UTF-8");
// 设置邮件格式为html
part.setContent(information.toString(), "text/html;charset=UTF-8");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(part);// �? Multipart 中增加mail内容部分
message.setContent(multipart);// 增加 Multipart 到信息体
message.setSentDate(new Date());// 设置发�?�日�?
Transport.send(message);// 发�?�邮�?
}

public void send(String mailTo, String subject, String information) {
try {
this.sendBody(mailTo, subject, information);
} catch (Exception e) {
e.printStackTrace();
}
}

}
在写一个action来测试

String namemail=request.getParameter("mailQQ");
String title ="aaaaa";
System.out.println("aaaa"+namemail);
SendMail sendm=new SendMail();
String Context=" 行不行";

sendm.send(namemail,title,Context);
return mapping.findForward("ok");

jsp页面
<html:html >
<HEAD>

<TITLE>注册</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<META content="MSHTML 6.00.6000.16788" name=GENERATOR>
</HEAD>
<BODY>
<form action="reg.do" method="post">
<input type="text" name="mailQQ" id="mailQQ" />
<html:submit></html:submit>
</form>
</BODY>
</html:html>

运行时报错了
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:319)
at javax.mail.Service.connect(Service.java:169)
at javax.mail.Service.connect(Service.java:118)
at javax.mail.Transport.send0(Transport.java:188)
at javax.mail.Transport.send(Transport.java:118)
at com.mail.SendMail.sendBody(SendMail.java:57)
at com.mail.SendMail.send(SendMail.java:62)
at com.struts.action.mailAction.execute(mailAction.java:26)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
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.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)

请各位高手帮忙。发到我的邮箱oubo219@126.com里
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oubo824219 2009-11-09
  • 打赏
  • 举报
回复
package com.jiyade.servlet;

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

import javax.activation.DataHandler;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.util.ByteArrayDataSource;

import sun.misc.BASE64Encoder;

/**
*
* @author CARRIER 设置好 to 收件人 subject 主题 content 正文
*/

public class JavaMail {
private static String SMTPHOST = "mail.janyjewelry.com";
private static String USERNAME = "jany@janyjewelry.com";
private static String PASSWORD = "jany1968";
private static String FROM = "jany@janyjewelry.com";

// private static String SMTPHOST="test.gumeipost.com";
// private static String USERNAME="yanfangli@yuancheng.com.cn";
// private static String PASSWORD="carrier";
// private static String FROM="yanfangli@yuancheng.com.cn";

private static String FROMNAME = "吉雅德客户";
private final String MAIL_SMTP_HOST = "mail.smtp.host";
private final String MAIL_SMTP_AUTH = "mail.smtp.auth";
private String to;
private String subject;
private String content;

public JavaMail() {
// TODO Auto-generated constructor stub
}

public String getTo() {
return to;
}

public void setTo(String to) {
this.to = to;
}

public String getSubject() {
return subject;
}

public void setSubject(String subject) {
this.subject = subject;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

public void sendMail() {
Properties props = new Properties();
props.put("mail.smtp.host", SMTPHOST);
props.put("mail.smtp.auth", "true");
// 建立会话
Session session = null;
try {

Authenticator auth = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USERNAME, PASSWORD);
}
};
session = Session.getInstance(props, auth);
// 设置调试
// session.setDebug(true);
System.out.println("与" + SMTPHOST + "成功建立会话");
// 建立消息
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(FROM, FROMNAME));
message.setSentDate(new Date());
// 加载收件人地址
InternetAddress toAddress = new InternetAddress(to);
message.addRecipient(Message.RecipientType.TO, toAddress);
// 加载主题
BASE64Encoder enc = new BASE64Encoder();
message.setSubject("=?GBK?B?" + enc.encode(subject.getBytes()) + "?=");
// 加载正文内容(带HTML标签)
message.setDataHandler(new DataHandler(new ByteArrayDataSource(
content, "text/html")));
// 建立发送
Transport transport = session.getTransport("smtp");
transport.connect(SMTPHOST, USERNAME, PASSWORD);
transport.sendMessage(message, message
.getRecipients(Message.RecipientType.TO));

// 关闭发送
transport.close();
} catch (Exception e) {
e.getStackTrace();
}
System.out.println("给" + to + "的邮件,发送成功");

}

public static void send(String toName, String title, String content) {

JavaMail mail = new JavaMail();
mail.setTo(toName);
mail.setSubject(title);
mail.setContent(content);
mail.sendMail();
System.out.print("发送成功。");
}
}


直接调用

JavaMail send=new JavaMail ();

send.send(邮箱名, 标题, 内容);


试一下
danier_sky 2009-08-18
  • 打赏
  • 举报
回复

import java.util.*;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* 邮件发送
* @author Administrator
*
*/
public class Email {
static Log log = LogFactory.getLog(Email.class);
private String smtphost; // 发送邮件服务器
private String user; // 邮件服务器登录用户名
private String password; // 邮件服务器登录密码
private String from; // 发送人邮件地址
private String to; // 接受人邮件地址
private String subject; // 邮件标题
private String content; // 邮件内容
public Email(){}

public Email(String from ,String password,String to_mail,String subject,String content){
this.from = from;
this.password = password;
String []smt = from.split("@");
this.user = smt[0];
this.smtphost = "smtp."+smt[1];
this.to = to_mail;
this.subject = subject;
this.content = content;
}
public static void main(String[] args) {
String from = "from@126.com";
String password = "password";
String to_e_mail = "toemail@126.com";
String content = "邮件内容!";
Email e = new Email(from,password,to_e_mail,"主题1",content);
int r=e.sentMail();
System.out.println(r);
}
/**
* 发邮件
* @return int
*/
public int sentMail(){
int iRes=99999;
try {
Properties props = new Properties();
props.put("mail.smtp.host", smtphost);
props.put("mail.smtp.auth","true");
Session ssn = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(ssn);
InternetAddress fromAddress = new InternetAddress(from);
message.setFrom(fromAddress);
InternetAddress toAddress = new InternetAddress(to);
message.addRecipient(Message.RecipientType.TO, toAddress);
message.setSubject(subject);
message.setText(content);
Transport transport = ssn.getTransport("smtp");
transport.connect(smtphost, user, password);
transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
//transport.send(message);
transport.close();
System.out.println("邮件发送成功!");
iRes = 0;
}catch(Exception e){
log.info("邮件发送异常!"+e);
}
return iRes;
}
}


你试试
diggywang 2009-08-18
  • 打赏
  • 举报
回复
126邮箱支持smtp服务吗?先确定一下126邮箱是否支持smpt服务,否则最好使用pop3.
shengnba 2009-08-18
  • 打赏
  • 举报
回复
应该是发送时的授权问题。。是不是邮箱名称,密码什么的错误。。。。
zhang_yu_QIN 2009-08-18
  • 打赏
  • 举报
回复
我帮你改好了。.已经发到你邮箱了..

81,091

社区成员

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

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