zoukankan      html  css  js  c++  java
  • 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();
    }

    }
    }

  • 相关阅读:
    LeetCode "Median of Two Sorted Arrays"
    LeetCode "Distinct Subsequences"
    LeetCode "Permutation Sequence"

    LeetCode "Linked List Cycle II"
    LeetCode "Best Time to Buy and Sell Stock III"
    LeetCode "4Sum"
    LeetCode "3Sum closest"
    LeetCode "3Sum"
    LeetCode "Container With Most Water"
  • 原文地址:https://www.cnblogs.com/sx-zeng/p/7020102.html
Copyright © 2011-2022 走看看