我得到530 5.7.0必须首先发出STARTTLS命令.a5sm29349940pbw.4 - 从java程序发送邮件时出现gsmtp错误,如何解决?

wad*_*ars 1 java email jakarta-mail

错误:

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. a5sm29349940pbw.4 - gsmtp

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1368)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:886)
at javax.mail.Transport.send0(Transport.java:191)
at javax.mail.Transport.send(Transport.java:120)
at com.conceptbuild.EmailGenerator.main(EmailGenerator.java:120)
Run Code Online (Sandbox Code Playgroud)

码:

package com.conceptbuild;

import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

public class EmailGenerator {

    public EmailGenerator() {
        // TODO Auto-generated constructor stub
    }

    private class MailAuthenticator extends Authenticator {

        String username = "username";

        String password = "password";

        public MailAuthenticator() {
            // TODO Auto-generated constructor stub
        }

        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }

    }

    public static void main(String[] args)   {

        String host="smtp.gmail.com";
        String from="fromaddress";
        String to="toaddress";
        String cc="ccaddress";
        Address fromaddress=null,toaddress=null,ccaddress=null;

        Properties mailproperties= new Properties();

        mailproperties.put("mail.smtp.host", host);
        mailproperties.put("mail.smtp.port", 25);
        mailproperties.put("mail.debug", "true");
        mailproperties.put("mail.transport.protocal", "smtps");
        mailproperties.put("mail.smtp.STARTTLS.enable", "true");
        mailproperties.put("mail.smtp.auth", "true");
        mailproperties.put("mail.smtps.**ssl.enable", "false");
        mailproperties.setProperty("mail.smtps.**ssl.required", "false");

        EmailGenerator emailgenerator= new EmailGenerator();

        MailAuthenticator auth= emailgenerator.new MailAuthenticator();

        Session session = Session.getInstance(mailproperties, auth);

        try {
             fromaddress= new InternetAddress(from,"Sushant Wadjikar");
             toaddress= new InternetAddress(to);
             ccaddress=new InternetAddress(cc);

        }catch (AddressException ex) {
            // TODO Auto-generated catch block
            ex.printStackTrace();
        } catch (UnsupportedEncodingException ex) {
            // TODO Auto-generated catch block
            ex.printStackTrace();
        }

        Message message= new MimeMessage(session);

        try {
            message.setFrom(fromaddress);
            message.setRecipient(RecipientType.TO, toaddress);
            message.setRecipient(RecipientType.CC, ccaddress);
            message.setSubject("Hello !!! My First Mail from my java program");
            message.setSentDate(new Date());
            message.setText("Good Morning"+"\n"+"This is my first mail, sending it from my java program"+"\n"+"Thanks and Regards"+"\n"+"Sushant");

            Transport transport;
            transport = session.getTransport("smtp");

            transport.connect();

            message.saveChanges();

            transport.send(message);

            System.out.println("Mail send successfully.........");

        } catch (MessagingException ex) {
            // TODO Auto-generated catch block
            ex.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Bil*_*non 5

可能会解决您的问题.

此外,请考虑是否使用"smtp"协议或"smtps"协议并相应地命名属性.并且在他们的名字中没有带"**"的属性.