Java 使用SMTP发送邮件

admin 7月前 838

因为最近练手项目的需要,网上的轮子大部分都是25端口发信的,但是很多服务器都关闭了25端口,然后部分服务商也不支持25端口,都是需要465 SSL加密端口的.所有就有了这个教程.java使用SSL SMTP发信.

1:Maven 导入依赖

<!--SMTP发信-->
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>

2: 在application.yml中加入配置代码

email:
  server: SMTP服务器地址
  port: 465
  user: SMTP用户名
  pass: SMTP密码

3:发送邮件代码

    @Value("${email.server}")
    private String host;
    @Value("${email.user}")
    private String username;
    @Value("${email.pass}")
    private String password;
    @Value("${email.port}")
    private String port;
public int EmailSend(String Email, String SubTitle, String Content) {
        Properties props = new Properties();
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.ssl.enable", "true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", port);
        Session session = Session.getDefaultInstance(props,
                new javax.mail.Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username,password);
                    }
                });
        try {
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(username));
            message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(Email));
            message.setSubject(SubTitle);
            message.setText(Content);
            Transport.send(message);
            return 1;
        } catch (MessagingException e) {
            return -1;
        }
    }

注意事项

1:因为使用了@Value注解所以该方法类需要使用@Autowired引入不然会报空指针
2:不是Spring项目的可以去掉注解改为其他方式赋值
3:QQ邮箱或者网易邮箱有独立密码的请使用独立密码
4:部分邮箱服务商需要开启SMTP服务
5:如果想使用自己域名做邮箱的话参考:https://www.4gml.com/thread-70.htm

最后于 6月前 被admin编辑 ,原因:
最新回复 (0)
全部楼主
返回
发新帖