【问题标题】:Getting Issue com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. dg12sm142339333pac.47 - gsmtp获取问题 com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 必须首先发出 STARTTLS 命令。 dg12sm142339333pac.47 - gsmtp
【发布时间】:2016-04-15 11:57:40
【问题描述】:

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

代码

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

【问题讨论】:

    标签: java email gmail


    【解决方案1】:

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

    您可能需要对协议(以及每个属性)使用“smtps”,而不是“smtp”,并将 smtps 端口号 (587) 用作字符串(!),而不是将 smtp 用作数字.

    (是的,我希望当您启用 starttls 时它会变得聪明......)

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 2015-04-24
      • 1970-01-01
      • 2011-07-13
      相关资源
      最近更新 更多