JavaMail应用实例说明:简单(HTML)邮件的发送 javaMail基础教程下载

说明:1。本实例需要用到javamail-1.4.3和jaf-1_0_2-upd2。附件中有它们的下载,关于它们的介绍可以去google一下。

         2。使用javaMail需要一个邮件服务器,我使用的是cmail,它很小,试用版的可以用于学习,按装之前请确保你装了IIS服务,因为它自带有一个.NET写的邮件服务。在下面附件中可以下载。

一:简单的邮件发送

<form action="SendText" method="post">
  		<table border="0" align="center" width="80%">
  			<tr>
  				<td align="right">From:</td>
  				<td>
  					<input type="text" name="from">
  				</td>
  			</tr>
  			<tr>
  				<td align="right">To:</td>
  				<td>
  					<input type="text" name="to">
  				</td>
  			</tr>
  			<tr>
  				<td align="right">Subject:</td>
  				<td>
  					<input type="text" name="subject">
  				</td>
  			</tr>
  			<tr>
  				<td align="right">Context:</td>
  				<td>
  					<textarea rows="5" cols="30" name="context"></textarea>
  				</td>
  			</tr>
  			<tr>
  				<td align="center" colspan="2">
  					<input type="submit" value="发送">
  				</td>
  			</tr>
  		</table>
  	</form>

Servlet如下:

/**
 * 使用javaMail发送简单的邮件
 * 
 * @author 张明学
 * 
 */
public class SendText extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 7107039219761248959L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("GBK");
		String from = request.getParameter("from");
		String to = request.getParameter("to");
		String subject = request.getParameter("subject");
		String context = request.getParameter("context");
		// 发送的邮件服务器的地址
		String mailServer = "PC200904071715";//按装cmail就是你的机器名
		Properties prop = System.getProperties();
		// 设置邮件的传输协议
		prop.put("mail.transport.protocal", "smtp");
		prop.put("mail.smtp.host", mailServer);
		prop.put("mail.smtp.port", "25");
		// 是否通过验证;一般为true,false不能通过验证   
		prop.put("mail.smtp.auth", "false");
		// 建立邮件发送的连接
		// Session 类定义了一个基本邮件会话(session)。所有其它类都是经由这个session 才得以生效。
		// Session 对象用 java.util.Properties 对象获取信息,如邮件服务器、用户名、密码及整个应用程序中共享的其它信息。
		// Session类的构造器是私有的(private)。您可以得到单个缺省 session,它能用 getDefaultInstance() 方法被共享:
		// 或者,您还可以用 getInstance()  创建一个独立的 session:
		Session jmailSession = Session.getDefaultInstance(prop,
				new Authenticator() {
					@Override
					protected PasswordAuthentication getPasswordAuthentication() {
						//需要邮件服务器的管理员账号与密码
						return new PasswordAuthentication("admin", "");
					}
				});
		// 创建要发送的消息,这由 Message  类来完成。因为 Message 是个抽象类,必需用一个子类,多数情况下为 javax.mail.internet.MimeMessage。
		Message jmailMessage = new MimeMessage(jmailSession);
		// 设置相关的邮件属性
		try {
			// Address 确定信件地址,Address是个抽象类,用的是javax.mail.internet.InternetAddress
			// 若希望名字紧挨着电子邮件显示,也可以把它传递给构造器:jmailMessage.setFrom(new InternetAddress(from,"admin"));
			jmailMessage.setFrom(new InternetAddress(from));
			/**
			 * javax.mail.Message.RecipientType.TO:一对一的发送
			 * javax.mail.Message.RecipientType.CC:抄送
			 * javax.mail.Message.RecipientType.BCC:秘密抄送
			 */
			jmailMessage.setRecipient(javax.mail.Message.RecipientType.TO,new InternetAddress(to));
			// 用setSubject()方法设置 subject(主题)
			jmailMessage.setSubject(subject);
			jmailMessage.setSentDate(new Date());
			// 使用 MimeMessage,而且消息是纯文本格式,您就可以用 setText() 方法,它只需要代表实际内容的参数,( MIME 类型缺省为 text/plain)
			jmailMessage.setText(context);
			// 邮件发送
			// 消息发送的最后一部分是使用Transport类。这个类用协议指定的语言发送消息(通常是 SMTP)。它是抽象类,仅调用静态send()方法
			Transport.send(jmailMessage);
		} catch (AddressException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		}
		// request.getRequestDispatcher("ok.jsp").forward(request, response);
		response.sendRedirect("ok.jsp");
	}
}

 HTML格式的邮件发送:

