Getting Issue com.sun.mail.smtp.SMTPSendFailedException:530



我正试图使用以下代码使用java邮件api发送邮件,但遇到了一些错误(530 5.7.0必须首先发出STARTTLS命令。v2sm21188261pfi.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

根据使用Javamail连接到Gmail smtp服务器忽略指定端口并尝试使用25

您可能需要为协议(以及在每个属性中)使用"smtps",而不是"smtp",并将smtps端口号(587)用作字符串(!),而不是将smtp端口号用作数字。

(是的,我希望当你启用starttls时它会很智能…)

相关内容

  • 没有找到相关文章

最新更新