关于发送邮件的问题请各位GGJJ帮忙!!

wangwei8117 2004-06-08 03:25:53
在一个javaBean中写了发送邮件的程序,可是邮件服务器都是要验证的,不知道怎么处理,不懂怎么才能验证.请各位指点一下.程序如下:

import sun.net.smtp.SmtpClient;
public class sendEmailBean
{
......
......
public boolean Send()
{
try
{
SmtpClient mail=new SmtpClient(server);
mail.from(from); //发送者地址
mail.to(to); //接收者地址
java.io.PrintStream mailout=mail.startMessage();
mailout.println("From:"+from);

mailout.println("Subject:"+subject);

mailout.println(content); //发送的内容
mailout.print("\r\n");
mailout.flush();
mailout.close();
mail.closeServer();
this.IsSend=true;
}
catch(Exception e)
{
System.out.print("Error:"+e.toString());
this.IsSend=false;
}
return this.IsSend;
}
}
错误提示如下:
sun.net.smtp.SmtpProtocolException:553 You are not authorized to send mail as <mail from:<ww0138@tom.com>>,authentication is required
中间的邮箱是我在tom上的邮箱,也试过登陆邮箱后发送,还是不行,用别的邮箱也都是这个问题,不知哪位能给予指点!
...全文
332 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiyonggang 2004-06-12
  • 打赏
  • 举报
回复
你用这个试,可以发送的,对了,你怎么知道还有jj?我女朋友就是,我是gg,呵呵
package com.oa.mail;

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import javax.activation.*;
import java.io.*;

/**
* <p>Title: 电子政务系统</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author 史永刚
* @version 1.0
*/

public class sendMail {

private MimeMessage mimeMsg; //MIME邮件对象

private Session session; //邮件会话对象
private Properties props; //系统属性
private boolean needAuth = false; //smtp是否需要认证

private String username = ""; //smtp认证用户名和密码
private String password = "";

private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象

/**
*
*/
public sendMail() {
// setSmtpHost(getConfig.mailHost); //如果没有指定邮件服务器,就从getConfig类中获取
createMimeMessage();
}

public sendMail(String smtp) {
setSmtpHost(smtp);
createMimeMessage();
}

/**
* @param hostName String
*/
public void setSmtpHost(String hostName) {
System.out.println("设置系统属性:mail.smtp.host = " + hostName);
if (props == null) {
props = System.getProperties(); //获得系统属性对象

}
props.put("mail.smtp.host", hostName); //设置SMTP主机
}

/**
* @return boolean
*/
public boolean createMimeMessage() {
try {
System.out.println("准备获取邮件会话对象!");
session = Session.getDefaultInstance(props, null); //获得邮件会话对象
}
catch (Exception e) {
System.err.println("获取邮件会话对象时发生错误!" + e);
return false;
}

System.out.println("准备创建MIME邮件对象!");
try {
mimeMsg = new MimeMessage(session); //创建MIME邮件对象
mp = new MimeMultipart();

return true;
}
catch (Exception e) {
System.err.println("创建MIME邮件对象失败!" + e);
return false;
}
}

/**
* @param need boolean
*/
public void setNeedAuth(boolean need) {
System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);
if (props == null) {
props = System.getProperties();

}
if (need) {
props.put("mail.smtp.auth", "true");
}
else {
props.put("mail.smtp.auth", "false");
}
}

/**
* @param name String
* @param pass String
*/
public void setNamePass(String name, String pass) {
username = name;
password = pass;
}

/**
* @param mailSubject String
* @return boolean
*/
public boolean setSubject(String mailSubject) {
System.out.println("设置邮件主题!");
try {
mimeMsg.setSubject(mailSubject);
return true;
}
catch (Exception e) {
System.err.println("设置邮件主题发生错误!");
return false;
}
}

