Java發送郵件,帶抄送和附件的代碼

m2yy 9年前發布 | 2K 次閱讀 Java

import java.io.UnsupportedEncodingException;
import java.util.Properties;

import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; 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 EmailManager {

private Properties props; //系統屬性 
private Session session; //郵件會話對象 
private MimeMessage mimeMsg; //MIME郵件對象 
private Multipart mp; //Multipart對象,郵件內容,標題,附件等內容均添加到其中后再生成MimeMessage對象 

/**
 * Constructor
 * @param smtp 郵件發送服務器
 */
public EmailManager(){
    props = System.getProperties();  
    props.put("mail.smtp.auth","false"); 
    session = Session.getDefaultInstance(props, null);
    session.setDebug(true);
    mimeMsg = new MimeMessage(session);
    mp = new MimeMultipart(); 
} 

/**
 * Constructor
 * @param smtp 郵件發送服務器
 */
public EmailManager(String smtp, String username, String password){ 
    props = System.getProperties();
    props.put("mail.smtp.auth","true"); 
    props.put("mail.smtp.host", smtp);
    props.put("username", username);
    props.put("password", password);
    session = Session.getDefaultInstance(props, null);
    session.setDebug(true);
    mimeMsg = new MimeMessage(session);
    mp = new MimeMultipart(); 
} 

/** 
 * 發送郵件
 */ 
public boolean sendMail(String from, String[] to, String[] copyto, String subject, String content, String filename) {
    try {
        //設置發信人
        mimeMsg.setFrom(new InternetAddress(from)); 
        //設置接收人
        for (int i = 0; i < to.length; i++) {
            mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to[i])); 
        }
        //設置抄送人
        for (int i = 0; i < copyto.length; i++) {
            mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copyto[i])); 
        }
        //設置主題
        mimeMsg.setSubject(subject);
        //設置正文
        BodyPart bp = new MimeBodyPart(); 
        bp.setContent(content, "text/html;charset=utf-8");
        mp.addBodyPart(bp);
        //設置附件
        bp = new MimeBodyPart();
        FileDataSource fileds = new FileDataSource(filename); 
        bp.setDataHandler(new DataHandler(fileds)); 
        bp.setFileName(MimeUtility.encodeText(fileds.getName(),"UTF-8","B"));
        mp.addBodyPart(bp); 
        mimeMsg.setContent(mp); 
        mimeMsg.saveChanges(); 
        //發送郵件
        if(props.get("mail.smtp.auth").equals("true")){
            Transport transport = session.getTransport("smtp"); 
            transport.connect((String)props.get("mail.smtp.host"), (String)props.get("username"), (String)props.get("password")); 
            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO)); 
            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.CC)); 
            transport.close(); 
        }else{
            Transport.send(mimeMsg);
        }
        System.out.println("郵件發送成功");
    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return true;
}

public static void main(String[] args){
    String smtp = "smtp.163.com";
    String username="xxx@163.com";
    String password="xxx";
    String from = "xxx@163.com";
    String[] to = {"xxx@qq.com"};
    String[] copyto = {"xxx@qq.com"};
    String subject = "主題";
    String content = "郵件內容";
   String filename = "D:\\xxx.txt";
   EmailManager email = new EmailManager(smtp, username, password);
   email.sendMail(from, to, copyto, subject, content, filename);
}

}</pre>

 本文由用戶 m2yy 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!