javamail 发送邮件

sking_2008 2009-04-29 03:02:30
最近要写个javamail 发送邮件的程序
以前没弄过.搞了一天也没弄出个所以然 写了个测试 但是出异常 大家帮我看看

Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(props ,null);
session.setDebug(true);

Message msg = new MimeMessage(session);
msg.setText("你好吗?");
msg.setFrom(new InternetAddress("sking_2008@sina.com"));
Transport transport = session.getTransport();
transport.connect("smtp.sina.com.cn", 25, "sking_2008", "liuxiaoxi");
transport.sendMessage(msg,new Address[]{new InternetAddress("sking_2008@sina.com")});
transport.close();

打印出来的信息和异常为
DEBUG SMTP: trying to connect to host "smtp.sina.com.cn", port 25

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

EHLO china-a190c6499
250-irxd5-201.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
c2tpbmdfMjAwOA==
334 UGFzc3dvcmQ6
bGl1eGlhb3hp
535 #5.7.0 Authentication failed
Exception in thread "main" javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:264)
at com.wyebd.web.action.dataSendAction.PictureSendAction.main(PictureSendAction.java:51)

大家有没有写好的javamail发送邮件的 要有能发附件那种的.发给我一份也好.
我邮箱sking_2008@yeah.net
...全文
294 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
oiqio 2009-04-30
  • 打赏
  • 举报
回复
顶10楼,lz的代码确实没错。是正确的~~~
sun451989 2009-04-30
  • 打赏
  • 举报
回复
楼上正解!
Jalien 2009-04-30
  • 打赏
  • 举报
回复
新浪现在还免费提供的pop3服务 不过需要你手动打开,默认是关闭的
[Quote=引用 13 楼 aloie 的回复:]
新浪邮箱不免费提供pop3服务了吧
[/Quote]
LYPC1988 2009-04-30
  • 打赏
  • 举报
回复
10L正解。应该是你那新浪邮箱的问题,其实就是邮箱服务器提供商为了避免过多的垃圾邮件而关闭了对应的邮件服务功能,你可以换个邮箱试试看,其实你的代码没有什么大的问题,可以用QQ邮箱,不过得确定是否打开了POP/SMTP协议功能,也可以用网易的,2006年以前申请的最好,我的就是,所以没遇到过该问题。
Jalien 2009-04-30
  • 打赏
  • 举报
回复
晕死 楼上的都没看出问题来
Lz其实你的代码没错 不是程序的问题现在很多免费邮箱为了避免垃圾邮件 关闭了POP/SMTP像新浪的邮箱可以这样打开POP/SMTP 邮箱设置-》账户 里面开启POP/SMTP功能就可以了
有的免费邮箱不再提供免费的POP/SMTP服务 需要申请他们的付费邮箱
像网易的邮箱从2006年11月16日新注册用户,无法使用POP客户端功能。之前注册用户仍能照常使用。

如果要发送邮件的话强烈推荐使用commons-email-1.1.jar这个组件,很好用,它已经封装了javamail,使用很简单,代码就不贴了直接给链接

这里有使用commons-email-1.1.jar的例子http://www.iocblog.net/project/commonsemail/commonsemail-336.html


http://blog.csdn.net/lihan6415151528/archive/2008/12/11/3496827.aspx

相信楼主一看就会用了
建议Lz去了解一下邮件协议

一定要记得邮箱是否打开了POP/SMTP!!!
我刚弄那个也是遇到这个问题折磨了一下午!郁闷

一定要记得邮箱是否打开了POP/SMTP!!!

java_coding 2009-04-30
  • 打赏
  • 举报
回复
认证出错应该不是代码问题,,,
那个例子我已经发到你邮箱了,,,
BearKin 2009-04-30
  • 打赏
  • 举报
回复
同志 这个世界上有种东西叫做百度词条 如果你肯用你的手手搜索下的话你就会发现 会有个很标准的例子在等待你

如果不好使的话 消息我 我发给你一个
lgq_0714 2009-04-30
  • 打赏
  • 举报
