[英]Sending an email from java
I am using the JavaMail – GMail
via TLS
approach from below link to send mail from java application.我正在使用下面链接中的JavaMail – GMail
via TLS
方法从 Java 应用程序发送邮件。
when I am trying to do that I am getting the below Exception so can someone tell me what I need to do for making successful connection in order to send an email.当我尝试这样做时,我得到了以下异常,所以有人可以告诉我我需要做什么才能成功连接以发送电子邮件。
javamail-api-sending-email-via-gmail-smtp-example link javamail-api-sending-email-via-gmail-smtp-example 链接
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 905, response: -1
at com.pr.SendMailTLS.main(SendMailTLS.java:48)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 905, response: -1
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1215)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:322)
at javax.mail.Service.connect(Service.java:258)
at javax.mail.Service.connect(Service.java:137)
at javax.mail.Service.connect(Service.java:86)
at javax.mail.Transport.send0(Transport.java:150)
at javax.mail.Transport.send(Transport.java:80)
at com.pr.SendMailTLS.main(SendMailTLS.java:43)
you need to make a note of this:您需要记下这一点:
Outgoing Mail (SMTP) Server
requires TLS or SSL: smtp.gmail.com (use authentication)
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465
Since your using TLS, use the port - 587.由于您使用 TLS,请使用端口 - 587。
in your java code:在你的java代码中:
final String username = "yoruusername@gmail.com";
final String password = "yorupasswors";
//set the following configs as follows
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.port", "587");
Also go to this gmail settings link.另请访问此 gmail 设置链接。 : :
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SendMail extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
resp.setContentType("text/html");
PrintWriter out=resp.getWriter();
String to=req.getParameter("to");
String subject=req.getParameter("sub");
String message=req.getParameter("msg");
Mailer.send(to,subject,message);
out.print("message has been send successfully");
out.close();
}
}
enter code here
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Mailer {
public static void send(String to,String sub,String msg)
{
String host="smtp.gmail.com";
final String user="abc@gmail.com";
final String pass="123456";
Properties props=new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth","true");
props.put("mail.smtp.port","465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user,pass);
}
});
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
message.setSubject(sub);
message.setText(msg);
Transport.send(message);
System.out.println("done");
} catch (MessagingException e)
{
e.printStackTrace();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.