Отправка электронной почты с использованием кода Java - PullRequest
0 голосов
/ 05 июня 2018

Доброе утро.У меня вопрос .Я хочу отправить электронную почту через Gmail, используя Eclipse oxygen.3 марта 2018 года.Я использовал две банки: mail-1.4.7 и активация 1.1.1.И я разрешил менее безопасный доступ к моей учетной записи Gmail.это мой код:

package Login_sys;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class EmailSend {
final String emailSMTPserver = "smtp.gmail.com"; 
final String emailServerPort = "587";
String receiverEmail = null;
String emailSubject = null;
String emailBody = null;
String from = null ;
String password = null ;

public  EmailSend(String from,String password,String subject ,String message,String to)
{

    this.from = from ;
    this.password = password ; 
    this.emailSubject = subject ; 
    this.emailBody = message ;
    this.receiverEmail = to ;

    Properties props = System.getProperties();
    props.put("mail.smtp.user", from);
    props.put("mail.smtp.host", emailSMTPserver);
    props.put("mail.smtp.port", emailServerPort);
    props.put("mail.smtp.starttls.enable","true");
    props.put("mail.smtp.password", password);
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.socketFactory.port", emailServerPort);
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    SecurityManager security = System.getSecurityManager();

    try 
    {
          Authenticator auth = new SMTPAuthenticator();
            Session session = Session.getInstance(props, auth);

            Message msg = new MimeMessage(session);
            msg.setText(emailBody);
            msg.setSubject(emailSubject);
            msg.setFrom(new InternetAddress(from));
            msg.addRecipient(Message.RecipientType.TO,
                    new InternetAddress(receiverEmail));
            Transport.send(msg);
            System.out.println("send successfully");
        } catch (Exception ex) {
            System.err.println("Error occurred while sending.!");
        }

    }

private class SMTPAuthenticator extends javax.mail.Authenticator {

    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(from , password);
    }
}}

Я звоню из другого класса:

 EmailSend f = new EmailSend ("******@gmail.com","*****","Testing","testin  
 email","****@gmail.com"); 

он всегда печатает: при отправке произошла ошибка.!,Я не знаю, где моя ошибка

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Чтобы исправить SSLHandshakeException, вам необходимо обновить cacerts в JAVA_HOME/jre/lib/security.Получить копию InstallCert.java.Посмотрите здесь: InstallCert.java

Вы можете либо поместить jssecacerts под /lib/security, либо использовать KeyStore Explorer, экспортировать сертификат из jssecacerts и импортировать его в cacerts.

0 голосов
/ 05 июня 2018

Вы установили неправильный номер порта.Измените его на:

final String emailServerPort = "465";

SMTP-порт Gmail (TLS): 587

SMTP-порт Gmail (SSL): 465

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...