JavaMail發送郵件(帶附件)
import javax.mail.*; import javax.mail.internet.*; import java.util.*; import javax.activation.*; public class SendMail2 { private String host = ""; //smtp服務器 private String from = ""; //發件人地址 private String to = ""; //收件人地址 private String affix = ""; //附件地址 private String affixName = ""; //附件名稱 private String user = ""; //用戶名 private String pwd = ""; //密碼 private String subject = ""; //郵件標題 public void setAddress(String from,String to,String subject){ this.from = from; this.to = to; this.subject = subject; } public void setAffix(String affix,String affixName){ this.affix = affix; this.affixName = affixName; } public void send(String host,String user,String pwd) { this.host = host; this.user = user; this.pwd = pwd; Properties props = new Properties(); //設置發送郵件的郵件服務器的屬性(這里使用網易的smtp服務器) props.put("mail.smtp.host", host); //需要經過授權,也就是有戶名和密碼的校驗,這樣才能通過驗證(一定要有這一條) props.put("mail.smtp.auth", "true"); //用剛剛設置好的props對象構建一個session Session session = Session.getDefaultInstance(props); //有了這句便可以在發送郵件的過程中在console處顯示過程信息,供調試使 //用(你可以在控制臺(console)上看到發送郵件的過程) session.setDebug(true); //用session為參數定義消息對象 MimeMessage message = new MimeMessage(session); try{ //加載發件人地址 message.setFrom(new InternetAddress(from)); //加載收件人地址 message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); //加載標題 message.setSubject(subject); // 向multipart對象中添加郵件的各個部分內容,包括文本內容和附件 Multipart multipart = new MimeMultipart(); // 設置郵件的文本內容 BodyPart contentPart = new MimeBodyPart(); contentPart.setText("郵件的具體內容在此"); multipart.addBodyPart(contentPart); //添加附件 BodyPart messageBodyPart= new MimeBodyPart(); DataSource source = new FileDataSource(affix); //添加附件的內容 messageBodyPart.setDataHandler(new DataHandler(source)); //添加附件的標題 //這里很重要,通過下面的Base64編碼的轉換可以保證你的中文附件標題名在發送時不會變成亂碼 sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); messageBodyPart.setFileName("=?GBK?B?"+enc.encode(affixName.getBytes())+"?="); multipart.addBodyPart(messageBodyPart); //將multipart對象放到message中 message.setContent(multipart); //保存郵件 message.saveChanges(); // 發送郵件 Transport transport = session.getTransport("smtp"); //連接服務器的郵箱 transport.connect(host, user, pwd); //把郵件發送出去 transport.sendMessage(message, message.getAllRecipients()); transport.close(); }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args){ SendMail2 cn = new SendMail2(); //設置發件人地址、收件人地址和郵件標題 cn.setAddress("test@163.com","test@sina.com.cn","一個帶附件的JavaMail郵件"); //設置要發送附件的位置和標題 cn.setAffix("d:/cafe.gif","咖啡.gif"); //設置smtp服務器以及郵箱的帳號和密碼 cn.send("smtp.163.com","shw","wwx1981"); } }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!