• java 发送邮件带附件,正文带图片


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

    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.activation.FileDataSource;
    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    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 SendEmail
    {
    //收件人邮箱地址
    private String[] to;
    //抄送人邮箱地址
    private String[] copyto;
    //发件人邮箱地址
    private String from ="xxx";
    //SMTP服务器地址 如:smtp.163.com
    private String smtpServer = "xxx";
    //登录SMTP服务器的用户名(不需要后面带@xxx.com)
    private String username ="";
    //登录SMTP服务器的密码 (服务密码,不是登录密码)
    private String password ="xxx";
    //邮件主题
    private String subject;
    //邮件正文
    private String content;
    //记录所有附件文件的集合
    List<String> attachments = new ArrayList<String>();
    // 发件人昵称 
    private String senderNick = "xxx";
    //无参数的构造器
    public SendEmail()
    {
    }

    public SendEmail(String[] to , String from , String smtpServer
    , String username , String password
    , String subject , String content,String senderNick,String[] copyto)
    {
    this.to = to;
    this.from = from;
    this.smtpServer = smtpServer;
    this.username = username;
    this.password = password;
    this.subject = subject;
    this.content = content;
    this.senderNick = senderNick;
    this.copyto = copyto;
    }
    //to属性的setter方法
    public void setTo(String[] to)
    {
    this.to = to;
    }
    //to属性的setter方法
    public void setCopyto(String[] copyto)
    {
    this.copyto = copyto;
    }
    //from属性的setter方法
    public void setFrom(String from)
    {
    this.from = from;
    }
    //smtpServer属性的setter方法
    public void setSmtpServer(String smtpServer)
    {
    this.smtpServer = smtpServer;
    }
    //username属性的setter方法
    public void setUsername(String username)
    {
    this.username = username;
    }
    //password属性的setter方法
    public void setPassword(String password)
    {
    this.password = password;
    }
    //subject属性的setter方法
    public void setSubject(String subject)
    {
    this.subject = subject;
    }
    //content属性的setter方法
    public void setContent(String content)
    {
    this.content = content;
    }

    public void setSenderNick(String senderNick)
    {
    this.senderNick = senderNick;
    }

    //把邮件主题转换为中文
    public String transferChinese(String strText)
    {
    try
    {
    strText = MimeUtility.encodeText(new String(strText.getBytes() , "UTF-8"), "UTF-8", null);
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    return strText;
    }
    //增加附件,将附件文件名添加的List集合中
    public void attachfile(String fname)
    {
    attachments.add(fname);
    }
    //发送邮件
    public boolean send(String path1,String path2) throws MalformedURLException
    {
    //创建邮件Session所需的Properties对象
    Properties props = new Properties();
    props.put("mail.smtp.host" , smtpServer);
    props.put("mail.smtp.auth" , "true");
    props.put("mail.smtp.debug" , "true");
    //创建Session对象
    Session session = Session.getDefaultInstance(props
    //以匿名内部类的形式创建登录服务器的认证对象
    , new Authenticator()
    {
    public PasswordAuthentication getPasswordAuthentication()
    {
    return new PasswordAuthentication(username, password);
    }
    });
    try
    {
    //构造MimeMessage并设置相关属性值
    MimeMessage msg = new MimeMessage(session);

    String nick = "";
    try {
    nick = javax.mail.internet.MimeUtility.encodeText(senderNick);
    } catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
    }
    //设置发件人
    try {
    msg.setFrom(new InternetAddress(from,nick));
    } catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
    }
    //设置收件人
    if (to != null && to.length > 0) {
    String toListStr = getMailList(to);
    msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toListStr));
    }

    //设置抄送人
    if (copyto != null && copyto.length > 0) {
    String copytoListStr = getMailList(copyto);
    msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copytoListStr));
    }
    //InternetAddress[] addresses = {new InternetAddress(toListStr)};
    //msg.setRecipients(Message.RecipientType.TO , addresses);
    //设置邮件主题
    subject = transferChinese(subject);
    msg.setSubject(subject);
    //构造Multipart
    Multipart mp = new MimeMultipart();
    //向Multipart添加正文
    MimeBodyPart mbpContent = new MimeBodyPart();
    mbpContent.setContent(content, "text/html;charset=UTF-8");
    //将BodyPart添加到MultiPart中
    mp.addBodyPart(mbpContent);

    //path1="D:\xxx.png";
    mbpContent = new MimeBodyPart();
    DataSource fd = new FileDataSource(path1);
    mbpContent.setDataHandler(new DataHandler(fd));
    mbpContent.setHeader("Content-ID", "<image1>");
    mp.addBodyPart(mbpContent);

    //path2="D:\xxx.png";
    mbpContent = new MimeBodyPart();
    DataSource fd2 = new FileDataSource(path2);
    mbpContent.setDataHandler(new DataHandler(fd2));
    mbpContent.setHeader("Content-ID", "<image2>");
    mp.addBodyPart(mbpContent);

    //向Multipart添加附件
    //遍历附件列表,将所有文件添加到邮件消息里
    for(String efile : attachments)
    {
    MimeBodyPart mbpFile = new MimeBodyPart();
    //以文件名创建FileDataSource对象
    FileDataSource fds = new FileDataSource(efile);
    //处理附件
    mbpFile.setDataHandler(new DataHandler(fds));
    try {
    mbpFile.setFileName(MimeUtility.encodeText(fds.getName()));
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    //将BodyPart添加到MultiPart中
    mp.addBodyPart(mbpFile);
    }

    //清空附件列表
    attachments.clear();
    //向Multipart添加MimeMessage
    msg.setContent(mp);
    //设置发送日期
    msg.setSentDate(new Date());
    //发送邮件
    Transport.send(msg);
    }
    catch (MessagingException mex)
    {
    mex.printStackTrace();
    return false;
    }
    return true;
    }


    //多用户发送用,号格开
    public String getMailList(String[] mailArray) {
    StringBuffer toList = new StringBuffer();
    int length = mailArray.length;
    if (mailArray != null && length < 2) {
    toList.append(mailArray[0]);
    } else {
    for (int i = 0; i < length; i++) {
    toList.append(mailArray[i]);
    if (i != (length - 1)) {
    toList.append(",");
    }

    }
    }
    return toList.toString();
    }



    public static void main(String[] args)
    {

    SendEmail sendMail = new SendEmail();
    //设置收件人的地址多人用逗号隔开
    String[] to = {"xxxx@xx.com", "xxx@xxxx.com"};
    sendMail.setTo(to);
    //设置抄送人人的地址多人用逗号隔开
    String[] copyto = {"xxxx@xx.com"};
    sendMail.setCopyto(copyto);

    //设置标题
    sendMail.setSubject("测试邮件标题!");
    //设置内容
    StringBuffer sb = new StringBuffer();
    sb.append("<body>" );
    sb.append("<p style='text-align:left'>hi,all</p>")
    .append("<p style='text-align:left;text-indent:2em;'>这里是测试数据!</p>");

    sendMail.setContent(sb.toString());
    //附件
    sendMail.attachfile("D://xxx.xls");
    try {

    //可以在这里设置你要发送的图片路径
    if (sendMail.send(null,null))
    {
    System.out.println("---邮件发送成功---");
    }
    } catch (MalformedURLException e) {

    e.printStackTrace();
    }

    }
    }

  • 相关阅读:
    【MM系列】SAP库龄报表逻辑理解
    【MM系列】SAP技巧之更改布局
    【MM系列】SAP里批量设置采购信息记录删除标记
    《跃迁-从技术到管理的硅谷路径》读书笔记
    Java安全编码标准
    web安全/渗透测试--1--web安全原则
    使用spring validation完成数据后端校验
    9 个Java 异常处理的规则
    程序员必看:给你一份详细的Spring Boot知识清单
    Java架构技术知识点梳理
  • 原文地址:https://www.cnblogs.com/sx-zeng/p/7020102.html
Copyright © 2020-2023  润新知