0
<property name="host" value="smtp.gmail.com"/>
<property name="username" value="test@gmail.com"/>
<property name="password" value="abc123456"/>
<property name="port" value="587" />
<property name="javaMailProperties">
   <props>
      <prop key="mail.transport.protocol">smtp</prop> 
      <prop key="mail.smtp.starttls.enable">true</prop> 
      <prop key="mail.smtp.ssl.enable">true</prop>              
      <prop key="mail.smtp.auth">true</prop>
      <prop key="mail.debug">true</prop>
   </props>
 </property>

我得到的错误:DEBUG SMTP RCVD: 530 5.7.0 必须先发出 STARTTLS 命令。wd6sm44638663pab.3 - gsmtp

调试 SMTP 发送:QUIT org.springframework.mail.MailSendException:失败的消息:javax.mail.MessagingException:530 5.7.0 必须首先发出 STARTTLS 命令。wd6sm44638663pab.3 - gsmtp;消息异常详细信息 (1) 是: 失败消息 1:javax.mail.MessagingException: 530 5.7.0 必须首先发出 STARTTLS 命令。wd6sm44638663pab.3 - gsmtp

已经启用 STARTTLS 但为什么我再次收到此错误?

此外,当我将传输更改为 smtps 并将端口更改为 SSL 时,我没有得到任何响应,它会等待很长时间。

4

3 回答 3

1

我认为 jar 存在问题,可能是您没有包含邮件提供商提供的 jar。因此,使用该 jar 并将其包含到类路径中,错误将得到解决。

于 2014-01-02T08:47:31.030 回答
0

您已启用 SSL 和 STARTTLS,这将不起作用。选一个。如果您在端口 587 上使用 Gmail,则需要 STARTTLS。

从您的错误消息来看,您的属性似乎被忽略了。检查您的其余配置以确保您的属性设置与您正在使用的 JavaMail 会话相匹配。

于 2013-11-06T08:06:47.533 回答
0

使用此代码从 java 发送电子邮件,只需通过在按钮或您要发送电子邮件的任何其他位置传递所需参数来调用此类的构造函数。

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.Properties;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;
import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;


public class GMailSender {

 public GMailSender(String host,  final String from, final String pass, String to, String sub, String mess) throws Exception {

    Properties props = System.getProperties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", host);
   // props.put("mail.smtp.port", port);

    Authenticator auth = new Authenticator() {
      protected PasswordAuthentication getPasswordAuthentication() {
          return new PasswordAuthentication(from, pass);
          }};
    Session session = Session.getInstance(props, auth);

    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
    message.setSubject(sub);
    message.setText(mess);
    Transport.send(message);
    }
 public static void main(String arg[]) throws Exception {

    if(arg.length == 5) {

       StringBuilder message = new StringBuilder();

       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

       String temp = "", subject;

       System.out.print("Enter subject: ");

       subject = br.readLine();

       System.out.println("Enter the message (end it with a . on a single line):");

       while((temp = br.readLine()) != null) {

          if(temp.equals("."))

             break;

          message.append(temp+"\n");
          }

       System.out.println("Sending message...");

       new GMailSender(arg[0], arg[1], arg[2], arg[3], subject, message.toString());

       System.out.println("Sent the message.");

       }

    else System.err.println("Usage:\njava SendTextMail <host> <port> <from> <pass> <to>");
}
}
于 2013-11-06T05:01:14.867 回答