QQ郵箱
/** * 單條發送 * @param mail 郵件對象,包含發送人、郵件主題、郵件內容 * @param recipients 收件人 * @throws AddressException * @throws MessagingException */ public static void Send(MailPOJO mail) throws AddressException,MessagingException { Properties properties = new Properties(); properties.put("mail.transport.protocol", "smtp");// 連接協議 properties.put("mail.smtp.host", "smtp.qq.com");// 主機名 properties.put("mail.smtp.port", 465);// 端口號 properties.put("mail.smtp.auth", "true"); properties.put("mail.smtp.ssl.enable", "true");// 設置是否使用ssl安全連接 ---一般都使用 properties.put("mail.debug", "true");// 設置是否顯示debug信息 true 會在控制台顯示相關信息 // 得到回話對象 Session session = Session.getInstance(properties); // 獲取郵件對象 Message message = new MimeMessage(session); // 設置發件人郵箱地址 message.setFrom(new InternetAddress(mail.getAddresser())); // 設置收件人郵箱地址 message.setRecipient(Message.RecipientType.TO, new InternetAddress(mail.getRecipients()));//一個收件人 // 設置郵件標題 message.setSubject(mail.getTheme()); // 設置郵件內容 message.setText(mail.getMailContent()); // 得到郵差對象 Transport transport = session.getTransport(); // 連接自己的郵箱賬戶 transport.connect(mail.getUSERNAME(), mail.getPASSWORD());// 密碼為QQ郵箱開通的stmp服務后得到的客戶端授權碼 // 發送郵件 transport.sendMessage(message, message.getAllRecipients()); transport.close(); } /** * 群發 * @param mail 郵件對象,包含發送人、郵件主題、郵件內容 * @param recipients 收件人 * @throws AddressException * @throws MessagingException */ public static void Batch_send(MailPOJO mail,List<InternetAddress> olist) throws AddressException,MessagingException { //把收件人放入對象中 InternetAddress[] recipients = new InternetAddress[olist.size()]; for(int i = 0 ; i< olist.size() ;i++){ recipients[i] = olist.get(i); } Properties properties = new Properties(); properties.put("mail.transport.protocol", "smtp");// 連接協議 properties.put("mail.smtp.host", "smtp.qq.com");//設置發件人的SMTP服務器地址 properties.put("mail.smtp.port", 465);// 端口號 properties.put("mail.smtp.auth", "true"); properties.put("mail.smtp.ssl.enable", "true");// 設置是否使用ssl安全連接 ---一般都使用 properties.put("mail.debug", "true");// 設置是否顯示debug信息 true 會在控制台顯示相關信息 // 得到回話對象 Session session = Session.getInstance(properties); // 獲取郵件對象 Message message = new MimeMessage(session); // 設置發件人郵箱地址 message.setFrom(new InternetAddress(mail.getAddresser())); // 設置收件人郵箱地址 message.setRecipients(Message.RecipientType.TO, recipients);//多個收件人 // 抄送給自己 message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(mail.getAddresser())); // 設置郵件標題 message.setSubject(mail.getTheme()); // 設置郵件內容 message.setText(mail.getMailContent()); // 得到郵差對象 Transport transport = session.getTransport(); // 連接自己的郵箱賬戶 transport.connect(mail.getUSERNAME(), mail.getPASSWORD());// 密碼為QQ郵箱開通的stmp服務后得到的客戶端授權碼 // 發送郵件 transport.sendMessage(message, message.getAllRecipients()); transport.close(); }
163郵箱
static String HOST = "smtp.163.com"; // smtp服務器
/** * 單條發送郵件(不帶附件) * @param context 郵件內容 */ public static void send(MailPOJO mail,String recipients) { Properties properties = new Properties(); properties.put("mail.smtp.host", HOST);//設置發送郵件的郵件服務器的屬性(這里使用網易的smtp服務器) properties.setProperty("mail.transport.protocol", "smtp"); properties.put("mail.smtp.auth", "true"); //需要經過授權,也就是有戶名和密碼的校驗,這樣才能通過驗證(一定要有這一條) Session session = Session.getDefaultInstance(properties);//用props對象構建一個session session.setDebug(true); MimeMessage message = new MimeMessage(session);//用session為參數定義消息對象 try { message.setFrom(new InternetAddress(mail.getAddresser()));// 加載發件人地址 message.addRecipient(Message.RecipientType.TO,new InternetAddress(recipients));//加載收件人 message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(mail.getAddresser()));//設置在發送給收信人之前給自己(發送方)抄送一份,不然會被當成垃圾郵件,報554錯 message.setSubject(mail.getTheme());//加載標題 Multipart multipart = new MimeMultipart();//向multipart對象中添加郵件的各個部分內容,包括文本內容和附件 BodyPart contentPart = new MimeBodyPart();//設置郵件的文本內容 contentPart.setText(mail.getMailContent()); //放入郵件主題 multipart.addBodyPart(contentPart); message.setContent(multipart);//將multipart對象放到message中 message.saveChanges(); //保存郵件 Transport transport = session.getTransport("smtp");//發送郵件 transport.connect(HOST, mail.getUSERNAME(), mail.getPASSWORD());//連接服務器的郵箱 transport.sendMessage(message, message.getAllRecipients());//把郵件發送出去 transport.close();//關閉連接 } catch (Exception e) { e.printStackTrace(); } } /** * 批量發送郵件(不帶附件) * @param TOS 收件人 * @param mail 郵件內容 */ public static void Batch_send(String[] TOS,MailPOJO mail) { Properties props = new Properties(); props.put("mail.smtp.host", HOST);//設置發送郵件的郵件服務器的屬性(這里使用網易的smtp服務器) props.setProperty("mail.transport.protocol", "smtp"); props.put("mail.smtp.auth", "true"); //需要經過授權,也就是有戶名和密碼的校驗,這樣才能通過驗證(一定要有這一條) Session session = Session.getDefaultInstance(props);//用props對象構建一個session session.setDebug(true); MimeMessage message = new MimeMessage(session);//用session為參數定義消息對象 try { message.setFrom(new InternetAddress(mail.getAddresser()));// 加載發件人地址 InternetAddress[] sendTo = new InternetAddress[TOS.length]; // 加載收件人地址 for (int i = 0; i < TOS.length; i++) { sendTo[i] = new InternetAddress(TOS[i]); } message.addRecipients(Message.RecipientType.TO,sendTo); message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(mail.getAddresser()));//設置在發送給收信人之前給自己(發送方)抄送一份,不然會被當成垃圾郵件,報554錯 message.setSubject(mail.getMailContent());//加載標題 Multipart multipart = new MimeMultipart();//向multipart對象中添加郵件的各個部分內容,包括文本內容和附件 BodyPart contentPart = new MimeBodyPart();//設置郵件的文本內容 contentPart.setText(mail.getMailContent()); multipart.addBodyPart(contentPart); message.setContent(multipart);//將multipart對象放到message中 message.saveChanges(); //保存郵件 Transport transport = session.getTransport("smtp");//發送郵件 transport.connect(HOST, mail.getUSERNAME(), mail.getPASSWORD());//連接服務器的郵箱 transport.sendMessage(message, message.getAllRecipients());//把郵件發送出去 transport.close();//關閉連接 } catch (Exception e) { e.printStackTrace(); } }
Gmail郵箱
public static void main(String[] args) { // Recipient's email ID needs to be mentioned. String to = "123@qq.com";//change accordingly // Sender's email ID needs to be mentioned String from = "123456";//change accordingly final String username = "123456@gmail.com";//賬號 final String password = "456789";//密碼// Assuming you are sending email through relay.jangosmtp.net String host = "smtp.gmail.com"; Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.port", "587"); props.put("mail.smtp.connectiontimeout", 1000*60); props.put("mail.smtp.timeout", 1000*60); props.put("mail.smtp.writetimeout", 1000*60); // Get the Session object. Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { // Create a default MimeMessage object. Message message = new MimeMessage(session); // Set From: header field of the header. message.setFrom(new InternetAddress(from)); // Set To: header field of the header. message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); // Set Subject: header field message.setSubject("Testing Subject"); // Now set the actual message message.setText("Hello, this is sample for to check send " + "email using JavaMailAPI "); // Send message Transport.send(message); System.out.println("Sent message successfully...."); } catch (MessagingException e) { throw new RuntimeException(e); } }
Outlook郵箱
/** * 帶附件 * @param mail 郵箱對象 * @param to 收件人 * @param File_Path 附件存放路徑 * @return */ public static boolean sendMain(MailPOJO mail,String to,String File_Path) { //獲取系統屬性,主要用於設置郵件相關的參數。 Properties properties = System.getProperties(); //設置郵件傳輸服務器,由於本次是發送郵件操作,所需我們需要配置smtp協議,按outlook官方同步郵件的要求,依次配置協議地址,端口號和加密方法 properties.setProperty("mail.smtp.host", "smtp.office365.com"); properties.setProperty("mail.smtp.port", "587"); properties.setProperty("mail.smtp.starttls.enable", "true"); //用戶驗證並返回Session,開啟用戶驗證,設置發送郵箱的賬號密碼。 properties.setProperty("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(mail.getUSERNAME(), mail.getPASSWORD());//賬號密碼 } }); //創建MimeMessage消息對象,消息頭配置了收發郵箱的地址,消息體包含了郵件標題和郵件內容。接收者類型:TO代表直接發送,CC代表抄送,BCC代表秘密抄送。 try { MimeMessage message = new MimeMessage(session); message.addHeader("X-Mailer","Microsoft Outlook Express 6.00.2900.2869"); message.setFrom(new InternetAddress(mail.getAddresser())); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(mail.getAddresser())); message.setSubject(mail.getTheme()); // 1.創建復合消息體 Multipart multipart = new MimeMultipart(); // 2.添加附件 BodyPart filePart = new MimeBodyPart(); DataSource source = new FileDataSource(File_Path);//附件存放路徑 filePart.setDataHandler(new DataHandler(source)); filePart.setFileName(source.getName()); multipart.addBodyPart(filePart); // 3.添加文本內容 MimeBodyPart textPart = new MimeBodyPart(); textPart.setText(mail.getMailContent()); multipart.addBodyPart(textPart); // 4.綁定消息對象 message.setContent(multipart); // 5.發送郵件 Transport.send(message); return true; } catch (MessagingException e) { e.printStackTrace(); return false; } } /** * @Title: 發送outlook郵件 * @Description: 需要outlook郵箱賬號密碼 * @param: to //收件人郵箱 * @return: String * @throws */ public static boolean send(MailPOJO mail,String to) { //獲取系統屬性,主要用於設置郵件相關的參數。 Properties properties = System.getProperties(); //設置郵件傳輸服務器,由於本次是發送郵件操作,所需我們需要配置smtp協議,按outlook官方同步郵件的要求,依次配置協議地址,端口號和加密方法 properties.setProperty("mail.smtp.host", "smtp.office365.com"); properties.setProperty("mail.smtp.port", "587"); properties.setProperty("mail.smtp.starttls.enable", "true"); //用戶驗證並返回Session,開啟用戶驗證,設置發送郵箱的賬號密碼。 properties.setProperty("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(mail.getUSERNAME(), mail.getPASSWORD());//賬號密碼 } }); //創建MimeMessage消息對象,消息頭配置了收發郵箱的地址,消息體包含了郵件標題和郵件內容。接收者類型:TO代表直接發送,CC代表抄送,BCC代表秘密抄送。 try { MimeMessage message = new MimeMessage(session); message.addHeader("X-Mailer","Microsoft Outlook Express 6.00.2900.2869"); message.setFrom(new InternetAddress(mail.getAddresser())); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(mail.getAddresser())); message.setSubject(mail.getTheme()); // 1.創建復合消息體 Multipart multipart = new MimeMultipart(); // 2.添加文本內容 MimeBodyPart textPart = new MimeBodyPart(); textPart.setText(mail.getMailContent()); multipart.addBodyPart(textPart); // 3.綁定消息對象 message.setContent(multipart); // 4.發送郵件 Transport.send(message); return true; } catch (MessagingException e) { e.printStackTrace(); return false; } }
Yandex郵箱
/** * * @param from 賬號 * @param pass 密碼 * @param to 收件人郵箱 * @param subject 主題 * @param body 正文 * @throws AddressException * @throws MessagingException */ public static void sendFromYandex(String from, String pass, String to, String subject, String body) throws AddressException, MessagingException { Properties props = System.getProperties(); String host = "smtp.yandex.com"; props.put("mail.smtp.host", host); props.put("mail.smtp.user", from); props.put("mail.smtp.password", pass); props.put("mail.smtp.port", "465"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.quitwait", "false"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.debug", "true"); Session session = Session.getInstance(props); session.setDebug(true); MimeMessage message = new MimeMessage(session); message.setHeader("Content-Type", "text/plain; charset=UTF-8"); message.setSubject(subject, "UTF-8"); message.setText(body, "UTF-8"); try { message.setFrom(new InternetAddress(from)); InternetAddress toAddress = new InternetAddress(to); message.addRecipient(Message.RecipientType.TO, toAddress); //設置在發送給收信人之前給自己(發送方)抄送一份,不然會被當成垃圾郵件,報554錯 message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(to)); message.setSubject(subject); message.setText(body); Transport transport = session.getTransport("smtp"); transport.connect(host, from, pass); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (AddressException ae) { ae.printStackTrace(); } catch (MessagingException me) { me.printStackTrace(); } }
mailPOJO
/** * 郵箱對象 * @author JM.H * */ public class MailPOJO { //收件人 private String recipients; //發件人 private String addresser; //郵件主題 private String theme; //郵件內容 private String MailContent; //發送的郵箱賬號 private String USERNAME; //發送的郵箱密碼 private String PASSWORD; public String getAddresser() { return addresser; } public void setAddresser(String addresser) { this.addresser = addresser; } public String getTheme() { return theme; } public void setTheme(String theme) { this.theme = theme; } public String getMailContent() { return MailContent; } public void setMailContent(String mailContent) { MailContent = mailContent; } public String getUSERNAME() { return USERNAME; } public void setUSERNAME(String uSERNAME) { USERNAME = uSERNAME; } public String getPASSWORD() { return PASSWORD; } public void setPASSWORD(String pASSWORD) { PASSWORD = pASSWORD; } public String getRecipients() { return recipients; } public void setRecipients(String recipients) { this.recipients = recipients; } }
MAVEN
<!-- 郵件發送APIhttps://mvnrepository.com/artifact/javax.mail/mail --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <dependency> <groupId>com.microsoft.ews-java-api</groupId> <artifactId>ews-java-api</artifactId> <version>2.0</version> </dependency>
Z-Blog:http://www.361wx.com