javaMail实现发送E_mail添加附件

本文介绍了一个使用Java实现的邮件发送工具类,该工具支持发送带附件的邮件,并通过SMTP认证进行身份验证。文章详细展示了如何配置邮件服务器、设置发件人及收件人信息、添加邮件主题和正文内容等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.king.mail;

import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

public class SendMailUtil {

 private String to;
 private String from;
 private String username;
 private String password;
 private String smtpServer;
 private String filename;
 private String subject;
 private String content;
 Vector file = new Vector();

 public SendMailUtil() {
 }

 public SendMailUtil(String to, String from, String smtpServer,
   String username, String password, String subject, String content) {// 构造器
  this.to = to;
  this.from = from;
  this.smtpServer = smtpServer;
  this.username = username;
  this.password = password;
  this.subject = subject;
  this.content = content;
 }

 public String transferChinese(String strText) {// 内容格式转码
  try {
   strText = MimeUtility.encodeText(new String(strText.getBytes(),
     "gb2312"), "gb2312", "B");
   
  } catch (Exception err) {
   err.printStackTrace();
  }
  return strText;
 }

 public void attachfile(String fname) {
  file.addElement(fname);
 }

 public boolean send() {
  Properties props = System.getProperties();
  props.put("mail.smtp.host", smtpServer);
  props.put("mail.smtp.auth", "true");
  Session session = Session.getDefaultInstance(props,
    new Authenticator() {
     public PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication(username, password);// 用户登录stmp服务器时候验证用户名和密码。
     }
    });
  try {
   MimeMessage msg = new MimeMessage(session);
   msg.setFrom(new InternetAddress(from));
   InternetAddress[] address = { new InternetAddress(to) };
   msg.setRecipients(Message.RecipientType.TO, address);
   subject = transferChinese(subject);
   msg.setSubject(subject);
   Multipart mp = new MimeMultipart();
   MimeBodyPart mbpContent = new MimeBodyPart();
   mbpContent.setText(content);
   mp.addBodyPart(mbpContent);
   Enumeration efile = file.elements();
   while (efile.hasMoreElements()) {
    MimeBodyPart mbpFile = new MimeBodyPart();
    filename = efile.nextElement().toString();
    FileDataSource fds = new FileDataSource(filename);
    mbpFile.setDataHandler(new DataHandler(fds));
    mbpFile.setFileName(fds.getName());
    mp.addBodyPart(mbpFile);
   }
   file.removeAllElements();
   msg.setContent(mp);
   msg.setSentDate(new Date());
   Transport.send(msg);
  } catch (Exception err) {
   err.printStackTrace();
   return false;
  }
  return true;
 }

 public static void main(String[] args) {
  try {
   SendMailUtil sm = new SendMailUtil();
   sm.setSmtpServer("smtp.sina.com"); // 邮件协议
   sm.setUsername("kingsever@sina.com");// 发件人
   sm.setPassword("6557043");// 发件人密码
   sm.setTo("kingsever@sina.com");// 收件人地址
   sm.setFrom("kingsever@sina.com");// 发件人地址
   sm.setSubject("测试附件能不能上传");// 邮件主题
   sm.setContent("http://localhost:8080/sms/datasyn.sms?sign=go");
   // sm.attachfile(""); 发送附件
   sm.send(); // 发送
   System.out.println("send success...");
  } catch (Exception err) {
   err.printStackTrace();
  }
 }

 public String getContent() {
  return content;
 }

 public void setContent(String content) {
  this.content = content;
 }

 public Vector getFile() {
  return file;
 }

 public void setFile(Vector file) {
  this.file = file;
 }

 public String getFilename() {
  return filename;
 }

 public void setFilename(String filename) {
  this.filename = filename;
 }

 public String getFrom() {
  return from;
 }

 public void setFrom(String from) {
  this.from = from;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public String getSmtpServer() {
  return smtpServer;
 }

 public void setSmtpServer(String smtpServer) {
  this.smtpServer = smtpServer;
 }

 public String getSubject() {
  return subject;
 }

 public void setSubject(String subject) {
  this.subject = subject;
 }

 public String getTo() {
  return to;
 }

 public void setTo(String to) {
  this.to = to;
 }

 public String getUsername() {
  return username;
 }

 public void setUsername(String username) {
  this.username = username;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值