/**
* @param mailBody String
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(
"<meta http-equiv=Content-Type content=text/html; charset=gb2312>" +
mailBody, "text/html;charset=GB2312");
mp.addBodyPart(bp);

return true;
}
catch (Exception e) {
System.err.println("设置邮件正文时发生错误!" + e);
return false;
}
}

/**
* @param name String
* @param pass String
*/
public boolean addFileAffix(String filename) {

System.out.println("增加邮件附件:" + filename);

try {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());

mp.addBodyPart(bp);

return true;
}
catch (Exception e) {
System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
return false;
}
}

/**
* @param name String
* @param pass String
*/
public boolean setFrom(String from) {
System.out.println("设置发信人!");
try {
mimeMsg.setFrom(new InternetAddress(from)); //设置发信人
return true;
}
catch (Exception e) {
return false;
}
}

/**
* @param name String
* @param pass String
*/
public boolean setTo(String to) {
if (to == null) {
return false;
}

try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
return true;
}
catch (Exception e) {
return false;
}

}

/**
* @param name String
* @param pass String
*/
public boolean setCopyTo(String copyto) {
if (copyto == null) {
return false;
}
try {
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copyto));
return true;
}
catch (Exception e) {
return false;
}
}

/**
* @param name String
* @param pass String
*/
public boolean sendout() {
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件....");

Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect( (String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
//transport.send(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));

System.out.println("发送邮件成功!");
transport.close();

return true;
}
catch (Exception e) {
System.err.println("邮件发送失败!" + e);
return false;
}
}

/**
* Just do it as this
*/
public static void main(String[] args) {

// String mailbody =
// "<meta http-equiv=Content-Type content=text/html; charset=gb2312>" +
// "<div align=center><a href=http://www.csdn.net> csdn </a></div>";
String mailbody = "这是测试";

sendMail themail = new sendMail("smtp.126.com");
themail.setNeedAuth(true);

if (themail.setSubject("测试") == false) {
return;
}
if (themail.setBody(mailbody) == false) {
return;
}
if (themail.setTo("shiyonggang2004@126.com") == false) {
return;
}
if (themail.setFrom("shiyonggang2004@126.com") == false) {
return;
}
// if (themail.addFileAffix("c:\\boot.ini") == false) {
// return;
// }
themail.setNamePass("用户名", "密码");

if (themail.sendout() == false) {
return;
}
}
}
wangwei8117 2004-06-12
  • 打赏
  • 举报
回复
我用的类没有让写密码的地方啊,请指点怎么写邮箱的名称和密码吧,上面的我还不知道要导入哪写类,能不能把代码写的具体点啊
aaassd 2004-06-11
  • 打赏
  • 举报
回复
String tto=request.getParameter("to");
String ttitle=request.getParameter("title");
String emailtype=request.getParameter("emailtype");//获取email类型
String tcontent=request.getParameter("content");
String tfj1=request.getParameter("fj1");
String tfj2=request.getParameter("fj2");
//String tfj3=request.getParameter("fj3");//附件3

Properties props=new Properties();
props.put("mail.smtp.host","smtp.163.net");
props.put("mail.smtp.auth","true");
Session s=Session.getInstance(props);
s.setDebug(true);

MimeMessage message=new MimeMessage(s);

//给消息对象设置发件人/收件人/主题/发信时间
InternetAddress from=new InternetAddress("xindeman@163.net");
message.setFrom(from);
InternetAddress to=new InternetAddress(tto);
message.setRecipient(Message.RecipientType.TO,to);
message.setSubject(ttitle);
message.setSentDate(new Date());

Multipart mm=new MimeMultipart();//新建一个MimeMultipart对象用来存放多个BodyPart对象

//设置信件文本内容
BodyPart mdp=new MimeBodyPart();//新建一个存放信件内容的BodyPart对象
mdp.setContent(tcontent,emailtype+";charset=gb2312");//给BodyPart对象设置内容和格式/编码方式
mm.addBodyPart(mdp);//将含有信件内容的BodyPart加入到MimeMultipart对象中

//设置信件的附件1(自定义附件:直接将所设文本内容加到自定义文件中作为附件发送)
mdp=new MimeBodyPart();//新建一个存放附件的BodyPart
DataHandler dh=new DataHandler(tfj1,"text/plain;charset=gb2312");
//新建一个DataHandler对象,并设置其内容和格式/编码方式
mdp.setFileName("text.txt");//加上这句将作为附件发送,否则将作为信件的文本内容
mdp.setDataHandler(dh);//给BodyPart对象设置内容为dh
mm.addBodyPart(mdp);//将含有附件的BodyPart加入到MimeMultipart对象中

//设置信件的附件2(用本地上的文件作为附件)
if(tfj2 != null){
mdp=new MimeBodyPart();
FileDataSource fds=new FileDataSource(tfj2);
dh=new DataHandler(fds);
int ddd=tfj2.lastIndexOf("\\");
String fname=tfj2.substring(ddd);//提取文件名
String ffname=new String(fname.getBytes("gb2312"),"ISO8859-1");//处理文件名是中文的情况
mdp.setFileName(ffname);//可以和原文件名不一致,但最好一样
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);
}
//设置信件的附件3(用远程文件作为附件)

message.setContent(mm);//把mm作为消息对象的内容

//这里可能是你想要的:
message.saveChanges();
Transport transport=s.getTransport("smtp");
transport.connect("smtp.163.net","username","password");
transport.sendMessage(message,message.getAllRecipients());
transport.close();
tianboguang 2004-06-11
  • 打赏
  • 举报
回复
你的邮箱名和密码都没有写呀,当然不行了。
否则任何人都可以利用它发垃圾邮件了。
wangwei8117 2004-06-11
  • 打赏
  • 举报
回复
怎么一直没有人解答呢,郁闷啊
wangwei8117 2004-06-08
  • 打赏
  • 举报
回复
你的这个好象太复杂了了吧.我只要把邮件发送出去,不需要那么多的东西的
我的那个为什么不行呢,你的这个好象也错误太多啊,要导入哪些类包啊,能不能给的点啊.
谁能告诉我我的那个为什么不行啊,怎么验证啊.
SportsBaby 2004-06-08
  • 打赏
  • 举报
回复
java.util.Properties props; //系统属性
javax.mail.Session mailSession; //邮件会话对象
javax.mail.internet.MimeMessage mimeMsg; //MIME邮件对象

//设置系统属性
props = java.lang.System.getProperties(); //获得系统属性对象
props.put("mail.smtp.host",smtp); //设置SMTP主机

//获得邮件会话对象
mailSession = javax.mail.Session.getDefaultInstance(props,null);

//创建MIME邮件对象
mimeMsg = new javax.mail.internet.MimeMessage(mailSession);

//设置发信人
mimeMsg.setFrom(new javax.mail.internet.InternetAddress(from));

//设置收信人
javax.mail.internet.InternetAddress[] address = new javax.mail.internet.InternetAddress[to.length];
for (int i = 0; i<to.length; ++i)
{
address[i] = new javax.mail.internet.InternetAddress(to[i]);
}
mimeMsg.setRecipients(javax.mail.Message.RecipientType.TO,address);

//设置抄送人
if(cc!=null)
{
mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,javax.mail.internet.InternetAddress.parse(cc));
}

//设置暗送人
if(bcc!=null)
{
mimeMsg.setRecipients(javax.mail.Message.RecipientType.BCC,javax.mail.internet.InternetAddress.parse(bcc));
}

//设置邮件主题
mimeMsg.setSubject(subject,"ISO8859-1");

//设置邮件内容
//mimeMsg.setText(body);
mimeMsg.setDataHandler(new javax.activation.DataHandler(new ByteArrayDataSource(body,"text/html")));
javax.mail.Transport transport = mailSession.getTransport("smtp");
//发送邮件
transport.send(mimeMsg);
}

81,091

社区成员

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

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