Java邮件收发,以及获取收件箱和发件箱 自测可用 使用JavaMail

Java邮件收发,以及获取收件箱和发件箱 自测可用

Java发送邮件 使用javaMail 1.5.6发送邮件 协议smtp

smtp地址 smtp.域名 端口SSL 465/994 非SSL25
实体类

**
 * 邮件消息体
 * @author lyp
 * @date 2020年3月11日 上午10:53:13 
 * @see [相关类/方法]
 */
public class MessageBody {
    
    public enum MessageType
    {
        MAIL, SMS
    }
    
    /** 邮件主题 */
    private String subject;
    
    /** 邮件发件人 */
    private String fromUser;
    
    // 短信则为手机号码,邮件则为邮箱
    private List<String> receiveUsers;
    
    /** 邮件抄送人 */
    private List<String> copyToUsers;
    
    /** 邮件密送人 */
    private List<String> bccUsers;
    
    // 邮件短信内容
    private String content;
    
    // 定时发送用
    private DateTime dateTime;
    
    // 消息类型, 默认为邮箱
    private MessageType messageType = MessageType.MAIL;
    
    // 公司名称
    private String companyName;
    
    // 附件
    private Map<String, File> attachments;

    private Map<String, MultipartFile> multipartFileMap;

    public List<Integer> getSendIds() {
        return sendIds;
    }

    public void setSendIds(List<Integer> sendIds) {
        this.sendIds = sendIds;
    }

    private List<Integer> sendIds;


    public Map<String, MultipartFile> getMultipartFileMap() {
        return multipartFileMap;
    }

    public void setMultipartFileMap(Map<String, MultipartFile> multipartFileMap) {
        this.multipartFileMap = multipartFileMap;
    }

    public List<String> getReceiveUsers() {
        return receiveUsers;
    }
    
    public void setReceiveUsers(List<String> receiveUsers) {
        this.receiveUsers = receiveUsers;
    }
    
    public String getContent() {
        return content;
    }
    
    public void setContent(String content) {
        this.content = content;
    }
    
    public DateTime getDateTime() {
        return dateTime;
    }
    
    public void setDateTime(DateTime dateTime) {
        this.dateTime = dateTime;
    }
    
    public MessageType getMessageType() {
        return messageType;
    }
    
    public void setMessageType(MessageType messageType) {
        this.messageType = messageType;
    }
    
    public String getCompanyName() {
        return companyName;
    }
    
    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }
    
    public String getSubject() {
        return subject;
    }
    
    public void setSubject(String subject) {
        this.subject = subject;
    }
    
    public String getFromUser() {
        return fromUser;
    }
    
    public void setFromUser(String fromUser) {
        this.fromUser = fromUser;
    }
    
    public List<String> getCopyToUsers() {
        return copyToUsers;
    }
    
    public void setCopyToUsers(List<String> copyToUsers) {
        this.copyToUsers = copyToUsers;
    }
    
    public List<String> getBccUsers() {
        return bccUsers;
    }
    
    public void setBccUsers(List<String> bccUsers) {
        this.bccUsers = bccUsers;
    }
    
    public Map<String, File> getAttachments() {
        return attachments;
    }
    
    public void setAttachments(Map<String, File> attachments) {
        this.attachments = attachments;
    }
    
}

JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost(emailPO.getSmtp());  //设置smtp地址
        sender.setPassword(emailPO.getPassword());  //邮箱授权密码
        sender.setPort(emailPO.getSmtpPort());	//smtp端口  465/994
        sender.setUsername(emailPO.getEmail()); //邮箱
        Properties properties = new Properties(); 
        properties.put("mail.smtp.auth", true); //开启授权认证
        MailSSLSocketFactory sf = null; //开启ssl加密方式链接
        try {
            sf = new MailSSLSocketFactory();
        } catch (GeneralSecurityException e) {
            LOGGER.error("failed to init MailSSLSocketFactory,err:{}", e);
            throw new IllegalArgumentException(e);
        }
        sf.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.enable", "true");
        properties.put("mail.smtp.ssl.socketFactory", sf);
        sender.setJavaMailProperties(properties);
        LOGGER.info("mail message:{}", message);
        mailSenderService.run(sender,message);
public class MailSender {

    /** 邮件发送器 */
    private JavaMailSender mailSender;
    
    /** 邮件消息 */
    private MessageBody mailMessage;
    
    /** 日志记录器 */
    private static final Logger LOGGER = LoggerFactory.getLogger(MailSender.class);
    
    public MailSender(JavaMailSenderImpl mailSender, MessageBody mailMessage)
    {
        this.mailSender = mailSender;
        this.mailMessage = mailMessage;
    }
    
    @Override
    public void run(JavaMailSenderImpl mailSender, MessageBody mailMessage) {
        if (null != mailMessage) {
            LOGGER.info("mailSender:{}", mailSender);
            MimeMessage mimeMsg = mailSender.createMimeMessage();
            try {
                // 设置true,表示支持附件
                MimeMessageHelper msgHelper = new MimeMessageHelper(mimeMsg, true, "UTF-8");
                msgHelper.setValidateAddresses(true);
                msgHelper.setFrom(mailMessage.getFromUser(), mailMessage.getCompanyName());
                msgHelper.setSubject(mailMessage.getSubject());
                String[] receiveUsers = new String[mailMessage.getReceiveUsers().size()];
                //设置收件人
                msgHelper.setTo(mailMessage.getReceiveUsers().toArray(receiveUsers));
                //设置内容  ,第二个参数支持html格式
                msgHelper.setText(mailMessage.getContent(), true);
                // 设置邮件抄送人
                if (CollectionUtils.isNotEmpty(mailMessage.getCopyToUsers())) {
                    String[] copyToUsers = new String[mailMessage.getCopyToUsers().size()];
                    msgHelper.setCc(mailMessage.getCopyToUsers().toArray(copyToUsers));
                }
     
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值