回复
6、7L的很全面啊!就是不能发送附件啊!
aloie 2009-04-30
  • 打赏
  • 举报
回复
新浪邮箱不免费提供pop3服务了吧
pathuang68 2009-04-30
  • 打赏
  • 举报
回复
6L, 7L的例子很好,要知道详细情况还需要看看文档,不难的。
Sou2012 2009-04-29
  • 打赏
  • 举报
回复
去官方看文档
西瓜 2009-04-29
  • 打赏
  • 举报
回复
接收邮件代码!记得加分!


import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class ReceiverWithText {
private String host;
private String user;
private String password;
public ReceiverWithText() {
}

public void setHost(String host) {
this.host = host;
}

public void setUser(String user) {
this.user = user;
}

public void setPassword(String password) {
this.password = password;
}

public String getHost() {
return host;
}

public String getUser() {
return user;
}

public String getPassword() {
return password;
}

public void getMail() throws Exception{
Properties props=new Properties();
props.put("mail.pop3.host",host);
Session mailsession=Session.getDefaultInstance(props);
Store store=mailsession.getStore("pop3");
store.connect(host,user,password);
Folder inbox=store.getDefaultFolder().getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
Message[] message=inbox.getMessages();
for (int i = 0; i < message.length; i++) {
message[i].setFlag(Flags.Flag.DELETED,true);
System.out.println("邮件主题:"+message[i].getSubject());
System.out.println("邮件发送者:"+message[i].getFrom()[0]);
System.out.println("发送时间:"+message[i].getSentDate());
System.out.println("内容:"+message[i].getContent());
}

inbox.close(true);
store.close();

}

public static void main(String[] args){
ReceiverWithText receiver=new ReceiverWithText();
receiver.setHost("binhao");
receiver.setUser("jacky");
receiver.setPassword("jacky");
try {
receiver.getMail();
} catch (Exception ex) {
ex.printStackTrace();
}

}

}

西瓜 2009-04-29
  • 打赏
  • 举报
回复
发送邮件代码,记得导包!

import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;

/**
* @author
*/
public class SenderWithText
{
String host="";
String user="";
String password="";

public void setHost(String host)
{
this.host=host;
}

public void setAccount(String user,String password)
{
this.user=user;
this.password=password;
}

public void send(String from,String to,String subject,String content)
{
Properties props = new Properties();
props.put("mail.smtp.host", host);//指定SMTP服务器
props.put("mail.smtp.auth", "true");//指定是否需要SMTP验证
try
{
Session mailSession = Session.getDefaultInstance(props);

mailSession.setDebug(true);//是否在控制台显示debug信息

Message message=new MimeMessage(mailSession);
message.setFrom(new InternetAddress(from));//发件人
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));//收件人
//message.addRecipient(Message.RecipientType.CC,new InternetAddress("orion@haobin.com"));//收件人

message.setSubject(subject);//邮件主题
message.setText(content);//邮件内容
message.setSentDate(new java.util.Date());//发信日期
message.saveChanges();

Transport transport = mailSession.getTransport("smtp");
transport.connect(host, user, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}catch(Exception e)
{
System.out.println(e);
}

}

public static void main(String args[])
{
SenderWithText sm=new SenderWithText();

sm.setHost("smtp.21cn.com");//指定要使用的邮件服务器
sm.setAccount("hb_email","h8250238");//指定帐号和密码

/*
* @param String 发件人的地址
* @param String 收件人地址
* @param String 邮件标题
* @param String 邮件正文
*/
sm.send("hb_email@21cn.com","hb_email@21cn.com","测试一下javaMail","文本内容");
}

}
sking_2008 2009-04-29
  • 打赏
  • 举报
回复
.....顶上来
sking_2008 2009-04-29
  • 打赏
  • 举报
回复
楼上的代码我测试了 .不过没通过 和我的代码异常一样.....无法通过验证貌似
Defonds 2009-04-29
  • 打赏
  • 举报
回复

81,094

社区成员

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

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