Java(83)Java发邮件简单工具类

1、Maven引用

 <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>javax.mail-api</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>

2、Mail工具类:mailUtils

package utils;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import java.io.File;
import java.util.*;

/**
 * @author : HMF
 * className mailUtils
 * description 邮件工具类
 * date: 2022/3/13 13:18
 **/


public class mailUtils {
    /**
     * 发送简单的文本邮件
     * @param contentMap  邮件配置和邮件内容
     */
    public static void sendSimpleMail(Map<String, Object> contentMap){
        //获取系统属性
        Properties pros = new Properties();
        pros.setProperty("mail.transport.protocol", "smtp");// 使用的协议
        pros.setProperty("mail.smtp.host", contentMap.get("host").toString());// 发件人的邮箱的SMTP服务器地址
        pros.setProperty("mail.smtp.auth", "true");// 需要请求认证
        //设置邮件服务器
        Session session = Session.getInstance(pros);

        //创建默认的MimeMessage 对象
        MimeMessage msg = new MimeMessage(session);
        try {
            //邮件发送人
            msg.setFrom(contentMap.get("mailFrom").toString());
            //邮件接收人
            msg.setRecipients(Message.RecipientType.TO, contentMap.get("mailTo").toString());
            //邮件标题头
            msg.setSubject(contentMap.get("mailTittle").toString());
            //邮件发送日期
            msg.setSentDate(new Date());
            //邮件文本内容
            msg.setContent(contentMap.get("mailContent").toString(), "text/html;charset=UTF-8");
            //保存邮件
            msg.saveChanges();
            Transport.send(msg, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());
        }catch (Exception mex){
            mex.printStackTrace();
        }
    }
    /**
     * 发送带有附件的邮件
     * @param contentMap  邮件配置和邮件内容
     * @param attachments  邮件附件
     * @return MimeMessage
     */

    public static void SendAttachMail(Map<String, Object> contentMap, List<File> attachments){
        //获取系统属性
        Properties pros = new Properties();
        pros.setProperty("mail.transport.protocol", "smtp");// 使用的协议
        pros.setProperty("mail.smtp.host", contentMap.get("host").toString());// 发件人的邮箱的SMTP服务器地址
        pros.setProperty("mail.smtp.auth", "true");// 需要请求认证
        //设置邮件服务器
        Session session = Session.getInstance(pros);
        // 创建邮件对象
        MimeMessage mimeMessage = new MimeMessage(session);
        try {
            //邮件发送人
            mimeMessage.setFrom(contentMap.get("mailFrom").toString());
            //邮件接收人
            mimeMessage.setRecipients(Message.RecipientType.TO, contentMap.get("mailTo").toString());
            //邮件主题
            mimeMessage.setSubject(contentMap.get("mailTittle").toString());
            //创建多重消息
            MimeMultipart multipart = new MimeMultipart();
            //邮件正文
            BodyPart contentPart = new MimeBodyPart();
            contentPart.setContent(contentMap.get("mailContent").toString(),"text/html;charset=UTF-8");
            multipart.addBodyPart(contentPart);
            //邮件附件
            if(attachments != null) {
                for(File attachment : attachments) {
                    BodyPart attachmentPart = new MimeBodyPart();
                    DataSource source = new FileDataSource(attachment);
                    attachmentPart.setDataHandler(new DataHandler(source));
                    //避免中文乱码的处理
                    attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
                    multipart.addBodyPart(attachmentPart);
                }
            }
            mimeMessage.setContent(multipart,"UTF-8");
            //保存邮件
            mimeMessage.saveChanges();
            Transport.send(mimeMessage, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());
        }
        catch (Exception mex){
            mex.printStackTrace();
        }
    }
}

3、执行和邮件示例

调用

public class Test{
    public static void main(String[] args) {
        //发送方信息配置
        Map<String,Object> map = new HashMap<>();
        map.put("host","smtp.exmail.qq.com");
        map.put("mailFrom","hmf@xxx.com");
        map.put("passwd","xxx");
        map.put("mailTo","xxx@qq.com");
        //标题和内容配置
        map.put("mailTittle","测试发邮件,邮件主题");
        map.put("mailContent","测试发邮件,邮件内容");
        //发送简单邮件
        sendSimpleMail(map);
        //附件配置
        List<File> attaches = new ArrayList<>();
        File attach1 = new File("./data.csv");
        File attach2 = new File("./11.log");
        attaches.add(attach1);
        attaches.add(attach2);
        //发送带附件邮件
        SendAttachMail(map,attaches);
    }
}

简单邮件示例:

 带附件邮件示例:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个简单Java 发送邮件工具类,你可以根据自己的需求进行修改: ``` import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class MailUtil { private String host; // 邮件服务器主机名 private String username; // 发件人账号 private String password; // 发件人密码 public MailUtil(String host, String username, String password) { this.host = host; this.username = username; this.password = password; } /** * 发送邮件 * @param to 收件人邮箱地址 * @param subject 邮件主题 * @param content 邮件内容 */ public void sendMail(String to, String subject, String content) throws MessagingException { Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.smtp.host", host); props.setProperty("mail.smtp.auth", "true"); Session session = Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject(subject); message.setContent(content, "text/html;charset=utf-8"); Transport.send(message); } } ``` 使用示例: ``` public static void main(String[] args) { String host = "smtp.163.com"; String username = "[email protected]"; String password = "your_email_password"; MailUtil mailUtil = new MailUtil(host, username, password); String to = "[email protected]"; String subject = "测试邮件"; String content = "这是一封测试邮件,如果你收到了,请回复我。"; try { mailUtil.sendMail(to, subject, content); System.out.println("邮件发送成功!"); } catch (MessagingException e) { System.out.println("邮件发送失败:" + e.getMessage()); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁宁可可

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值