<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    JavaMail(1)--使用SMTP協議發送簡單郵件

    Posted on 2009-05-31 00:29 啥都寫點 閱讀(958) 評論(0)  編輯  收藏 所屬分類: J2SE
    關鍵技術:
    • javax.mail.Session:定義了一個基本郵件回話,是JavaMail API最高層入口類。所有其他類都是經由這個Session才得以生效。Session對象用java.util.Properties對象獲取信息,如郵件服務器、用戶名、密碼及整個應用程序中共享的其他信息。
    • java.mail.Message:存儲郵件的消息內容,因為它是抽象類,必須用一個子類,最常用的子類是javax.mail.internet.MimeMessage,它支持MIME格式的郵件,MIME是多用途Internet郵件擴充協議,擴充基本的面向文本的Internet郵件系統,可以再消息中包含二進制附件。
    • javax.mail.Address:用于確定郵件的地址。Address是個抽象類,一般使用javax.mail.internet.InternetAddress類。
    • javax.mail.Authenticator:JavaMail API可以利用Authenticator通過用戶名和密碼訪問郵件服務器。Authenticator是抽象類,需要先定義它的子類,并重寫它的getPasswordAuthentication方法,在方法中返回PasswordAuthentication實例。子類對象創建后,需要向Sesstion注冊Authenticator。在需要身份認證的時候,Session就會通知Authenticator。
    • javax.mail.Transport:調用Transport的send靜態方法可以發送郵件,參數為一個Message對象。

    package book.email;

    import java.util.Properties;

    /**
     * 發送郵件需要使用的基本信息
     
    */
    public class MailSenderInfo {
        
    // 發送郵件的服務器的IP和端口
        private String mailServerHost;
        
    private String mailServerPort = "25";
        
    // 郵件發送者的地址
        private String fromAddress;
        
    // 郵件接收者的地址
        private String toAddress;

        
    // 登陸郵件發送服務器的用戶名和密碼
        private String userName;
        
    private String password;
        
    // 是否需要身份驗證
        private boolean validate = true;
        
        
    // 郵件主題
        private String subject;
        
    // 郵件的文本內容
        private String content;
        
        
    // 郵件附件的文件名
        private String[] attachFileNames;
        
        
        
    /**
         * 獲得郵件會話屬性
         
    */
        
    public Properties getProperties(){
            Properties p 
    = new Properties();
            p.put(
    "mail.smtp.host"this.mailServerHost);
            p.put(
    "mail.smtp.port"this.mailServerPort);
            p.put(
    "mail.smtp.auth", validate ? "true" : "false");
            
    return p;
        }
        
        
    public String getMailServerHost() {
            
    return mailServerHost;
        }
        
    public void setMailServerHost(String mailServerHost) {
            
    this.mailServerHost = mailServerHost;
        }
        
    public String getMailServerPort() {
            
    return mailServerPort;
        }
        
    public void setMailServerPort(String mailServerPort) {
            
    this.mailServerPort = mailServerPort;
        }
        
    public boolean isValidate() {
            
    return validate;
        }
        
    public void setValidate(boolean validate) {
            
    this.validate = validate;
        }
        
    public String[] getAttachFileNames() {
            
    return attachFileNames;
        }
        
    public void setAttachFileNames(String[] fileNames) {
            
    this.attachFileNames = fileNames;
        }
        
    public String getFromAddress() {
            
    return fromAddress;
        }
        
    public void setFromAddress(String fromAddress) {
            
    this.fromAddress = fromAddress;
        }
        
    public String getPassword() {
            
    return password;
        }
        
    public void setPassword(String password) {
            
    this.password = password;
        }
        
    public String getToAddress() {
            
    return toAddress;
        }
        
    public void setToAddress(String toAddress) {
            
    this.toAddress = toAddress;
        }
        
    public String getUserName() {
            
    return userName;
        }
        
    public void setUserName(String userName) {
            
    this.userName = userName;
        }
        
    public String getSubject() {
            
    return subject;
        }
        
    public void setSubject(String subject) {
            
    this.subject = subject;
        }
        
    public String getContent() {
            
    return content;
        }
        
    public void setContent(String textContent) {
            
    this.content = textContent;
        } 

        
    }

    package book.email;

    import javax.mail.Authenticator;
    import javax.mail.PasswordAuthentication;

    /**
     * 郵件身份認證器,在發送郵件時使用
     
    */
    public class MyAuthenticator extends Authenticator{
        
    // 登陸發送郵件服務器的用戶名
        private String userName;
        
    // 登陸發送郵件服務器的密碼
        private String password;
        
    public MyAuthenticator(String userName, String password){
            
    this.userName = userName;
            
    this.password = password;
        }
        
    /**
         * 覆蓋父類的該方法,獲得密碼認證器
         
    */
        
    protected PasswordAuthentication getPasswordAuthentication() {
            
    return new PasswordAuthentication(userName, password);
        }
        
        
    public String getPassword() {
            
    return password;
        }
        
    public void setPassword(String password) {
            
    this.password = password;
        }
        
    public String getUserName() {
            
    return userName;
        }
        
    public void setUserName(String userName) {
            
    this.userName = userName;
        }
    }





    package book.email;

    import java.util.Date;

    import javax.mail.Address;
    import javax.mail.BodyPart;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Multipart;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;

    /**
     * 簡單郵件(不帶附件的郵件)發送器
     
    */
    public class SimpleMailSender {
        
    /**
         * 以文本格式發送郵件
         * 
    @param mailInfo    待發送的郵件的信息
         
    */
        
    public static boolean sendTextMail(MailSenderInfo mailInfo) {
            
    // 判斷是否需要身份認證
            MyAuthenticator authenticator = null;
            
    if (mailInfo.isValidate()) {
                
    // 如果需要身份認證,則創建一個密碼驗證器
                authenticator = new MyAuthenticator(mailInfo.getUserName(),
                        mailInfo.getPassword());
            }
            
    // 根據郵件會話屬性和密碼驗證器構造一個發送郵件的session
            Session sendMailSession = Session.getInstance(mailInfo
                    .getProperties(), authenticator);
            
    try {
                
    // 根據session創建一個郵件消息
                Message mailMessage = new MimeMessage(sendMailSession);
                
    // 創建郵件發送者地址
                Address from = new InternetAddress(mailInfo.getFromAddress());
                
    // 設置郵件消息的發送者
                mailMessage.setFrom(from);
                
    // 創建郵件的接收者地址,并設置到郵件消息中
                Address to = new InternetAddress(mailInfo.getToAddress());
                mailMessage.setRecipient(Message.RecipientType.TO,to);
                
    // 設置郵件消息的主題
                mailMessage.setSubject(mailInfo.getSubject());
                
    // 設置郵件消息發送的時間
                mailMessage.setSentDate(new Date());
                
    // 設置郵件消息的主要內容
                String mailContent = mailInfo.getContent();
                mailMessage.setText(mailContent);
                
                
    // 發送郵件
                Transport.send(mailMessage);
                
    return true;
            } 
    catch (MessagingException ex) {
                ex.printStackTrace();
            }
            
    return false;
        }

        
    /**
         * 以HTML格式發送郵件
         * 
    @param mailInfo    待發送的郵件信息
         
    */
        
    public static boolean sendHtmlMail(MailSenderInfo mailInfo){
            
    // 判斷是否需要身份認證
            MyAuthenticator authenticator = null;
            
    if (mailInfo.isValidate()) {
                
    // 如果需要身份認證,則創建一個密碼驗證器
                authenticator = new MyAuthenticator(mailInfo.getUserName(),
                        mailInfo.getPassword());
            }
            
    // 根據郵件會話屬性和密碼驗證器構造一個發送郵件的session
            Session sendMailSession = Session.getInstance(mailInfo
                    .getProperties(), authenticator);
            
    try {
                
    // 根據session創建一個郵件消息
                Message mailMessage = new MimeMessage(sendMailSession);
                
    // 創建郵件發送者地址
                Address from = new InternetAddress(mailInfo.getFromAddress());
                
    // 設置郵件消息的發送者
                mailMessage.setFrom(from);
                
    // 創建郵件的接收者地址,并設置到郵件消息中
                Address to = new InternetAddress(mailInfo.getToAddress());
                
    // Message.RecipientType.TO屬性表示接收者的類型為TO
                mailMessage.setRecipient(Message.RecipientType.TO,to);
                
    // 設置郵件消息的主題
                mailMessage.setSubject(mailInfo.getSubject());
                
    // 設置郵件消息發送的時間
                mailMessage.setSentDate(new Date());
                
                
    // MiniMultipart類是一個容器類,包含MimeBodyPart類型的對象
                Multipart mainPart = new MimeMultipart();
                
    // 創建一個包含HTML內容的MimeBodyPart
                BodyPart html = new MimeBodyPart();
                
    // 設置HTML內容
                html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
                mainPart.addBodyPart(html);
                
    // 將MiniMultipart對象設置為郵件內容
                mailMessage.setContent(mainPart);
                
    // 發送郵件
                Transport.send(mailMessage);
                
    return true;
            } 
    catch (MessagingException ex) {
                ex.printStackTrace();
            }
            
    return false;
        }
        
        
    public static void main(String[] args) {
            
    // 創建郵件信息
            MailSenderInfo mailInfo = new MailSenderInfo();
            mailInfo.setMailServerHost(
    "smtp.sina.com.cn");
            mailInfo.setMailServerPort(
    "25");
            mailInfo.setValidate(
    true);
            mailInfo.setUserName(
    "***");
            mailInfo.setPassword(
    "***");
            mailInfo.setFromAddress(
    "***@sina.com");
            mailInfo.setToAddress(
    "***@163.com");
            mailInfo.setSubject(
    "MyMail測試");
            mailInfo.setContent(
    "我的郵件測試\n\rMy test mail\n\r");

            
    // 以文本格式發送郵件
            SimpleMailSender.sendTextMail(mailInfo);
            
    // 以HTML格式發送郵件
            SimpleMailSender.sendHtmlMail(mailInfo);
        }
    }





                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 美女被免费网站在线视频免费 | 337p日本欧洲亚洲大胆色噜噜| 精品亚洲A∨无码一区二区三区| 亚洲色无码国产精品网站可下载| 美女无遮挡拍拍拍免费视频| 久久A级毛片免费观看| 国产成人无码a区在线观看视频免费| 97在线线免费观看视频在线观看| 亚洲av无码成人精品区| 亚洲三级在线播放| 亚洲制服在线观看| 国产免费AV片在线观看播放| 亚洲黄片毛片在线观看| 中文字幕在线观看亚洲视频| 在线观看免费无码专区| 亚洲av无码一区二区三区不卡| 久久无码av亚洲精品色午夜 | jizz在线免费观看| 国产午夜亚洲精品理论片不卡 | 国产精品亚洲专区无码WEB| 免费A级毛片无码A| 亚洲精品乱码久久久久久按摩| 久久精品国产亚洲AV麻豆~| 羞羞视频在线免费观看| 亚洲日韩在线观看免费视频| 九九美女网站免费| 亚洲天堂电影在线观看| 国产免费拔擦拔擦8x| a在线观看免费视频| 亚洲色自偷自拍另类小说| 老司机精品视频免费| 久久精品国产亚洲网站| 国产99久久久久久免费看| 国产美女精品久久久久久久免费| 亚洲人成电影在线观看青青| 国产一区二区三区免费看| 亚洲av永久中文无码精品综合| 无码少妇一区二区浪潮免费| 黄人成a动漫片免费网站| 国产美女精品视频免费观看| 久久精品国产影库免费看|