<form action="SendHtml" method="post">
  		<table border="0" align="center" width="80%">
  			<tr>
  				<td align="right">From:</td>
  				<td>
  					<input type="text" name="from">
  				</td>
  			</tr>
  			<tr>
  				<td align="right">To:</td>
  				<td>
  					<input type="text" name="to">
  				</td>
  			</tr>
  			<tr>
  				<td align="right">Subject:</td>
  				<td>
  					<input type="text" name="subject">
  				</td>
  			</tr>
  			<tr>
  				<td align="right">Context:</td>
  				<td>
  					<textarea rows="5" cols="30" name="context"></textarea>
  				</td>
  			</tr>
  			<tr>
  				<td align="right">格式:</td>
  				<td>
  					<select name="type">
  						<option value="text/plain">文本格式</option>
  						<option value="text/html">HTML格式</option>
  					</select>
  				</td>
  			</tr>
  			<tr>
  				<td align="center" colspan="2">
  					<input type="submit" value="发送">
  				</td>
  			</tr>
  		</table>
  	</form>

 Servlet如下:

public class SendHtml extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8794915632056125770L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("GBK");
		String from = request.getParameter("from");// 发件人
		String to = request.getParameter("to");// 收件人
		String subject = request.getParameter("subject");// 主题
		String context = request.getParameter("context");// 内容
		String type = request.getParameter("type");

		// 邮件服务器的地址
		String mailServer = "PC200904071715";
		// 设置邮件的传输协议信息
		Properties transProp = System.getProperties();
		// 邮件服务器地址
		transProp.put("mail.smtp.host", mailServer);
		// 邮件传输协议中的接收协议:smtp
		transProp.put("mail.transport.protocol", "smtp");
		// 是否通过验证
		transProp.put("mail.smtp.auth", "true");
		// 服务器端口
		transProp.put("mail.smtp.port", "25");// 默认端口25
		// 建立邮件发送的连接
		javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(
				transProp, new Authenticator() {
					@Override
					protected PasswordAuthentication getPasswordAuthentication() {
						return new PasswordAuthentication("admin", "");
					}

				});
		// 邮件信息载体
		javax.mail.Message mailMessage = new javax.mail.internet.MimeMessage(mailSession);
		try {
			// 设置发件人
			mailMessage.setFrom(new InternetAddress(from));
			// 设置收件人
			mailMessage.setRecipient(RecipientType.TO, new InternetAddress(to));
			// 多个收件人设置
			// InternetAddress[] addresss = new InternetAddress[]{new InternetAddress(to)};
			// mailMessage.setRecipients(RecipientType.TO, addresss);
			// 设置主题
			mailMessage.setSubject(subject);
			// 发送时间
			mailMessage.setSentDate(new Date());
			
			Multipart mp = new MimeMultipart(); 
			MimeBodyPart mbp = new MimeBodyPart();
			mbp.setContent(context, type+";charset=GB2312");
			mp.addBodyPart(mbp);
			
			mailMessage.setContent(mp);
			javax.mail.Transport.send(mailMessage);
		} catch (AddressException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		}
		response.sendRedirect("ok.jsp");
	}

}

你可能感兴趣的:(html,应用服务器,jsp,servlet,IIS)