为什么我的javamail 在connet的时候总是错误。

zhtoad 2008-11-07 10:23:43

我第一次用javamail
在运行的时候总是出现:

javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.net, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect

我的程序大概是:
Properties props = System.getProperties();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props, null);
Transport transport = session.getTransport("smtp");
transport.connect("smtp.163.com", "name", "passport");
就在这里出错了
请问,这该怎么办?
谢谢
...全文
203 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
时光瞄 2008-11-21
  • 打赏
  • 举报
回复
楼上几位的例子不错
painforever 2008-11-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 rosewj 的回复:]
LZ我这里有sina的例子 你可以试试 现在好像126和163的都不能发 。。
Java code
import java.util.*;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import java.io.*;

/**
* @author Bromon
*/
public class SenderWithSMTPVer
{
String host="";
String user="";
String passwo…
[/Quote]

想问一下,我照着你的例子配了一下,编译都没有问题,可以通过,但是在运行的时候时不时的就报Authentication异常,但有时又能正常运行,请问一下这是为什么?
rosewj 2008-11-12
  • 打赏
  • 举报
回复
LZ我这里有sina的例子 你可以试试 现在好像126和163的都不能发 。。

import java.util.*;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import java.io.*;

/**
* @author Bromon
*/
public class SenderWithSMTPVer
{
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 = System.getProperties();
props.put("mail.smtp.host", host);//指定SMTP服务器

props.put("mail.smtp.auth", "true");//指定是否需要SMTP验证
try
{
Session mailSession = Session.getDefaultInstance(props, null);


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

Message message=new MimeMessage(mailSession);
message.setFrom(new InternetAddress(from));//发件人
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));//收件人


message.setSubject(subject);//邮件主题
message.setText(content);//邮件内容
message.saveChanges();

Transport transport = mailSession.getTransport("smtp");

transport.connect(host, user, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}catch(Exception e)
{
e.printStackTrace();
}

}



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

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

/*
* @param String 发件人的地址
* @param String 收件人地址
* @param String 邮件标题
* @param String 邮件正文
*/
sm.send("rosewj1986860111@sina.com","wjlovegyr@sina.com","标题","内容");
}
}

热烈的红颜 2008-11-12
  • 打赏
  • 举报
回复
有一些 是做了验证的
没有通过验证 是不可以 发送信息的
beiouwolf 2008-11-12
  • 打赏
  • 举报
回复
163要求认证
可以用LS的方法试一下
现在大多邮箱都有自己的特殊认证,所以一般针对每一种邮箱都需要去测试一下各自的认证参数
suhaibolove 2008-11-08
  • 打赏
  • 举报
回复
看看下面的例子吧,下面是发送邮件的例子:



package com.shobos.email;

import java.util.Properties;
import java.util.Random;

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;

public class SendMail {

/**
*
* @param from 来自于哪里
* @param to 发送的目标地址
* @param subject 发送主题
* @param bodyContent 发送内容
*/
public static void sendEmail(String from, String to, String subject,
String bodyContent) {

final String emailUserName = ""; //自己的邮箱地址
final String emailUserPass = ""; //自己的邮箱密码
try {
Properties props = System.getProperties();
props.put("mail.smtp.host", "smtp.163.com");
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
emailUserName, emailUserPass);
}
});
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(
to));

message.setSubject(subject);
message.setContent(bodyContent, "text/html;charset=utf-8");

message.saveChanges();
Transport.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String[] array = new String[] { "哈", "和", "嘻", "我", "你", "他", "世", "界",
"非", "爱", "常", "谭", "最", "谈", "笑", "疯", "声", "挥", "斥", "方",
"遒", "邻", "居", "中", "文", "家", "乡", "稻", "田", "中", "绿", "油",
"油", "的", "禾", "苗", "在", "春", "风", "的", "浮", "动", "下", ",",
"向", "农", "民", "叔", "叔", "阿", "姨", "招", "手", "像", "是", "在",
"说", "我", "已", "经", "健", "康", "茁", "壮", "的", "成", "长", "了",
"你", "们", "放", "心", "吧", "到", "时", "候", "我", "会", "给", "大",
"家", "带", "来", "惊", "奇", "这", "时", "太", "阳", "懒", "洋", "洋",
"的", "从", "云", "朵", "中", "爬", "了", "出", "来", "这", "给", "了",
"大", "地", "淋" };
int i = 0;
Random rand = new Random();
String from = "";
String to = "";
while (i < 5) {
String str = "";
for (int j = 0; j < 10; j++) {
int r = rand.nextInt(100 - 1) + 1;
str += array[r];
}
i++;
sendEmail(from, to, i + " hello "
+ i, str);
System.out.println("i------" + i);
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}
}
  • 打赏
  • 举报
回复
javax.mail.Authenticator的继承类是javax.mail.PasswordAuthentication
PasswordAuthentication passwordAuth=new PasswordAuthentication(username,password);
  • 打赏
  • 举报
回复
Session session = Session.getDefaultInstance(props, null);
后面的null参数,要传递javax.mail.Authenticator的一个实例
阳二快跑 2008-11-08
  • 打赏
  • 举报
回复
Permission denied.禁止访问??
zhtoad 2008-11-07
  • 打赏
  • 举报
回复
要是有一个例子,登陆smtp.163.com,直接更改一下用户名和密码就能发出一份最简单的邮件就好了
谢谢

62,614

社区成员

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

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