java身份认证接口调试,javamail API中的SMTP身份验证问题

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("abc@gmail.com"));

msg.addRecipient(Message.RecipientType.TO, new InternetAddress("abc@gmail.com"));

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 working with above im gettin d following error

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

i have followed the example in

how should i get the output..will the above code...work

what are the changes that need to be made..im using thunderbird smtp server

解决方案

The error indicates that there are two possible Authenticator classes which are being referenced here - namely java.net.Authenticator and javax.mail.Authenticator as the error says.

This is because you have imported java.net.* and javax.mail.* and the compiler does not know which Authenticator you need.

Fix this by explicitly importing

import javax.mail.Authenticator;

OR qualify the Authenticator on line 22 as

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

UPDATE

Since you are having problems with sending the mail, first check whether your network admins have given you permissions to connect to the smtpserver at gmail. Are you behind a proxy?

After creating sess, add this line to the code: sess.setDebug(true);

Look at the messages and see how far you get.

UPDATE 2

I've tried running your code and it works for me including sending the email.

I had to add one line for props

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

And of course, change this return new PasswordAuthentication("user", "pass"); to your actual username/password.

And "abc@gmail.com" to your actual email id.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值