java代碼如何發送一封帶圖片的郵件


本章記錄三個,1.java 發送普通的郵件  2.java發送帶附件的郵件 3.java發送帶圖片的郵件

1.java發送普通郵件--首先要設置如下的幾個具體的參數:

public static String username = "***@163.com"; // 服務郵箱(from郵箱)
public static String password = "*****"; // 郵箱密碼
public static String senderNick = "***"; // 發件人昵稱
private Properties props; // 系統屬性----下面會講一下具體的配置。
private Session session; // 郵件會話對象
private MimeMessage mimeMsg; // MIME郵件對象
private MimeMultipart mp; // Multipart對象,郵件內容,標題,附件,圖片等內容均添加到其中后再生成MimeMessage對象

2.現在看一下系統屬性Properties的屬性應該如何配置:
 props = System.getProperties();
props.put("mail.smtp.auth", "true"); //mail.smtp.auth屬性或提供SMTP傳輸與連接到SMTP服務器的用戶名和密碼--如果需要用到用戶驗證即為TRUE
props.put("mail.transport.protocol", "smtp");//協議
props.put("mail.smtp.host", "*****");//傳輸郵件協議的服務器
props.put("mail.smtp.port", "25");//郵件服務器的端口號
props.put("username", username);//發出郵箱地址
props.put("password", password);//發出郵箱密碼
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.ssl.trust", "*****");

3.接下來是配置seesion
--對用戶進行驗證--然后將驗證放入到session中,驗證的方法如下
MyAuthenticator myauth = new MyAuthenticator(senderNick, password);
session = Session.getDefaultInstance(props, myauth);

4.用戶驗證的方法:---
class MyAuthenticator extends Authenticator {
String userName = "";
String password = "";

public MyAuthenticator() {
}

public MyAuthenticator(String userName, String password) {
this.userName = userName;
this.password = password;
}

protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
}
增加了3,4中的用戶的驗證,可以避免郵箱發送郵件,報Error:535 5.7.3 Authentication unsuccessful的問題。

5.接下來是填充郵件正文和圖片方面:

mimeMsg = new MimeMessage(session);
mp = new MimeMultipart("related");

// 自定義發件人昵稱
String nick = "";
try {
nick = javax.mail.internet.MimeUtility.encodeText(senderNick);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// 設置發件人
mimeMsg.setFrom(new InternetAddress(from, nick));--from 發件人的地址,昵稱
// 設置收件人
if (to != null && to.length() > 0) {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
}
// 設置抄送人
if (cc != null && cc.length() > 0) {
mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
}
// 設置主題
mimeMsg.setSubject(subject);

//設置圖片
MimeBodyPart text = new MimeBodyPart();
text.setContent("此郵件為系統自動發送<img src='cid:a'><img src='cid:b'>","text/html;charset=gb2312");
MimeBodyPart img = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource("D://Chrysanthemum.jpg"));//圖片路徑
img.setDataHandler(dh);
img.setContentID("a");

MimeBodyPart img2 = new MimeBodyPart();
DataHandler dh2 = new DataHandler(new FileDataSource("d://Chrysanthemum.jpg"));//第二張圖片路徑
img2.setDataHandler(dh2);
img2.setContentID("b");

MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(img);
mm.setSubType("related");// 設置正文與圖片之間的關系
// 圖班與正文的 body
MimeBodyPart all = new MimeBodyPart();
all.setContent(mm);
MimeMultipart mm2 = new MimeMultipart();
mm2.addBodyPart(all);
mm2.addBodyPart(img2);
mm2.setSubType("mixed");



//設置附件:
                if (errorList != null && errorList.size() > 0) {
for (String file : errorList) {
contentPart = new MimeBodyPart();
FileDataSource source = new FileDataSource(file);
contentPart.setDataHandler(new DataHandler(source));
String[] imgname = file.replace(File.separator, ",").split(",");
int num = imgname.length - 1;
contentPart.setFileName(imgname[num]);
multipart.addBodyPart(contentPart);
}
}
                mimeMsg.setContent(mm2);
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.getAllRecipients());
transport.close();
} else {
Transport.send(mimeMsg);
}
System.out.println("郵件發送成功");




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM