java 发送邮件

4 篇文章 0 订阅

邮件配置文件:

username : 发送者邮箱
password:发送者密码
host: ip
sendEmailUsers:主送邮箱
ccEmailUsers: 抄送邮箱

private void sendMail(String title, String content) {
    EmailSendInfo mailInfo = new EmailSendInfo();
    String host = Property.getProperty("host");
    String username = Property.getProperty("username");
    String password = Property.getProperty("password");
    String sendEmailUsers = Property.getProperty("sendEmailUsers");
    String ccEmialUsers = Property.getProperty("ccEmailUsers");
    mailInfo.setMailServerHost(host);
    mailInfo.setValidate(true);
    mailInfo.setUserName(username);
    mailInfo.setPassword(password);
    mailInfo.setFromAddress(username);
    mailInfo.setToAddress(sendEmailUsers);
    mailInfo.setCcAddress(ccEmialUsers);
    mailInfo.setSubject(title);
    mailInfo.setContent(content);
    //发送文体格式邮件
    EmailSender.sendTextMail(mailInfo);
}



public static boolean sendTextMail(EmailSendInfo mailInfo) {
    boolean sendStatus = false;//发送状态
    // 判断是否需要身份认证
    EmailAuthenticator authenticator = null;
    Properties pro = mailInfo.getProperties();
    if (mailInfo.isValidate()) {
        // 如果需要身份认证,则创建一个密码验证器
        authenticator = new EmailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
    }
    // 根据邮件会话属性和密码验证器构造一个发送邮件的session
    Session sendMailSession = Session.getInstance(pro, authenticator);
    //【调试时使用】开启Session的debug模式
    sendMailSession.setDebug(false);
    try {
        // 根据session创建一个邮件消息
        MimeMessage mailMessage = new MimeMessage(sendMailSession);
        // 创建邮件发送者地址
        Address from = new InternetAddress(mailInfo.getFromAddress());
        // 设置邮件消息的发送者
        mailMessage.setFrom(from);

        String toaddr=mailInfo.getToAddress();
        String ccaddr=mailInfo.getCcAddress();
        mailMessage.addRecipients(Message.RecipientType.TO,toaddr);
        mailMessage.addRecipients(Message.RecipientType.CC,ccaddr);
        // 设置邮件消息的主题
        mailMessage.setSubject(mailInfo.getSubject(), "UTF-8");
        // 设置邮件消息发送的时间
        mailMessage.setSentDate(new Date());
        // 设置邮件消息的主要内容
        String mailContent = mailInfo.getContent();
// mailMessage.setText(mailContent, "UTF-8");

        Multipart mainPart = new MimeMultipart();

        // 创建一个包含HTML内容的MimeBodyPart
        BodyPart html = new MimeBodyPart();
        // 设置HTML内容
        html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
        mainPart.addBodyPart(html);
        mailMessage.setContent(mainPart);
        // 发送邮件
        Transport.send(mailMessage);
        sendStatus = true;
    } catch (MessagingException ex) {
        ex.printStackTrace();
    }
    return sendStatus;
}



public class EmailSendInfo {
// 发送邮件的服务器的IP和端口
private String mailServerHost;
private String mailServerPort = "25";
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
private String toAddress;
// 邮件抄送者的地址
private String ccAddress;
// 登陆邮件发送服务器的用户名和密码
private String userName;
private String password;
// 是否需要身份验证
private boolean validate = false;
// 邮件主题
private String subject;
// 邮件的文本内容
private String content;
// 邮件附件的文件名
private String[] attachFileNames;

/**
 * 获得邮件会话属性
 */
Properties getProperties() {
    Properties p = new Properties();
    p.put("mail.smtp.host", this.mailServerHost);
    p.put("mail.smtp.port", this.mailServerPort);
    p.put("mail.smtp.auth", validate ? "true" : "false");
    return p;
}

public String getMailServerHost() {
    return mailServerHost;
}

/**
 *
 * @param mailServerHost 邮件服务器ip
 */
public void setMailServerHost(String mailServerHost) {
    this.mailServerHost = mailServerHost;
}

public String getMailServerPort() {
    return mailServerPort;
}

/**
 *
 * @param mailServerPort 邮件服务器端口
 */
public void setMailServerPort(String mailServerPort) {
    this.mailServerPort = mailServerPort;
}

boolean isValidate() {
    return validate;
}

/**
 *
 * @param validate 是否需要身份验证
 */
public void setValidate(boolean validate) {
    this.validate = validate;
}

public String[] getAttachFileNames() {
    return attachFileNames;
}

/**
 *
 * @param fileNames 文件名
 */
public void setAttachFileNames(String[] fileNames) {
    this.attachFileNames = fileNames;
}

String getFromAddress() {
    return fromAddress;
}

/**
 *
 * @param fromAddress 邮件发送者的地址
 */
public void setFromAddress(String fromAddress) {
    this.fromAddress = fromAddress;
}

String getPassword() {
    return password;
}

/**
 *
 * @param password 登陆邮件发送服务器的密码
 */
public void setPassword(String password) {
    this.password = password;
}

String getToAddress() {
    return toAddress;
}

/**
 *
 * @param toAddress 邮件接收者的地址
 */
public void setToAddress(String toAddress) {
    this.toAddress = toAddress;
}

String getUserName() {
    return userName;
}

/**
 *
 * @param userName 登陆邮件发送服务器的用户名
 */
public void setUserName(String userName) {
    this.userName = userName;
}

String getSubject() {
    return subject;
}

/**
 *
 * @param subject 邮件主题
 */
public void setSubject(String subject) {
    this.subject = subject;
}

String getContent() {
    return content;
}

/**
 *
 * @param textContent 邮件的文本内容
 */
public void setContent(String textContent) {
    this.content = textContent;
}

String getCcAddress() {
    return ccAddress;
}

public void setCcAddress(String ccAddress) {
    this.ccAddress = ccAddress;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值