# MailSender **Repository Path**: kaxia-xia/MailSender ## Basic Information - **Project Name**: MailSender - **Description**: java 邮件发送框架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-06-22 - **Last Updated**: 2022-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README MailSender是一个发送邮件的smtp框架,使用注解进行配置 ### 使用方法 在任意一个类的上面添加一下注解 ```java @EmailHost("xxxx@xxxx") //smtp服务器地址 @EmailPort(xxxx) //smtp服务器端口 @EmailAuth(true) //是否开启验证 @TlsEnable(true) //是否使用starttls @UserName("xxxxxxx@xxxx") //登录用户邮箱 @Password("xxx") //登录密码 ``` 在方法中,使用以下代码获取一个session ```java EmailSession.configClass = 上面注解所在的类; var session = EmailSession.getSession(); ``` EmailSession内部实现了单例模式,从而保证不管在任何地方获取到的session都是同一个 使用以下代码构建一个email消息 ```java try { var message = new EmailMessageBuilder(session) .setFromAddress("xxx@xxx") //发件人地址,需要与UserName注解一致 .setToAddress("xxx@xxx") //收件人地址 .setSubject("这是一封测试邮件") //邮件主题 .setText("

hello, world

") //正文内容,支持html .build(); //构建 } catch (MessagingException e) { throw new RuntimeException(e); } ``` 构建message的时候,还可以使用setBodyPart向其中添加附件,代码如下 ```java var message = new EmailMessageBuilder(session) .setBodyPart("id", new EmailBodyPart.EmailMultiPartBuilder() .setInputStream(ClassLoader.getSystemResourceAsStream("")) .setMimeType("mimetype") .setFileName("filename") .build()) .build(); ``` setBodyPart的第一个参数是附件在message中的key,这个key可以在正文中被索引, 第二个参数接受一个由EmailBodyPart.EmailMultiPartBuilder构造的EmailBodyPart 其中,setInputStream设置附件的输入流,setMimeType设置附件mime类型, setFileName设置附件在邮件中显示的文件名