java meil
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
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;
/**
* 突然想起要可以寫一下博客,忘記是那個版本的 mail 了 ,可以確定的是不是最新版的 ,系統是老系統來的
* @author mysterious
*
*/
public class ComplexMail { // 復雜郵件
// 記得開 POP3/SMTP/IMAP 服務
private static final String account_number = "abc@163.com"; // 也是發送人
private static final String password = "***"; // 密鑰 // //
private static final String Email_server_address = "smtp.163.com"; // 163 :smtp.163.com qq:smtp.qq.com
/*static { // 為了防止 附件出現 文件類型變bin類型 // 未測試
System.setProperty("mail.mime.splitlongparameters", "false");
System.setProperty("mail.mime.charset", "UTF-8");
}*/
public void Understanding_email(String addressee,String HTML_content,List<String> enclosure){ // // 收件人地址,html,附件
// 創建郵件服務器鏈接會話
/*MimeMessage 類 ----- 代表整封郵件,包括MIME對象的消息頭與MimeMultipart對象
MimeBodyPart 類 ---- 代表郵件中一個MIME消息
MimeMultiPart 類 ---- 代表一個或多個MIME消息組合而成的組合MIME消息 */
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp"); // // 使用的協議(JavaMail規范要求)
properties.put("mail.smtp.host", Email_server_address); // // 發件人的郵箱的 SMTP 服務器地址
properties.put("mail.smtp.auth", "true");// 連接認證
properties.put("mail.debug", "true");// 在控制臺顯示連接日志信息
//properties.put("mail.smtp.ssl.enable", "true");//設置是否使用ssl安全連接 ---一般都使用
// 而用163郵箱的時候就不需要驗證碼,但是 SSL 加密時(端口465/587),總是會出現各種錯誤,不用 SSL 加密(端口25)就可以正常發送
Session session = Session.getInstance(properties);// 與郵件服務器連接會話
// 步驟二:創建Message
MimeMessage message = new MimeMessage(session);
// 設置郵件頭(簡單郵件和復雜郵件相同
try {
message.setFrom(new InternetAddress(account_number, "協同系統", "UTF-8")); // 發件人 加個昵稱
//message.setRecipients(Message.RecipientType.TO, "");
message.setRecipient(Message.RecipientType.TO, new InternetAddress(addressee, "人員", "UTF-8")); // 收件人 價格昵稱
message.setSubject("圖紙", "UTF-8"); // 郵件主題
MimeMultipart mimeMultipart = new MimeMultipart();
if(enclosure.size()>0){
for(int i = 0;i<enclosure.size();i++){
System.out.println(enclosure.get(i));
// 設置郵件體
MimeBodyPart attachment = new MimeBodyPart(); // 將所有 BodyPart 組合起來變為 Multipart // 將最后合成的 MultiPart 交給 MimeMessage 對象
attachment.setDataHandler(new DataHandler(new FileDataSource(enclosure.get(i))));// 將附件數據添加到“節點” (鏈接數據文件)
// 因中文附件名編碼的問題,會產生亂碼,必須使用 JavaMail 提供的工具類 MimeUtility 來包裝中文字符
// 設置 filename 可自動生成: Content-Disposition:attachment;filename=xxx
String name = enclosure.get(i);
attachment.setFileName(MimeUtility.encodeText(name.substring(19))); // 可以防止 出現 文件類型變bin類型
mimeMultipart.addBodyPart(attachment);
}
}
// html
System.out.println("HTML_content>>>"+HTML_content);
MimeBodyPart content = new MimeBodyPart();
content.setContent(HTML_content, "text/html;charset=utf-8");
mimeMultipart.addBodyPart(content);
mimeMultipart.setSubType("mixed");
// 5. Content: 郵件正文(可以使用html標簽)(內容有廣告嫌疑,避免被郵件服務器誤認為是濫發廣告以至返回失敗,請修改發送內容)
message.setContent(mimeMultipart);
message.setSentDate(new Date()); // 設置發件時間
message.saveChanges();// 保存設置
Transport transport = session.getTransport();// 4. 根據 Session 獲取郵件傳輸對象
transport.connect(Email_server_address,account_number, password);
// 發送郵件, 發到所有的收件地址, message.getAllRecipients() 獲取到的是在創建郵件對象時添加的所有收件人, 抄送人, 密送人
transport.sendMessage(message, message.getAllRecipients());
transport.close();// 關閉連接
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//ComplexMail complexMail =new ComplexMail();
//mailbox 是 主要內容,我這里是 HTML 的代碼,AnnexDetailsList 為附件的 地址
//complexMail.Understanding_email("", mailbox, AnnexDetailsList); // 收件人地址,html,附件
}
}
import java.util.Date;import java.util.List;import java.util.Properties;
import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;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;
/*** 突然想起要可以寫一下博客,忘記是那個版本的 mail 了 ,可以確定的是不是最新版的 ,系統是老系統來的* @author mysterious**/public class ComplexMail { // 復雜郵件// 記得開 POP3/SMTP/IMAP 服務//private static final String account_number = "calmness_killer@163.com"; // 也是發送人//private static final String password = "XHNBBISRRRMHACWR"; // 密鑰private static final String account_number = "sjst2021@163.com"; // 也是發送人private static final String password = "TFXQXEGWNOJVWOVE"; // 密鑰 // // LMH@183894461st // TFXQXEGWNOJVWOVEprivate static final String Email_server_address = "smtp.163.com"; // 163 :smtp.163.com qq:smtp.qq.com/*static { // 為了防止 附件出現 文件類型變bin類型 // 未測試System.setProperty("mail.mime.splitlongparameters", "false");System.setProperty("mail.mime.charset", "UTF-8");}*/public void Understanding_email(String addressee,String HTML_content,List<String> enclosure){ // // 收件人地址,html,附件// 創建郵件服務器鏈接會話/*MimeMessage 類 ----- 代表整封郵件,包括MIME對象的消息頭與MimeMultipart對象MimeBodyPart 類 ---- 代表郵件中一個MIME消息MimeMultiPart 類 ---- 代表一個或多個MIME消息組合而成的組合MIME消息 */Properties properties = new Properties(); properties.put("mail.transport.protocol", "smtp"); // // 使用的協議(JavaMail規范要求) properties.put("mail.smtp.host", Email_server_address); // // 發件人的郵箱的 SMTP 服務器地址 properties.put("mail.smtp.auth", "true");// 連接認證 properties.put("mail.debug", "true");// 在控制臺顯示連接日志信息 //properties.put("mail.smtp.ssl.enable", "true");//設置是否使用ssl安全連接 ---一般都使用 // 而用163郵箱的時候就不需要驗證碼,但是 SSL 加密時(端口465/587),總是會出現各種錯誤,不用 SSL 加密(端口25)就可以正常發送 Session session = Session.getInstance(properties);// 與郵件服務器連接會話 // 步驟二:創建Message MimeMessage message = new MimeMessage(session); // 設置郵件頭(簡單郵件和復雜郵件相同 try {message.setFrom(new InternetAddress(account_number, "審圖協同系統", "UTF-8")); // 發件人 加個昵稱//message.setRecipients(Message.RecipientType.TO, "");message.setRecipient(Message.RecipientType.TO, new InternetAddress(addressee, "人員", "UTF-8")); // 收件人 價格昵稱message.setSubject("審圖", "UTF-8"); // 郵件主題MimeMultipart mimeMultipart = new MimeMultipart();if(enclosure.size()>0){for(int i = 0;i<enclosure.size();i++){System.out.println(enclosure.get(i));// 設置郵件體 MimeBodyPart attachment = new MimeBodyPart();// 將所有 BodyPart 組合起來變為 Multipart // 將最后合成的 MultiPart 交給 MimeMessage 對象 attachment.setDataHandler(new DataHandler(new FileDataSource(enclosure.get(i))));// 將附件數據添加到“節點” (鏈接數據文件) // 因中文附件名編碼的問題,會產生亂碼,必須使用 JavaMail 提供的工具類 MimeUtility 來包裝中文字符 // 設置 filename 可自動生成: Content-Disposition:attachment;filename=xxx String name = enclosure.get(i); attachment.setFileName(MimeUtility.encodeText(name.substring(19))); // 可以防止 出現 文件類型變bin類型 mimeMultipart.addBodyPart(attachment);}} // htmlSystem.out.println("HTML_content>>>"+HTML_content); MimeBodyPart content = new MimeBodyPart(); content.setContent(HTML_content, "text/html;charset=utf-8"); mimeMultipart.addBodyPart(content); mimeMultipart.setSubType("mixed"); // 5. Content: 郵件正文(可以使用html標簽)(內容有廣告嫌疑,避免被郵件服務器誤認為是濫發廣告以至返回失敗,請修改發送內容) message.setContent(mimeMultipart); message.setSentDate(new Date()); // 設置發件時間 message.saveChanges();// 保存設置 Transport transport = session.getTransport();// 4. 根據 Session 獲取郵件傳輸對象 transport.connect(Email_server_address,account_number, password); // 發送郵件, 發到所有的收件地址, message.getAllRecipients() 獲取到的是在創建郵件對象時添加的所有收件人, 抄送人, 密送人 transport.sendMessage(message, message.getAllRecipients()); transport.close();// 關閉連接} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
public static void main(String[] args) {// TODO Auto-generated method stub//ComplexMail complexMail =new ComplexMail();//complexMail.Understanding_email(toMailList.get(0).get("BY5").toString(), mailbox, AnnexDetailsList); // 收件人地址,html,附件 }
}
時刻告訴自己,自己是個菜雞......
總結
- 上一篇: 微软必应正测试“紧凑视图”,搜索结果页面
- 下一篇: SAP CRM WebClient UI