我尝试在grails应用程序中发送消息。我使用Java代码解决了这个问题,这是我的代码
SimpleMailMessage message_ref = new SimpleMailMessage();
JavaMailSenderImpl sender_ref = new JavaMailSenderImpl();
sender_ref.setHost("smtp.gmail.com")
sender_ref.setUsername("testAccount@googlemail.com")
sender_ref.setPassword("topsecret")
message_ref.setTo("testRecipient@gmx.de")
message_ref.setSubject("Hello there")
message_ref.setText("How are you")
sender_ref.send(message_ref)
我遇到以下异常:
SMTPSendFailedException:530 5.7.0必须先发出STARTTLS命令
我在这里的stackoverflow上发现了类似的问题 Must issue a STARTTLS command first. Sending email with Java and Google Apps 但它并没有帮助我,因为他采用了不同的方法。
有人可以告诉我什么是错的吗?我期待错误不在代码中,而是在一些配置文件中,这是我的知识边缘。
答案 0 :(得分:2)
引用Grails mail plugin文档:
grails {
mail {
host = "smtp.gmail.com"
port = 465
username = "youracount@gmail.com"
password = "yourpassword"
props = ["mail.smtp.auth":"true",
"mail.smtp.socketFactory.port":"465",
"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback":"false"]
} }
答案 1 :(得分:1)
我帮不了你,但问题基本上就是你需要使用SSL来与服务器通信。 Google出于很多好的理由不允许进行纯文本通信。我对grails知之甚少,但我认为它有某种ssl支持。如果没有,你最好在javax.mail中做这件事。
StartTLS只是一个文本命令,您发送到smtp-server以显式启动安全通信。
答案 2 :(得分:0)
Properties properties = new Properties();
properties.put("mail.smtp.host", smtpHost);
properties.put("mail.smtp.port", smtpPort);
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.user", userName);
properties.put("mail.password", password);