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

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

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

    隨筆-57  評論-202  文章-17  trackbacks-0
          利用JavaMail的API可以快速的實現(xiàn)發(fā)送郵件的功能。下面是我使用的一個簡單的實例,實現(xiàn)了簡單的文本郵件的發(fā)送。

    import java.io.*;
    import java.util.
    *;
    import javax.activation.
    *;
    import javax.mail.
    *;
    import javax.mail.internet.
    *;

    import org.apache.log4j.
    *;

    /**
     * <p>Title: 發(fā)送郵件程序</p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2003</p>
     * <p>Company: </p>
     * @author George Hill
     * @version 1.0
     
    */


    public class MailAgent {

      
    /**
       * 調(diào)試工具
       
    */

      
    private static final Logger log = Logger.getLogger(MailAgent.class.getName());

      
    /**
       * SMTP服務(wù)器地址(默認(rèn)本機(jī))
       
    */

      
    private String smtp = "127.0.0.1";

      
    /**
       * 默認(rèn)構(gòu)造函數(shù)
       
    */

      
    private MailAgent() {}

      
    /**
       * 構(gòu)造函數(shù)
       * @param smtp SMTP服務(wù)器地址
       
    */

      
    private MailAgent(String smtp) {
        
    this.smtp = smtp;
      }


      
    /**
       * 唯一代理實例
       
    */

      
    private static MailAgent agent;

      
    /**
       * 獲取代理實例
       * @return 代理實例
       
    */

      
    public static synchronized MailAgent getInstance() {
        
    if (agent == null)
          agent 
    = new MailAgent();

        
    return agent;
      }


      
    /**
       * 獲取代理實例
       * @param smtp SMTP服務(wù)器地址
       * @return 代理實例
       
    */

      
    public static synchronized MailAgent getInstance(String smtp) {
        
    if (agent == null)
          agent 
    = new MailAgent(smtp);
        
    else
          agent.smtp 
    = smtp;

        
    return agent;
      }


      
    /**
       * 發(fā)送文本郵件
       * @param from 發(fā)送者地址
       * @param to 接收者地址
       * @param title 郵件標(biāo)題
       * @param content 郵件內(nèi)容
       * @throws MessagingException 郵件發(fā)送錯誤
       
    */

      
    public void sendTextMail(String from, String to, String title, String content)
          throws MessagingException 
    {
        boolean debug 
    = false;
        boolean error 
    = false;

        Properties props 
    = new Properties();
        props.put(
    "mail.smtp.host", smtp);
        
    if (debug)
          props.put(
    "mail.debug""true");

        Session s 
    = Session.getInstance(props, null);

        
    try {
          
    // create a message
          Message msg = new MimeMessage(s);
          msg.setFrom(
    new InternetAddress(from));
          InternetAddress[] address 
    = {new InternetAddress(to)};
          msg.setRecipients(Message.RecipientType.TO, address);
          msg.setSubject(title);
          msg.setSentDate(
    new java.util.Date());
          
    // If the desired charset is known, you can use
          
    // setText(text, charset)
          msg.setText(content);
          log.debug(
    "sending mail from " + from + " to " + to);
          Transport.send(msg);
          log.debug(
    "send mail OK");
        }
     catch (MessagingException mex) {
          error 
    = true;
          System.
    out.println("\n--Exception handling in msgsendsample.java");

          mex.printStackTrace();
          System.
    out.println();
          Exception ex 
    = mex;
          
    do {
            
    if (ex instanceof SendFailedException) {
              SendFailedException sfex 
    = (SendFailedException)ex;
              Address[] invalid 
    = sfex.getInvalidAddresses();
              
    if (invalid != null{
                System.
    out.println("    ** Invalid Addresses");
                
    if (invalid != null{
                  
    for (int i = 0; i < invalid.length; i++)
                    System.
    out.println("         " + invalid[i]);
                }

              }

              Address[] validUnsent 
    = sfex.getValidUnsentAddresses();
              
    if (validUnsent != null{
                System.
    out.println("    ** ValidUnsent Addresses");
                
    if (validUnsent != null{
                  
    for (int i = 0; i < validUnsent.length; i++)
                    System.
    out.println("         "+validUnsent[i]);
                }

              }

              Address[] validSent 
    = sfex.getValidSentAddresses();
              
    if (validSent != null{
                System.
    out.println("    ** ValidSent Addresses");
                
    if (validSent != null{
                  
    for (int i = 0; i < validSent.length; i++)
                    System.
    out.println("         "+validSent[i]);
                }

              }

            }


            System.
    out.println();
            
    if (ex instanceof MessagingException)
              ex 
    = ((MessagingException)ex).getNextException();
            
    else
              ex 
    = null;
          }
     while (ex != null);
        }


        
    if (error)
          
    throw new MessagingException("send mail failure");
      }


    }
    posted on 2005-06-02 16:30 小米 閱讀(2214) 評論(7)  編輯  收藏 所屬分類: Java

    評論:
    # 關(guān)于JavaMail的問題(第一部分) 2005-08-05 17:10 | kk
    我寫了個JavaMail的簡單實例 ,程序運行的時候,沒問題,就是發(fā)信發(fā)不到郵箱里,以下是我的代碼

    view層

    sendMail.jsp

    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
    <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ page contentType="text/html; charset=GBK" %>
    <html:html>
    <head>
    <title>
    sendMail
    </title>
    </head>
    <body>
    <br/>
    <br/>
    <br/>
    <br/>
    <p>
    <center>
    <html:form action="/student/sendMailAction.do" method="POST">
    <table border="1" width="400">
    <tr>
    <td><p align="center"><bean:message bundle="application_temp_KEY" key="app.jsp.toName"/></td>
    <td><p align="center"><html:text property="toName"/></td>
    </tr>
    <tr>
    <td><p align="center"><bean:message bundle="application_temp_KEY" key="app.jsp.fromName"/></td>
    <td><p align="center"><html:text property="fromName"/></td>
    </tr>
    <tr>
    <td><p align="center"><bean:message bundle="application_temp_KEY" key="app.jsp.subjectText"/></td>
    <td><p align="center"><html:text property="subjectText"/></td>
    </tr>
    <tr>
    <td><p align="center"><bean:message bundle="application_temp_KEY" key="app.jsp.contentText"/></td>
    <td><p align="center"><html:textarea property="contentText"/></td>
    </tr>
    </table>
    <br>
    <center>
    <html:submit property="submit" >
    <bean:message bundle="application_temp_KEY" key="app.jsp.submit"/>
    </html:submit>
    <html:reset property="reset">
    <bean:message bundle="application_temp_KEY" key="app.jsp.reset"/>
    </html:reset>
    </center>
    </html:form>
    </center>
    </body>
    </html:html>

    sendMailSuccess.jsp

    <%@ page contentType="text/html; charset=GBK" %>
    <html>
    <head>
    <title>
    sendMailSuccess
    </title>
    </head>
    <body bgcolor="#ffffff">
    <br>
    <br>
    <br>
    <br>
    <center>
    <h2>
    發(fā)送郵件成功!
    </h2>
    </center>
    </body>
    </html>  回復(fù)  更多評論
      
    # re: JavaMail的簡單實例(第二部分) 2005-08-05 17:11 | kk
    ActionForm類

    sendMailActionForm.java


    package strutsapp.form;

    import org.apache.struts.action.*;
    import javax.servlet.http.*;

    public class sendMailActionForm
    extends ActionForm {

    private String toName;

    private String fromName;

    private String subjectText;

    private String contentText;

    public String getContentText() {
    return contentText;
    }

    public String getFromName() {
    return fromName;
    }

    public String getSubjectText() {
    return subjectText;
    }

    public String getToName() {
    return toName;
    }

    public void setToName(String toName) {
    this.toName = toName;
    }

    public void setSubjectText(String subjectText) {
    this.subjectText = subjectText;
    }

    public void setFromName(String fromName) {
    this.fromName = fromName;
    }

    public void setContentText(String contentText) {
    this.contentText = contentText;
    }

    public ActionErrors validate(ActionMapping actionMapping,
    HttpServletRequest httpServletRequest) {
    return null;
    }

    public void reset(ActionMapping actionMapping,
    HttpServletRequest httpServletRequest) {
    }

    }

    Action類

    sendMailAction.java

    package strutsapp.action;

    import strutsapp.form.*;
    import org.apache.struts.action.*;
    import javax.servlet.http.*;
    import strutsapp.model.sendMail;

    public class sendMailAction extends Action {
    public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
    sendMailActionForm sendMailActionForm = (sendMailActionForm) actionForm;
    String toName = sendMailActionForm.getToName();
    String fromName = sendMailActionForm.getFromName();
    String subjectText = sendMailActionForm.getSubjectText();
    String contentText = sendMailActionForm.getContentText();
    sendMail sendmail = new sendMail();
    sendmail.sendmail(toName,fromName,subjectText,contentText);
    return actionMapping.findForward("sendMailSuccess");
    }
    }

    model類

    sendMail.java

    package strutsapp.model;

    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;

    public class sendMail {

    public void sendmail(String toName, String fromName,
    String subjectText,
    String contentText) {


    //郵件服務(wù)器
    String host = "127.0.0.1";
    //發(fā)送方的郵件地址
    String to = toName;
    //來自方的郵件地址
    String from = fromName;
    //發(fā)送主題
    String subject = subjectText;
    //發(fā)送內(nèi)容!
    String messageText = contentText;

    boolean sessionDebug = false;

    Properties props = System.getProperties();
    props.put("mail.host", host);
    props.put("mail.transport.protocol", "smtp");

    Session session = Session.getDefaultInstance(props, null);

    session.setDebug(sessionDebug);

    try {

    Message msg = new MimeMessage(session);

    msg.setFrom(new InternetAddress(from));
    InternetAddress[] address = {
    new InternetAddress(to)};
    msg.setRecipients(Message.RecipientType.TO, address);
    msg.setSubject(subject);
    msg.setSentDate(new Date());
    msg.setText(messageText);

    Transport.send(msg);
    }
    catch (MessagingException mex) {

    mex.printStackTrace();
    }

    }
    }  回復(fù)  更多評論
      
    # re: JavaMail的簡單實例(第三部分) 2005-08-05 17:12 | kk
    配置文件

    struts-config.xml

    <action-mappings>
    <action input="/student/sendMail.jsp" name="sendMailActionForm" path="/student/sendMailAction" scope="session" type="strutsapp.action.sendMailAction">
    <forward name="sendMailSuccess" path="/student/sendMailSuccess.jsp" redirect="true" />
    </action>
    </action-mappings>
    <message-resources key="application_temp_KEY" parameter="resources.application_temp" />

    資源文件

    application_temp.properties

    app.jsp.toName = toName
    app.jsp.fromName = fromName
    app.jsp.subjectText = subjectText
    app.jsp.contentText = contentText

    ----------------------------------------------
    提交表單后,顯示的信息,郵件發(fā)送成功,但是郵箱里收不到郵件。

    我在本上建的郵件服務(wù)器。用的是CMailServer,郵件服務(wù)器配置沒問題的,并且試過的。

    我是參照下面的這個程序,改的。


    import java.util.*;

    import javax.mail.*;
    import javax.mail.internet.*;


    public class sendmail {

    public static void main(String[] args) {

    //郵件服務(wù)器
    String host = "127.0.0.1";
    //發(fā)送方的郵件地址
    String to = "admin@620.com";
    //來自方的郵件地址
    String from = "missvrc@yahoo.com.cn";
    //發(fā)送主題
    String subject = "JSP Rules!";
    //發(fā)送內(nèi)容!
    String messageText = "I am sending a message using the"
    + " JavaMail API.\nI can include any text that I want.";
    boolean sessionDebug = false;


    Properties props = System.getProperties();
    props.put("mail.host", host);
    props.put("mail.transport.protocol", "smtp");

    Session session = Session.getDefaultInstance(props, null);


    session.setDebug(sessionDebug);

    try {

    Message msg = new MimeMessage(session);

    msg.setFrom(new InternetAddress(from));
    InternetAddress[] address = {new InternetAddress(to)};
    msg.setRecipients(Message.RecipientType.TO, address);
    msg.setSubject(subject);
    msg.setSentDate(new Date());
    msg.setText(messageText);


    Transport.send(msg);
    }
    catch (MessagingException mex) {

    mex.printStackTrace();
    }
    }
    }

    運行上面這個程序,往的服務(wù)器上發(fā)送沒有問題,但改成struts后,就不知道為什么了。

    謝謝了,高手。  回復(fù)  更多評論
      
    # re: JavaMail的簡單實例 2005-08-08 14:25 | 小米
    對不起,最近很忙,很少時間上來看看。其實我覺得這樣發(fā)評論的方式來問問題是不太好的,因為一般來說不可能時時上來看自己的博客。我看了下你的問題,覺得有下面兩點想問問:
    1.Action中是否正確的收到了來到View層的參數(shù)值;
    2.郵件沒有發(fā)送出去,有沒有返回什么錯誤信息?  回復(fù)  更多評論
      
    # re: JavaMail的簡單實例 2005-08-08 15:36 | kk
    你好,這個問題我現(xiàn)在已經(jīng)解決了,上面的代碼都是正確的,只是我在頁面輸入的時候,有個地方?jīng)]看清楚,輸入錯了,呵呵。。。。

    不過還是要感謝你,抽出自己寶貴時間。  回復(fù)  更多評論
      
    # re: JavaMail的簡單實例 2007-08-30 10:08 | wyx
    No encoding, It's a vital defect  回復(fù)  更多評論
      
    # re: JavaMail的簡單實例 2008-01-08 12:16 | asdf
    發(fā)關(guān)成功,但在郵箱里沒有這個郵件  回復(fù)  更多評論
      
    主站蜘蛛池模板: 国产偷国产偷亚洲清高APP| 亚洲美女在线国产| 在线永久免费的视频草莓| 久久青草免费91观看| 东北美女野外bbwbbw免费| 中文字幕成人免费高清在线 | 四虎免费久久影院| 免费高清在线影片一区| 女人被男人躁的女爽免费视频| 无码乱肉视频免费大全合集| 在线视频精品免费| 最近中文字幕无免费视频| 国产免费av片在线看| 日韩免费观看视频| 亚洲av麻豆aⅴ无码电影| 亚洲精品国产va在线观看蜜芽| 久久久久久A亚洲欧洲AV冫| 亚洲午夜福利717| 久久精品国产精品亚洲艾 | 国产一区二区三区无码免费| 国产免费观看视频| 亚洲色欲久久久久综合网| 国产成人麻豆亚洲综合无码精品| 国产亚洲一区二区手机在线观看| 久久精品国产亚洲AV麻豆~| 亚洲视频在线免费播放| 亚洲人成77777在线观看网| 国产成人亚洲毛片| 巨胸喷奶水视频www免费视频| 一级毛片免费视频| 久久精品a一国产成人免费网站| 国产精品酒店视频免费看| 亚洲男同帅GAY片在线观看| 亚洲欧洲国产精品你懂的| 亚洲一区中文字幕| 亚洲av成本人无码网站| 中国极品美軳免费观看| 精品免费人成视频app| 国产无遮挡吃胸膜奶免费看| 中文字幕人成人乱码亚洲电影 | 亚洲国产精品一区二区久|