大家来看看,这里发邮件还缺什么没。。。。。。。。。。。。。。。。

milkbread 2003-10-20 01:19:40
我搜索查看了相应的文章,看不出自己程序还缺什么;resin里显示邮件服务器已连上,认证已通过:"DEBUG:SMTPTransport connected to host "smtp.163.com",port:25"
"DEBUG SMTP SENT:emhlbmdnYg== "
"DEBUG SMTP RCVD:235 Authentication successful"
。。。
相关代码如下:

sendmail.java
---------------------
package com.ecncc.client.javamail;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import com.ecncc.util.*;
import com.jspsmart.upload.*;
import com.ecncc.client.javamail.bean.*;
import com.mail.*;
import com.activation.*;

/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/

public class sendmail extends HttpServlet{

public void init() throws ServletException
{
}
static final private String CONTENT_TYPE = "text/html; charset=GBK";
int editman_sn = -1;
private ServletConfig config;

/**
* Init the servlet
*/
final public void init(ServletConfig config) throws ServletException
{
this.config = config;
}

final public ServletConfig getServletConfig()
{
return config;
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();



int count=0;
SmartUpload mySmartUpload = new SmartUpload();
mySmartUpload.initialize(config,request,response);

String smtp = "";
String from = "";
String to = "";
String cc = "";
String bcc = "";
String subject="" ;
String body= "";

//smtp = request.getParameter("smtp");
smtp = mySmartUpload.getRequest().getParameter("smtp");
from = mySmartUpload.getRequest().getParameter("from");
to = mySmartUpload.getRequest().getParameter("to");
cc = mySmartUpload.getRequest().getParameter("cc");
bcc = mySmartUpload.getRequest().getParameter("bcc");
subject = mySmartUpload.getRequest().getParameter("subject");
body = mySmartUpload.getRequest().getParameter("body");

System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>the to is:"+to);

mailbean one = new mailbean();

// one.setsmtp(smtp);
one.setfrom(from);
one.setto(to);
// one.setcc(cc);
// one.setbcc(bcc);
one.setsubject(subject);
one.setbody(body);

//one.mailtijiao();



com.ecncc.client.javamail.HTML.send(from,to,subject,body);




response.sendRedirect("/html/zltz/jsp/javamail.jsp");

}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



HTML.java
-------------------------------
package com.ecncc.client.javamail;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import com.ecncc.util.*;
import com.jspsmart.upload.*;
import com.ecncc.client.javamail.bean.*;
import com.mail.*;
import com.activation.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/

public final class HTML{
public static String send(
// String smtp, /*SMTP主机地址*/
String from, /*发信人*/
String to, /*收信人*/
// String cc, /*抄送人*/
// String bcc, /*暗送人*/
String subject, /*主题*/
String body /*内容*/
) {

//变量声明
javax.mail.Session psession;
javax.mail.internet.MimeMessage mesg;
Properties props=new Properties();
props.put("mail.smtp.host","smtp.163.com");//这里填入smtp
props.put("mail.smtp.auth","true");
javax.mail.Session s=javax.mail.Session.getInstance(props);//根据属性新建一个邮件会话
s.setDebug(true);
try
{
mesg=new javax.mail.internet.MimeMessage(s); //创建一个邮件
mesg.setFrom(new javax.mail.internet.InternetAddress(from));//设置发信人
if(to!=null)
{
mesg.setRecipients(javax.mail.Message.RecipientType.TO,javax.mail.internet.InternetAddress.parse(to));
}//设置收信人
mesg.setSubject(subject,"gb2312");//设置邮件主题
mesg.setDataHandler(new javax.activation.DataHandler(new com.ecncc.client.javamail.
StringDataSource(body,"text/html"))); //设置邮件内容
javax.mail.Transport transport = s.getTransport("smtp");
transport.connect("smtp.163.com", "*****","*****");//这里是我再163.com邮箱的用户名和密码
transport.send(mesg); //最后发送邮件
}
catch(Exception e)
{
return "发送邮件失败:" + e.getMessage();
}
return "";
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`



StringDataSource.java
--------------------------
package com.ecncc.client.javamail;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import com.ecncc.util.*;
import com.jspsmart.upload.*;
import com.ecncc.client.javamail.bean.*;
import com.mail.*;
import com.activation.*;

/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/

public class StringDataSource implements javax.activation.DataSource{
private java.lang.String data;
private java.lang.String type;

public StringDataSource(java.lang.String data,java.lang.String type){
this.data = data;
this.type = type;
}

public java.io.InputStream getInputStream() throws java.io.IOException{
return new java.io.StringBufferInputStream(data);
}

public java.io.OutputStream getOutputStream() throws java.io.IOException{
throw new java.io.IOException("it does not support this method now!");
}

public java.lang.String getContentType(){
return type;
}

public java.lang.String getName(){
return "jaf";
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

当然,还有一个.jsp文件(这里没写出),把“收信人、发信人、主题、内容”传过来(参数穿过来没问题的);但点击发送按钮后,程序也运行了,resin里也看到开头所说
的连接、认证等信息,但邮箱里就是收不到信,这是为什么?!有大侠在的话帮我一把,是不是程序的问题还是其它什么问题,谢谢了!!!




...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
X路人甲X 2003-10-21
  • 打赏
  • 举报
回复
给你一个Bean文件,用的时候只要调用里面的一个方法就可以了,前提是要下个javaMail包放到你的lib里.

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

public class SimpleMail
{

private boolean p=false,q=false;
public static Boolean checkmail(String mail)
{
boolean l=true;
if(mail!=null && mail.indexOf("@")!=-1 && mail.indexOf("@")!=0 && mail.indexOf(".")!=-1)l=true;
else l=false;
return l;
}


public void sendMail(String mf,String mt,String ms,String mc,String m_server,String m_user,String m_pswd)//mf:发送方;mt:接收方;ms:邮件标题,mc:邮件内容,m_server:MAIL服务器,m_user:用户名,m_pswd,密码;
{
p=checkmail(mf);
if(!p)System.out.println("发送方邮件地址有误!");
q=checkmail(mt);
if(!q)System.out.println("接受方邮件地址有误!");

if(p && q)
{
try
{

Properties props=new Properties();
props.put("mail.smtp.host",m_server);
props.put("mail.smtp.auth","true");

Session newSession=Session.getInstance(props);


MimeMessage message=new MimeMessage(newSession);

InternetAddress from=new InternetAddress(mf);
message.setFrom(from);
InternetAddress sto=new InternetAddress(mt);
message.setRecipient(Message.RecipientType.TO,sto);
message.setSubject(ms);
message.setSentDate(new Date());

BodyPart mdp=new MimeBodyPart();
mdp.setContent(mc,"text/html;charset=gb2312");
Multipart mm=new MimeMultipart();
mm.addBodyPart(mdp);
message.setContent(mm);

message.saveChanges();
Transport transport=newSession.getTransport("smtp");
transport.connect(m_server,m_user,m_pswd);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
}catch(MessagingException e)
{
System.out.println(e.toString());
}
}
}

}

调用的时候只要调用sendMail并把里面的参数填齐就可以了
squallzeng 2003-10-21
  • 打赏
  • 举报
回复
偶不会啊,帮楼主顶,学习中!!!!
milkbread 2003-10-20
  • 打赏
  • 举报
回复
火大!!!!!!!!!!!晕。。。。。。。。。。。。。。
milkbread 2003-10-20
  • 打赏
  • 举报
回复
什么叫“手工发一封”?

还有,发邮件是不是自动调用到c:\winnt\system32下的sendmail.dll文件?我运行后没调用嘛。
hajavaor 2003-10-20
  • 打赏
  • 举报
回复
你用telnet连接smtp.163.com,手工发一封信试试,看看能不能成功。
具体的用法看相关的rfc.
milkbread 2003-10-20
  • 打赏
  • 举报
回复
没人知道???
milkbread 2003-10-20
  • 打赏
  • 举报
回复
大侠们救救我啊。。。
milkbread 2003-10-20
  • 打赏
  • 举报
回复
哦,还有一个mailbean.java,在sendmail.java里用到的,没写出

这个发邮件问题困扰我很久了,我也查看了网上的相关文章,看不出自己的还缺什么,但程序运行就是没报错,邮箱里也就是没收到信,急。。。

81,090

社区成员

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

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