2010-06-03 73 views
2
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import javax.mail.*; 
import javax.mail.internet.*; 
import javax.mail.event.*; 
import java.net.*; 
import java.util.*; 
public class servletmail extends HttpServlet 
{ 
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 
{ 
PrintWriter out=response.getWriter(); 
response.setContentType("text/html"); 
try 
{ 
Properties props=new Properties(); 
props.put("mail.transport.protocol", "smtp"); 
props.put("mail.smtp.host","smtp.gmail.com"); 
props.put("mail.smtp.port", "25"); 
props.put("mail.smtp.auth", "true"); 
Authenticator authenticator = new Authenticator() 
    { 
    protected PasswordAuthentication getPasswordAuthentication() 
     { 
     return new PasswordAuthentication("user", "pass"); 
    } 
}; 
Session sess=Session.getDefaultInstance(props,authenticator); 
Message msg=new MimeMessage(sess); 
msg.setFrom(new InternetAddress("[email protected]")); 
msg.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]")); 
msg.setSubject("Hello JavaMail"); 
msg.setText("Welcome to JavaMail"); 
Transport.send(msg); 
out.println("mail has been sent"); 
} 
catch(Exception e) 
{ 
System.out.println("err"+e); 
} 
} 
}

IM与上述IM刚开d以下错误工作帮助用JavaMail API

servletmail.java:22: reference to Authenticator is ambiguous, both class java.ne 
t.Authenticator in java.net and class javax.mail.Authenticator in javax.mail mat 
ch 
Authenticator authenticator = new Authenticator() 
^ 
servletmail.java:22: reference to Authenticator is ambiguous, both class java.ne 
t.Authenticator in java.net and class javax.mail.Authenticator in javax.mail mat 
ch 
Authenticator authenticator = new Authenticator() 
           ^
2 errors 

我已按照

http://java.sun.com/developer/onlineTraining/JavaMail/contents.html

的例子,我应该如何得到output..will上面的代码...工作 有什么变化,需要作出..使用雷鸟smtp服务器

回答

7

该错误指示有两个可能的Authenticator类别在此处被引用 - 即错误说明为java.net.Authenticator and javax.mail.Authenticator

这是因为你已经导入了java.net。*和javax.mail。*,编译器不知道你需要哪个Authenticator

通过明确进口

import javax.mail.Authenticator; 

资格认证者上线22

javax.mail.Authenticator authenticator = new javax.mail.Authenticator() 

UPDATE

既然你有PROBL修复此ems发送邮件,首先检查您的网络管理员是否授予您连接到Gmail的smtpserver的权限。你是否支持代理?在消息sess.setDebug(true);

看看,看看你走多远:

创建sess后,加入这一行的代码。

尝试在给定其他调试提示:http://java.sun.com/products/javamail/FAQ.html#debug

更新2

我试着运行你的代码,它为我工作,包括发送电子邮件。 我不得不这样return new PasswordAuthentication("user", "pass");添加一行道具

props.put("mail.smtp.starttls.enable","true"); 

,当然还有,改变你的实际用户名/密码。 和“[email protected]”到您的实际电子邮件ID。

+0

我改变了代码,这...这工作没有错误,罚款...但发送邮件的心不是我检查收件箱,但没有邮件... !!什么问题

javax.mail.Authenticator authenticator = new javax.mail.Authenticator() \t { protected javax.mail.PasswordAuthentication getPasswordAuthentication() \t \t { return new javax.mail.PasswordAuthentication("[email protected]", "pass"); } };
simplyblue 2010-06-03 06:34:01

+0

@bobby - 见我的更新 – JoseK 2010-06-03 08:15:18

+0

hhey im仍然得到相同的error.isssue starttls命令。 – simplyblue 2010-06-03 09:33:25