繁体   English   中英

从Java REST服务发送验证码/链接

[英]send verification code/link from java REST service

我有一个dropwizard REST服务,并且试图在用户注册后实施发送验证电子邮件链接/代码。

我的用户表中的数据库中有一个名为is_active的字段,该字段指示是否已验证用户。

  private String email;
  @JsonProperty
  private String password;
  @JsonProperty
  private String name;
  @JsonProperty
  private String surname;
  @JsonProperty
  private boolean isActive;

我试图找出什么是发送此验证电子邮件的正确方法,我编写了一个向用户发送SMTP电子邮件的类,但是我对它是否正确发送电子邮件感到怀疑。

public class SendEmail  
{  
 public static void main(String [] args){  
      String to = "customer@gmail.com";
      String from = "mycompany@gmail.com";  
      String host = "localhost";

      Properties properties = System.getProperties();  
      properties.setProperty("mail.smtp.host", host);  
      Session session = Session.getDefaultInstance(properties);  
      try{  
         MimeMessage message = new MimeMessage(session);  
         message.setFrom(new InternetAddress(from));  
         message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));  
         message.setSubject("verification email");  
         message.setText("Hello, this is sample verification email ");  

         Transport.send(message);  
         System.out.println("message sent successfully....");  

      }catch (MessagingException mex) {mex.printStackTrace();}  
   }  
}  

这是我应该如何实现或使用诸如sendgrid之类的外部提供程序吗?

您的方法很好。 要考虑的一些事情:

  • SMTP服务器在哪个时间范围内接收多少电子邮件? 某些SMPT服务器会应用速率限制,这可能会导致消息发送失败。 您的代码应识别出这一点,并制定一种策略,也许以后再发送一次。
  • 电子邮件正文中的验证链接应包含唯一的秘密,该秘密只能用于验证特定用户。 此秘密必须存储并与用户相关联。
  • 链接应该包含参选如用户ID或名称。 这样的链接很容易被伪造。
  • 通过单击验证链接调用的REST API应该获取秘密并查找与其关联的用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM