JAVA 發送各種郵箱郵件 javamail


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


免責聲明!

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



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