Moet eerst een STARTTLS-commando geven

Ik gebruik dit eenvoudige voorbeeld met mijn Gmail-account, maar het werkt niet en geeft de volgende foutmelding:

     send failed, exception: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. nv2sm4478384pbb.6      

Hier is mijn code

  public class Email
{
   public static void main(String [] args)
   {
       Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.googlemail.com");
        props.put("mail.from", "[email protected]");
          Session session = Session.getInstance(props, null);
        try {
            MimeMessage msg = new MimeMessage(session);
            msg.setFrom();
            msg.setRecipients(Message.RecipientType.TO,
                              "[email protected]");
            msg.setSubject("JavaMail hello world example");
            msg.setSentDate(new Date());
            msg.setText("Hello, world!\n");
            Transport.send(msg);
        } catch (MessagingException mex) {
            System.out.println("send failed, exception: " + mex);
        }
   }
}

Antwoord 1, autoriteit 100%

U probeert waarschijnlijk de Gmail-servers op poort 25 te gebruiken om e-mail te bezorgen bij een derde partij via een niet-geverifieerde verbinding. Gmail laat je dit niet doen, omdat iedereendan de Gmail-servers zou kunnen gebruiken om e-mail naar iemand anders te sturen. Dit wordt een open relaygenoemd en was in de begintijd een veelvoorkomende aanjager van spam. Open relays zijn niet langer acceptabel op internet.

Je moet je SMTP-client vragen om verbinding te maken met Gmail via een geverifieerde verbinding, waarschijnlijk op poort 587.


Antwoord 2, autoriteit 45%

smtp-poort en socketFactory moeten worden gewijzigd

   String to = "[email protected]";
    String subject = "subject"
    String msg ="email text...."
    final String from ="[email protected]"
    final  String password ="senderPassword"
    Properties props = new Properties();  
    props.setProperty("mail.transport.protocol", "smtp");     
    props.setProperty("mail.host", "smtp.gmail.com");  
    props.put("mail.smtp.auth", "true");  
    props.put("mail.smtp.port", "465");  
    props.put("mail.debug", "true");  
    props.put("mail.smtp.socketFactory.port", "465");  
    props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");  
    props.put("mail.smtp.socketFactory.fallback", "false");  
    Session session = Session.getDefaultInstance(props,  
    new javax.mail.Authenticator() {
       protected PasswordAuthentication getPasswordAuthentication() {  
       return new PasswordAuthentication(from,password);  
   }  
   });  
   //session.setDebug(true);  
   Transport transport = session.getTransport();  
   InternetAddress addressFrom = new InternetAddress(from);  
   MimeMessage message = new MimeMessage(session);  
   message.setSender(addressFrom);  
   message.setSubject(subject);  
   message.setContent(msg, "text/plain");  
   message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));  
   transport.connect();  
   Transport.send(message);  
   transport.close();
   }  

hoop dat het voor je zal werken..


Antwoord 3, autoriteit 39%

Toevoegen

props.put("mail.smtp.starttls.enable", "true");

mijn probleem opgelost 😉

Mijn probleem was:

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Moet eerst een STARTTLS-opdracht geven. u186sm7971862pfu.82 – gsmtp

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at com.example.sendmail.SendEmailExample2.main(SendEmailExample2.java:53)

Antwoord 4, autoriteit 8%

Ik kreeg ook te maken met hetzelfde probleem toen ik een applicatie voor e-mailmeldingen aan het bouwen was. u hoeft slechts één regel toe te voegen. Hieronder een redde mijn dag.

props.put("mail.smtp.starttls.enable", "true");

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Moet eerst een STARTTLS-opdracht geven. h13-v6sm10627790pgp.13 – gsmtp

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at com.smruti.email.EmailProject.EmailSend.main(EmailSend.java:99)

Ik hoop dat dit je helpt.


Antwoord 5, autoriteit 4%

Google heeft nu een functie die stelt dat onveilige apparaten geen e-mails kunnen verzenden. Toen ik mijn programma uitvoerde kwam het met de fout in de eerste post op de proppen. Ik moest naar mijn account gaan en onveilige apps toestaan e-mails te verzenden, wat ik deed door op mijn account te klikken, naar het tabblad Beveiliging te gaan en onveilige apps mijn Gmail te laten gebruiken.


Antwoord 6

   String username = "[email protected]";
    String password = "some-password";
    String recipient = "[email protected]");
    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.from", "[email protected]");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.port", "587");
    props.setProperty("mail.debug", "true");
    Session session = Session.getInstance(props, null);
    MimeMessage msg = new MimeMessage(session);
    msg.setRecipients(Message.RecipientType.TO, recipient);
    msg.setSubject("JavaMail hello world example");
    msg.setSentDate(new Date());
    msg.setText("Hello, world!\n");
    Transport transport = session.getTransport("smtp");
    transport.connect(username, password);
    transport.sendMessage(msg, msg.getAllRecipients());
    transport.close();

Antwoord 7

Probeer deze code:

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.prot", "465");
                        Session session = Session.getDefaultInstance(props,
                                new javax.mail.Authenticator() {
                            protected PasswordAuthentication getPasswordAuthentication() {
                                return new PasswordAuthentication("PUT THE MAIL SENDER HERE !", "PUT THE PASSWORD OF THE MAIL SENDER HERE !");
                            }
                        }
                        );
                        try {
                            Message message = new MimeMessage(session);
                            message.setFrom(new InternetAddress("PUT THE MAIL SENDER HERE !"));
                            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("PUT THE MAIL RECEIVER HERE !"));
                            message.setSubject("MAIL SUBJECT !");
                            message.setText("MAIL BODY !");
                            Transport.send(message);
                        } catch (Exception e) {
                            JOptionPane.showMessageDialog(null, e);
                        }

Je moet de beveiliging van de afzender van de e-mail minder beveiligen. als het probleem aanhoudt, denk ik dat het kan worden veroorzaakt door de antivirus, probeer het uit te schakelen ..

Other episodes