[英]Error in sending mail in java/servlet
I am trying to send email
using java
. 我正在尝试使用
java
发送email
。 But I face error like below 但是我遇到如下错误
javax.mail.AuthenticationFailedException: failed to connect, no password specified
javax.mail.AuthenticationFailedException:连接失败,未指定密码
Why am I getting this error when I have passed the correct email-id and password for authentication? 通过正确的身份验证电子邮件和密码后,为什么会出现此错误?
This is my code 这是我的代码
import java.io.IOException;
import java.net.PasswordAuthentication;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class TestMail
*/
@WebServlet("/TestMail")
public class TestMail extends HttpServlet {
private static final long serialVersionUID = 1L;
public TestMail() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
todo(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
todo(request,response);
}
private void todo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf8");
response.setCharacterEncoding("utf8");
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host","smtp.gmail.com");
props.put("mail.smtp.post","587");
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
"testing@gmail.com", "testing123");
}
});
Message message=new MimeMessage(session);
try {
message.setFrom(new InternetAddress("testing@gmail.com","hello"));
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("testing@gmail.com"));
message.setSubject("Testing Email");
message.setText("hello this is testing mail \n \n Congrets");
Transport.send(message);
System.out.println("Mail Sent Successfully");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
The JavaMail Authenticator is found in the javax.mail package and is different from the java.net class of the same name. JavaMail Authenticator可在javax.mail包中找到,并且与同名的java.net类不同。 The two don't share the same Authenticator as the JavaMail API works with Java 1.1, which didn't have the java.net variety.
两者不共享相同的Authenticator,因为JavaMail API与Java 1.1(不具有java.net品种)一起使用。
Refer this : http://www.rgagnon.com/javadetails/java-0538.html 请参阅: http : //www.rgagnon.com/javadetails/java-0538.html
1) Please use proper jar files for POP3 emails: 1)请为POP3电子邮件使用正确的jar文件:
import java.util.Properties;
import javax.activation.*;
import javax.mail.*;
2) And then build your message: 2)然后建立您的讯息:
Properties props = new Properties();
props.put("mail.smtp.host", <mail_server>);
props.put("mail.smtp.port", <port>);
props.put("mail.smtp.user", <user>);
props.put("mail.smtp.password", <pw>);
props.put("mail.smtp.auth", <logon>);
props.put("mail.from", <from>);
Session session = Session.getInstance(props, null);
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom();
msg.setRecipients(Message.RecipientType.TO, <email_to>);
msg.setRecipients(Message.RecipientType.CC, <email_cc>);
msg.setRecipients(Message.RecipientType.BCC, <email_bcc>);
msg.setSubject(x_subject, Globals.q_UNICODE_MAIL);
msg.setSentDate(new Date());
msg.setHeader("Disposition-Notification-To", x_from);
//
//<build your Multipart message>
//
3) Finally, connect and send: 3)最后,连接并发送:
Transport transport = session.getTransport("smtp");
if ( <logon_required> ) {
transport.connect(<mail_server>, <user>, <pw>);
}
transport.sendMessage(msg, msg.getAllRecipients());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.