Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaMail消息传递异常_Java_Jakarta Mail - Fatal编程技术网

JavaMail消息传递异常

JavaMail消息传递异常,java,jakarta-mail,Java,Jakarta Mail,我编写了一个使用JavaMail API发送Gmail的程序。以下是我的代码: import java.util.*; import javax.mail.*; import javax.activation.*; import javax.mail.internet.*; import javax.mail.Session; import javax.mail.Transport; class emailSend{ public static void main(String[] a

我编写了一个使用JavaMail API发送Gmail的程序。以下是我的代码:

import java.util.*;
import javax.mail.*;
import javax.activation.*;
import javax.mail.internet.*;
import javax.mail.Session;
import javax.mail.Transport;

class emailSend{
    public static void main(String[] args) {
        String recipient = "receiver@gmail.com";
        String sender = "sender@gmail.com";
        String host = "smtp.gmail.com";
        Properties props = System.getProperties();
        props.put("mail.smtp.host",host);
        props.put("mail.smtp.user", sender);
        props.put("mail.smtp.password", "password");
        props.put("mail.smtp.port", "465"); 
        props.put("mail.smtp.auth", "true");
        Session session = Session.getDefaultInstance(props);

        try
        {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(sender));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
            message.setSubject("This is the subject");
            message.setText("This the message");
            Transport transport = session.getTransport("smtp");
            transport.connect("smtp.gmail.com",465,"sender01@gmail.com", "password");
            transport.sendMessage(message, message.getAllRecipients());
            System.out.println("Mail successfully sent");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}
但我得到了以下错误:

javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2197)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:740)
at javax.mail.Service.connect(Service.java:366)
at emailSend.main(emailSend.java:29)
我试图禁用防火墙,但没有用。 我该怎么办

添加属性:

props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.ssl.checkserveridentity", "true");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.debug", "true");
props.put("mail.smtp.EnableSSL.enable", "true");
props.put("mail.smtp.socketFactory.fallback", "false");

您需要配置您的Gmail帐户安全性,以允许它从您的应用程序发送电子邮件

这是我的工作代码

      Properties props = new Properties();    
      props.put("mail.smtp.host", "smtp.gmail.com");    
      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"); 

      //get Session   
       Session session = Session.getDefaultInstance(props,    
       new javax.mail.Authenticator() {    
       protected PasswordAuthentication getPasswordAuthentication() {    
       return new PasswordAuthentication( from, password);  
       }    
      });    

      //compose message    
        try {    
       MimeMessage message = new MimeMessage(session);    
       message.addRecipient(Message.RecipientType.TO,new InternetAddress(recepient));    
       message.setSubject(subject); 

       BodyPart messageBodyPart = new MimeBodyPart();
       messageBodyPart.setContent(msg, "text/html");
       Multipart multipart = new MimeMultipart();
       multipart.addBodyPart(messageBodyPart);
       messageBodyPart = new MimeBodyPart();
       DataSource source = new FileDataSource(filename);
       messageBodyPart.setDataHandler(new DataHandler(source));
       messageBodyPart.setFileName(filename);
       multipart.addBodyPart(messageBodyPart);
       message.setContent(multipart); 
       Transport.send(message);  

      } catch (MessagingException e) {throw new RuntimeException(e);}