天天看點

Java郵件發送帶附件

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/qingfeng812/article/details/8948281

package Test;

import java.util.Date;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Address;

import javax.mail.Authenticator;

import javax.mail.BodyPart;

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;

/*

需要的jar 包 activation.jar   mail.jar

*/

public class Send2{  

    // 郵箱伺服器  

    private String host = "smtp.qq.com";// 或者是 smtp.163(sina).com  

    private String username = "

[email protected]

";   //郵箱名稱

    private String password = " ";   //郵箱密碼

    private String mail_to = "

";   //發送至 人郵箱

    private String mail_from = "

";   //發送人郵箱username

    private String mail_subject = "送你的幸福!湘竹集美伊客!";   //郵箱主題

    private String mail_body = "測試資訊";   //郵箱内容

    private String personalName = "

"; //發送人郵箱username

    public Send2(){}  

    public void send() throws Exception{  

        try{  

           Properties props=new Properties();  

 Authenticator auth = new Email_Autherticator(); // 進行郵件伺服器使用者認證  

           props.put("mail.smtp.host", host);  

           props.put("mail.smtp.auth", "true");  

           Session session = Session.getDefaultInstance(props, auth);  

           //設定session,和郵件伺服器進行通訊。  

           MimeMessage message = new MimeMessage(session);  

           message.setSubject(mail_subject); // 設定郵件主題  

           //添加附件資訊

           Multipart   mp   =   new   MimeMultipart(); 

           BodyPart mbp1 = new MimeBodyPart();

           FileDataSource fds = new FileDataSource("d:\\測試.doc");

           mbp1.setDataHandler(new DataHandler(fds));

            //設定附件名稱

           mbp1.setFileName(MimeUtility.encodeText("d:\\測試.doc", "utf-8", null));

           mp.addBodyPart(mbp1);

           BodyPart mbp = new MimeBodyPart();

           mbp.setContent(mail_body, "text/html;charset=utf-8");

           mp.addBodyPart(mbp);

           message.setContent(mp);

           message.setSentDate(new Date()); // 設定郵件發送日期  

           Address address = new InternetAddress(mail_from, personalName);  

           message.setFrom(address); // 設定郵件發送者的位址  

           Address toAddress = new InternetAddress(mail_to); // 設定郵件接收方的位址  

           message.addRecipient(Message.RecipientType.TO, toAddress);  

           Transport.send(message); // 發送郵件  

           System.out.println("郵件發送成功!");  

        }catch (Exception ex){  

            //ex.printStackTrace();  

            if(ex instanceof javax.mail.AuthenticationFailedException){

             System.out.println("認證錯誤");

            }

           throw new Exception(ex.getMessage());  

        }  

   }  

    /** 

     * 用來進行伺服器對使用者的認證 

     */ 

    public class Email_Autherticator extends Authenticator{  

        public Email_Autherticator(){  

            super();  

        public Email_Autherticator(String user, String pwd){  

           super();  

           username = user;  

           password = pwd;  

        public PasswordAuthentication getPasswordAuthentication(){  

            return new PasswordAuthentication(username, password);  

    }  

    public static void main(String[] args){  

     Send2 sendmail = new Send2();  

         try{  

             sendmail.send();  

             ex.printStackTrace();  

/*注意: 當發送人使用QQ 郵箱時,QQ 郵箱必須開啟PoP3/SMTP 協定

如何啟用PoP3/SMTP 協定

登陸QQ郵箱

https://mail.qq.com/

設定-->賬号--> 開啟PoP3/SMTP 協定*/