2010-06-03 62 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