我正在尝试使用以下代码使用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
答案 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时,我希望它是聪明的。)