zoukankan      html  css  js  c++  java
  • 一个支持邮件带附件群发的java类

    import java.io.UnsupportedEncodingException;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Properties;

    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Multipart;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    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 MailUtils {
    private static String host;
    private static String username;
    private static String password;
    private static String from;
    private static String nick;
    static {
    try {
    // Test Data
    host = "smtp.163.com";
    username = "13524929813@163.com";
    password = "zhao123";
    from = "13524929813@163.com";
    nick = "测试邮件";
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    /**
    * 发送邮件
    *
    * @param to
    * 收件人列表,以","分割
    * @param subject
    * 标题
    * @param body
    * 内容
    * @param filepath
    * 附件列表,无附件传递null
    * @return
    * @throws MessagingException
    * @throws AddressException
    * @throws UnsupportedEncodingException
    */
    public static boolean sendMail(String to, String subject, String body,
    List<String> filepath) throws AddressException, MessagingException,
    UnsupportedEncodingException {
    // 参数修饰
    if (body == null) {
    body = "";
    }
    if (subject == null) {
    subject = "无主题";
    }
    // 创建Properties对象
    Properties props = System.getProperties();
    // 创建信件服务器
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.auth", "true"); // 通过验证
    // 得到默认的对话对象
    Session session = Session.getDefaultInstance(props, null);
    // 创建一个消息,并初始化该消息的各项元素
    MimeMessage msg = new MimeMessage(session);
    nick = MimeUtility.encodeText(nick);
    msg.setFrom(new InternetAddress(nick + "<" + from + ">"));
    // 创建收件人列表
    if (to != null && to.trim().length() > 0) {
    String[] arr = to.split(",");
    int receiverCount = arr.length;
    if (receiverCount > 0) {
    InternetAddress[] address = new InternetAddress[receiverCount];
    for (int i = 0; i < receiverCount; i++) {
    address[i] = new InternetAddress(arr[i]);
    }
    msg.addRecipients(Message.RecipientType.TO, address);
    msg.setSubject(subject);
    // 后面的BodyPart将加入到此处创建的Multipart中
    Multipart mp = new MimeMultipart();
    // 附件操作
    if (filepath != null && filepath.size() > 0) {
    for (String filename : filepath) {
    MimeBodyPart mbp = new MimeBodyPart();
    // 得到数据源
    FileDataSource fds = new FileDataSource(filename);
    // 得到附件本身并至入BodyPart
    mbp.setDataHandler(new DataHandler(fds));
    // 得到文件名同样至入BodyPart
    mbp.setFileName(fds.getName());
    mp.addBodyPart(mbp);
    }
    MimeBodyPart mbp = new MimeBodyPart();
    mbp.setText(body);
    mp.addBodyPart(mbp);
    // 移走集合中的所有元素
    filepath.clear();
    // Multipart加入到信件
    msg.setContent(mp);
    } else {
    // 设置邮件正文
    msg.setText(body);
    }
    // 设置信件头的发送日期
    msg.setSentDate(new Date());
    msg.saveChanges();
    // 发送信件
    Transport transport = session.getTransport("smtp");
    transport.connect(host, username, password);
    transport.sendMessage(msg,
    msg.getRecipients(Message.RecipientType.TO));
    transport.close();
    return true;
    } else {
    System.out.println("None receiver!");
    return false;
    }
    } else {
    System.out.println("None receiver!");
    return false;
    }
    }

    public static void main(String[] args) {
    List<String> filepath = new ArrayList<>();
    filepath.add("D:\pic\db7ebd481f59485291af475de2f495e5.jpg");
    filepath.add("D:\pic\20170726144715.jpg");
    try {
    sendMail("xuxiaorong@001bank.com,yangcong@001bank.com", "群发带附件测试邮件", "测试邮件,有附件",
    filepath);
    } catch (UnsupportedEncodingException | MessagingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

    }

  • 相关阅读:
    Category
    [转]IOS, xib和storyboard的混用
    关于delegate, category和subclass
    iOS 在viewController中监听Home键触发以及重新进入界面的方法
    ios获取当前语言
    Xcode Product -> Archive disabled
    安卓虚拟机启动后报错: 类似 SDK Manager] Error: Error parsing .....devices.xml 解决方案
    Objective-C中一个方法如何传递多个参数的理解
    oc的内存管理
    ios中Raw文件系统常用文件夹
  • 原文地址:https://www.cnblogs.com/zhaoblog/p/7563040.html
Copyright © 2011-2022 走看看