当前位置: 首页 > 知识库问答 >
问题:

Spring Boot-使用Gmail发送电子邮件

樊腾
2023-03-14

需要使用spring boot从gmail发送邮件

但我得到了一个错误,就像

此应用程序没有/error的显式映射,因此您将其视为回退。

出现意外错误(type=内部服务器错误,状态=500)。邮件服务器连接失败;嵌套异常是com.sun.mail.util.MailConnectExc0019:无法连接到主机,端口:smtp.gmail.com,587;超时5000;嵌套异常是:java.net.SocketTimeoutExc0019:连接超时。失败的消息:com.sun.mail.util.邮件连接异常:无法连接到主机,端口:smtp.gmail.com,587;超时5000;嵌套异常是:java.net.SocketTimeoutExc0019:连接超时

应用性质

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=XXXXXXXXXX@gmail.com
spring.mail.password=********
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000

控制

@Autowired
private JavaMailSender sender;

@RequestMapping(value="/sendMail/{mail}")
public String sendMail(@PathVariable String mail) {
    MimeMessage message = sender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message);

    try {
        helper.setTo(mail);
        helper.setText("Greetings :)");
        helper.setSubject("Mail From Spring Boot");
    } catch (MessagingException e) {
        e.printStackTrace();
        return "Error while sending mail ..";
    }
    sender.send(message);
    return "Mail Sent Success!";
}

还允许在邮件设置中使用安全性较低的应用程序

共有3个答案

孙正业
2023-03-14

由于潜在的问题是套接字超时,最有可能的问题是防火墙阻止您直接连接。JavaMail FAQ提供了通过代理服务器连接的连接调试提示和说明。

丁俊爽
2023-03-14

使用Spring发送电子邮件需要以下属性。

spring.mail.host=
spring.mail.port=465
spring.mail.protocol=smtps

#Mail server Username & Password
spring.mail.username=
spring.mail.password=

spring.mail.properties.mail.transport.protocol=smtps
spring.mail.properties.mail.smtps.auth=true
spring.mail.properties.mail.smtps.starttls.enable=true
spring.mail.properties.mail.smtps.timeout=8000

您可以参考下面的课程,用Spring发送电子邮件。

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;

@Component
public class SendEmailService  {

    @Autowired
    private JavaMailSender mailSender;

    public void sendEmail(final UserObject userObject) {            

        String toAddress = userObject.getEmail();
        String subjectText = userObject.getSubject();
        SimpleMailMessage emailMessage = composeEmail(toAddress, subjectText);

        mailSender.send(emailMessage);
    }

    private SimpleMailMessage composeEmail(final String toAddress, final String subjectText) {

        final SimpleMailMessage email = new SimpleMailMessage();    
        email.setTo(toAddress);
        email.setSubject(subjectText);
        email.setText("Some Text");
        email.setFrom("From Address");

        return email;
    }

}
柴浩大
2023-03-14

请改用此代码段

public class ExceptionMailer{
    private String smtpHost;
    private String smtpPort;
    private String senderMail;
    private String password;
    static final Properties props = new Properties();

ExceptionMailer(){
    this.smtpHost = "smtp.gmail.com";
    this.smtpPort = "465";
    this.senderMail = "xyz@gmail.com";
    this.password = "xxxxxxxx";

    props.put("mail.smtp.host", this.smtpHost);
    props.put("mail.smtp.socketFactory.port", this.smtpPort);
    props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", this.smtpPort);
}

public void send(){
           //get authentication 
        Session session = Session.getDefaultInstance(props,new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication(){
                    return new PasswordAuthentication(senderMail, password);
                }
        });

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(senderMail));
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(email));
message.setSubject(MAIL_SUBJECT);
message.setContent("This is a message", "text/html; charset=utf-8");
Transport.send(message);

}

}
 类似资料:
  • 我正在尝试使用gmail从Delphi发送电子邮件。我有Indy10.5.9.0和Delphi XE3。 我从中获得了示例代码:http://www.andrecelestino.com/delphi-xe-envio-de-e-mail-com-componentes-indy/ 我还尝试了其他示例代码,但结果相同。 我有libeay32.dll和ssleay32.dll从这里:http://w

  • 我正在使用C#使用SMTP和gmail服务器发送电子邮件。 下面是我用于发送电子邮件的代码。我遇到了一些错误,即。 SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要5.5.1身份验证。 我做错了什么?我如何使用gmail发送电子邮件。

  • 我用竹子来让我的网站访问者填写并发送一份联系表。 我创建了一个服务帐户 我授予它全域权限 我添加了以下范围:https://www.googleapis.com/auth/gmail.addons.current.action.compose https://www.googleapis.com/auth/gmail.addons.current.message.metadatahttps://w

  • 问题内容: 我试图直接在单击按钮时打开Gmail的电子邮件发送表单,但这总是显示用于发送电子邮件的选项列表。 我这样做是为了打开GMail表单: 但这不是打开GMail表单。我应该怎么做才能打开GMail表单,请帮忙。 有什么办法吗? 问题答案: 在线路上使用一些东西

  • 我在ASP. Net Core中工作,并尝试从gmail使用smtp客户端发送电子邮件。有以下代码,但不起作用也看过以下帖子,但不起作用http://dotnetthoughts.net/how-to-send-emails-from-aspnet-core/ 它会跟踪错误 系统NotSupportedException:SMTP服务器不支持身份验证

  • 我有以下代码: 我无法连接到gmail,连接出现错误,但是所有连接信息都是正确的,不知道是什么阻止了我发送电子邮件的代码中的连接,我无法发送简单的电子邮件,我一点也不知道它是什么。 感谢您的帮助