【问题标题】:Cannot send email from server heroku using spring javamail无法使用spring javamail从服务器heroku发送电子邮件
【发布时间】:2016-10-20 09:36:23
【问题描述】:

我尝试使用 Spring javamailHeroku 发送电子邮件,但出现错误。

我的代码:

import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Service;

@Service("mailService")
public class JavaMailerServiceImpl {

    private MailSender mailSender;
    public JavaMailerServiceImpl(JavaMailSenderImpl mailSender) {
        this.mailSender = mailSender;
    }

    public void sendMail(String to, String subject, String body){
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(to);
        message.setSubject(subject);
        message.setText(body);
        mailSender.send(message);
    }
}

豆子:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="smtp.gmail.com"/>
    <property name="port" value="587"/>
    <property name="username" value="**********@gmail.com"/>
    <property name="password" value="********"/>
    <property name="javaMailProperties">
        <props>
            <prop key="mail.transport.protocol">smtp</prop>
            <prop key="mail.smtp.auth">true</prop>
            <prop key="mail.smtp.starttls.enable">true</prop>
            <prop key="mail.debug">true</prop>
        </props>
    </property>
</bean>

和控制器:

    @Autowired
    private JavaMailerServiceImpl mailService;

    @RequestMapping(method = RequestMethod.POST)
    public String sendEmail(HttpServletRequest request) {
        String recipientAddress = request.getParameter("recipient");
        String subject = request.getParameter("subject");
        String message = request.getParameter("message");
        mailService.sendMail(recipientAddress,subject,message);
    }`

在 localhost:8080 和 localhost:5000,测试成功完成,但在 heroku 服务器上出现异常:

身份验证失败;嵌套异常是 javax.mail.AuthenticationFailedException: 534-5.7.14 请通过您的网络浏览器和 534-5.7.14 登录,然后重试。 534-5.7.14 了解更多信息,请致电 534 5.7.14 https://support.google.com/mail/answer/78754 j4sm53975482wjg.20 - gsmtp

我执行了来自谷歌的所有建议。你能帮我解决这个问题吗?也许链接或类似的东西。谢谢。

【问题讨论】:

    标签: java spring email heroku gmail


    【解决方案1】:

    Devcenter heroku 说:

    Heroku 平台本身不提供电子邮件服务 - 而是提供充当支持服务的附加组件 - 可以附加到您的应用以提供服务。

    请咨询 Heroku 插件市场以获取符合您要求的适当电子邮件服务。

    source

    【讨论】:

    • 它有效...谢谢..我现在可以使用 heroku 发送邮件
    • 那么你是如何通过 gmail spring 发送电子邮件的?你能解释一下吗
    • 如果真的 - 那一刻,我不知道 gmail spring。但我认为 - 在服务器 heroku 上也行不通。原因 - 来自谷歌的人非常关心安全。有问题的代码可以在 Heroku 服务器上与 yahoo 一起正常工作
    【解决方案2】:

    这是我的应用在 Heroku 上运行的设置,它有效:

    #  sparkpost.com SMTP server:
    mail.host=smtp.sparkpostmail.com
    mail.port=587
    mail.smtp.auth=true
    mail.smtp.socketFactory.port=587
    mail.smtp.socketFactory.fallback=true
    mail.smtp.starttls.enable=true
    mail.smtp.starttls.required=true
    mail.smtp.ssl.enable=false
    #mail.smtp.debug=true
    mail.username=xxxx
    mail.password=xxxx
    

    【讨论】:

      【解决方案3】:

      我解决了这个激活DisplayUnlockCaptcha

      https://accounts.google.com/b/0/DisplayUnlockCaptcha

      同时激活 Lesssecureapps

      https://www.google.com/settings/security/lesssecureapps

      这些是属性:

      #Mail properties
      spring.mail.default-encoding=UTF-8
      spring.mail.host=smtp.gmail.com
      spring.mail.username=--
      spring.mail.password=--
      spring.mail.port=587
      spring.mail.protocol=smtp
      spring.mail.debug=true
      spring.mail.smtp.auth=true
      spring.mail.smtp.starttls.enable=true
      

      【讨论】:

      • 我不知道你是谁或你做了什么,但你好心的先生刚刚救了我的命,非常非常感谢
      • 愉快,愉快的编码;)
      猜你喜欢
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 2016-07-03
      • 2019-08-10
      • 2015-01-09
      • 2018-01-25
      相关资源
      最近更新 更多