首页 > 编程语言 >java实现发送邮件

java实现发送邮件

时间:2023-02-23 18:14:22浏览次数:38  
标签:java String private 发送 host new mail 邮件

java发送邮件 需要先申请邮箱的授权码,对应配置文件中的password。

 

 

1.引入jar

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

2.实现代码:

创建Mail封装类

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Mail implements Serializable {

    private static final long serialVersionUID = -1L;

    @ApiModelProperty("发件人")
    private String sendFrom;

    @ApiModelProperty("收件人,多个以逗号隔开")
    private String sendTo;

    @ApiModelProperty("抄送人,多个以逗号隔开")
    private String sendCopy;

    @ApiModelProperty("主题")
    private String subject;

    @ApiModelProperty("邮件内容")
    private String content;
}

创建发送邮件工具类:

public class SendEmailUtil {
    public static Session createSession(String host, String userName, String passWord) {
        Properties prop = new Properties();
        prop.setProperty("mail.host", host);
        prop.setProperty("mail.smtp.auth", "true");
        prop.setProperty("mail.smtp.ssl.enable", "true");
        prop.put("mail.smtp.port",465);

        // 创建验证器
        Authenticator auth = new Authenticator() {
            @Override
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(userName, passWord);
            }
        };

        // 获取session对象
        return Session.getInstance(prop, auth);
    }

    /**
     * 发送指定的邮件
     *
     * @param mail
     */
    public static void send(Session session, Mail mail) throws Exception {

        MimeMessage msg = new MimeMessage(session);
        // 设置发件人
        msg.setFrom(new InternetAddress(mail.getSendFrom()));
        // 设置收件人
        msg.addRecipients(Message.RecipientType.TO, mail.getSendTo());
        //设置抄送
        if (!ObjectUtils.isEmpty(mail.getSendCopy())) {
            msg.addRecipients(Message.RecipientType.CC, mail.getSendCopy());
        }
        //设置主题
        msg.setSubject(mail.getSubject());
        //创建部件集对象
        MimeMultipart parts = new MimeMultipart();
        //创建一个部件
        MimeBodyPart part = new MimeBodyPart();
        //设置邮件文本内容
        part.setContent(mail.getContent(), "text/html;charset=utf-8");
        //把部件添加到部件集中
        parts.addBodyPart(part);
        //给邮件设置内容
        msg.setContent(parts);
        //发邮件
        Transport.send(msg);
    }
}

添加配置文件:

#发送邮件配置
mail.host=smtphz.qiye.163.com
mail.username=***@163.com
mail.password=uA*******

service中调用:

@Value("${mail.host}")
private String host;
@Value("${mail.username}")
private String userName;
@Value("${mail.password}")
private String passWord;


//给用户发送邮件
 String subject = "后台管理平台账号已生成,请查收!";
 String content = String.format("账号:%s  密码:%s", userinfo.getUsername(), pwd);
 Mail mail = Mail.builder().sendFrom(userName).
              sendTo(userinfo.getUsername())
              .subject(subject)
              .content(content).build();
 try {
     SendEmailUtil.send(SendEmailUtil.createSession(host, userName, passWord), mail);
 } catch (Exception e) {
     e.printStackTrace();
 }

 

标签:java,String,private,发送,host,new,mail,邮件
From: https://www.cnblogs.com/wlong-blog/p/17148966.html

相关文章

  • JAVA解析xml
    <?xmlversion="1.0"encoding="UTF-8"standalone="no"?><contacts><tr><td>4</td><td>广州市鼎和机械设备有限公司44</td><td>东莞......
  • java
    publicclass代表类名称和文件名字一致基本模板:    ......
  • 「趣学前端」JavaScript标准库
    背景最近睡前习惯翻会书,重温了《JavaScript权威指南》这本书。这本书,文字小,内容多。两年了,我才翻到第十章。因为书太厚,平时都充当电脑支架。JavaScript标准库今天阅读的章节......
  • 网站出现java.lang.NullPointerException怎么解决
    今日小结:要解决这个问题,需要找到引发异常的代码行并确定哪个对象为空。这可以通过检查异常堆栈跟踪来完成,堆栈跟踪将告诉你异常在哪个方法中引发以及哪个对象为空。一旦......
  • Java国际化号码验证方法,国内手机号正则表达式
    Java国际化号码验证方法,国内手机号正则表达式 中国电信号段133、149、153、173、177、180、181、189、199中国联通号段130、131、132、145、155、156、166、175、17......
  • java--BigDecimal 类型介绍
      BigDecimal.add();    //加法BigDecimal.subtract();//减法BigDecimal.multiply();//乘法BigDecimal.divide();  //除法在这些BigDecimal调用的这......
  • java中四种创建线程的方式
    第一种方式:通过编写类继承Thread,重写run方法实现 实现实例:publicclassThreadTest{publicstaticvoidmain(String[]args){System.out.println("ma......
  • Java ”框架 = 注解 + 反射 + 设计模式“ 之 反射详解
    Java”框架=注解+反射+设计模式“之反射详解每博一文案无论幸福还是苦难,无论光荣还是屈辱,你都要自己遭遇与承受。——————《......
  • JavaScript Boolean
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *Boolean布尔值 * 布尔值只有两......
  • java 文件字节输入流
      Example10_4.javaimportjava.io.*;publicclassExample10_4{publicstaticvoidmain(Stringargs[]){intn=-1;byte[]a=newbyte[1......