繁体   English   中英

从java发送电子邮件

[英]Sending an email from java

我正在使用下面链接中的JavaMail – GMail via TLS方法从 Java 应用程序发送邮件。

当我尝试这样做时,我得到了以下异常,所以有人可以告诉我我需要做什么才能成功连接以发送电子邮件。

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)

您需要记下这一点:

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 

由于您使用 TLS,请使用端口 - 587。

在你的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");

另请访问此 gmail 设置链接。

  • 在“密码”下,禁用两步验证。
  • 在“帐户权限”下,启用“访问不太安全的应用程序”

发送邮件.java

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();
        }
}

邮件程序.java

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM