获取问题com.sun.mail.smtp.SMTPSendFailedException:530 5.7.0必须首先发出STARTTLS命令。 dg12sm142339333pac.47 - gsmtp

时间:2016-01-11 08:34:24

标签: java email gmail

我正在尝试使用以下代码使用java mail api发送邮件但是收到一些错误(530 5.7.0必须首先发出STARTTLS命令.v2sm21182861pfi.93 - gsmtp),请任何人帮我运行下面的代码提前谢谢。

CODE

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.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class SendMailTest {

public static boolean sendHTMLMail() {
    String msg, String[] to
    final String from = "*****@gmail.com";
    final String password = "****";
    String senderName = "some Name";
    String sub = "Some Subject";
    String msg = "testing mail";
    String[] to = new String[1];
    to[0] = "***@gmail.com";

    String host = "smtp.gmail.com";
    MimeMultipart multipart = new MimeMultipart();
    MimeBodyPart bodypart = new MimeBodyPart();

    Properties props = new Properties();
    props.put("mail.smtp.starttls.enable", "true");
    props.setProperty("mail.smtp.host", host);
    props.put("mail.smtp.port", 587);
    props.put("mail.smtp.auth", "true");
    mail.setTLS(true);
    try {
        Session session = Session.getInstance(props, new javax.mail.Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(from, password);
            }
        });
        Transport transport = session.getTransport("smtp");

        Message mimeMessage = new MimeMessage(session);
        mimeMessage.setFrom(new InternetAddress("" + senderName + "<" + from + ">"));

        InternetAddress[] toAddress = new InternetAddress[to.length];
        for (int i = 0; i < to.length; i++) {
            toAddress[i] = new InternetAddress(to[i]);
        }

        for (InternetAddress toAddres : toAddress) {
            mimeMessage.addRecipient(Message.RecipientType.TO, toAddres);
        }


        bodypart.setContent(msg, "text/html; charset=\"utf-8\"");
        multipart.addBodyPart(bodypart);

        mimeMessage.setSubject(sub);
        mimeMessage.setContent(multipart);

        transport.connect(from, password);
        transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
        transport.close();
        return true;
    } catch (MessagingException me) {
        me.printStackTrace();
    }
    return false;
}

错误

DEBUG: loading new provider protocol=aws, className=com.amazonaws.services.simpleemail.AWSJavaMailTransport, vendor=Amazon Web Services LLC, version=null
DEBUG: loading new provider protocol=imap, className=com.sun.mail.imap.IMAPStore, vendor=Sun Microsystems, Inc, version=null
DEBUG: loading new provider protocol=imaps, className=com.sun.mail.imap.IMAPSSLStore, vendor=Sun Microsystems, Inc, version=null
DEBUG: loading new provider protocol=smtp, className=com.sun.mail.smtp.SMTPTransport, vendor=Sun Microsystems, Inc, version=null
DEBUG: loading new provider protocol=smtps, className=com.sun.mail.smtp.SMTPSSLTransport, vendor=Sun Microsystems, Inc, version=null
DEBUG: loading new provider protocol=pop3, className=com.sun.mail.pop3.POP3Store, vendor=Sun Microsystems, Inc, version=null
DEBUG: loading new provider protocol=pop3s, className=com.sun.mail.pop3.POP3SSLStore, vendor=Sun Microsystems, Inc, version=null
DEBUG: getProvider() returning provider protocol=smtp; type=javax.mail.Provider$Type@156c039; class=com.sun.mail.smtp.SMTPTransport; vendor=Sun Microsystems, Inc
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 25, isSSL false
220 smtp.gmail.com ESMTP v2sm21182861pfi.93 - gsmtp
DEBUG SMTP: connected to host "smtp.gmail.com", port: 25

EHLO lenovo-PC
250-smtp.gmail.com at your service, [117.197.6.49]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Found extension "SMTPUTF8", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<xyz@gmail.com>
530 5.7.0 Must issue a STARTTLS command first. v2sm21182861pfi.93 - gsmtp
DEBUG SMTP: got response code 530, with response: 530 5.7.0 Must issue a STARTTLS command first. v2sm21182861pfi.93 - gsmtp

RSET
250 2.1.5 Flushed v2sm21182861pfi.93 - gsmtp
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. v2sm21182861pfi.93 - gsmtp

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

1 个答案:

答案 0 :(得分:0)

根据Using Javamail to connect to Gmail smtp server ignores specified port and tries to use 25

您可能需要使用&#34; smtps&#34;对于协议(以及每个属性),而不是&#34; smtp&#34;,并使用smtps端口号(587)作为字符串(!),而不是smtp作为数字。

(是的,当你启用starttls时,我希望它是聪明的。)