首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CSS >

透过smtp实现html邮件转发

2012-10-07 
通过smtp实现html邮件转发学习笔记,把Email_Autherticatorbean类嵌入到HtmlEmail中只是想把功能的代码放到

通过smtp实现html邮件转发

学习笔记,把Email_Autherticatorbean类嵌入到HtmlEmail中只是想把功能的代码放到一个文件中,希望此文读者不要见怪。

?

package common;import java.util.Date;import java.util.Properties;//要加入email.jar和activation.jar这两个包import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.Authenticator;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.PasswordAuthentication;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;/** * <p>HtmlEmail  目前只支持smtp转发邮件</p> * @author bing * @version 1.0, 2010-10-16 */public class HtmlEmail{/** * <p> *     步骤:<br/> *     1、发送人邮箱验证;<br/> *     2、获取邮件发送器;<br/> *     3、生成邮件;<br/> *         3.1、设置邮件主题;<br/> *         3.2、设置正文(MINI邮件);<br/> *         3.3、附件处理;<br/> *     4、邮件信息处理;<br/> *     5、发送邮件。<br/> * </P> * @param host邮箱代理商smtp服务器地址 * @param from发送人邮箱地址 * @param password发送人邮箱密码 * @param to收件人邮箱地址 * @param htmlContexthtml邮件内容 * @param fixDataSource是否将html邮件中的img标签的src属性通配符匹配图片附件,匹配时要注意:建议附件全为图片 通匹符编号从0开始 * @param dataSources附件地址(String类型) 数组 下标从0开始 可选项,可以不写 * @return * @author bing */@SuppressWarnings("static-access")    public boolean send(String host, String from, String password, String to, String htmlContext, boolean fixDataSource, String... dataSources){try{    ///// 准备工作 /////Properties props = new Properties(); Session sendMailSession; //Store store; Transport transport; Email_Autherticatorbean auth=null;///// 1、发送人邮箱验证  /////props.put("mail.smtp.host", host); // 代理主机props.put("mail.smtp.auth", "true"); //如果需要验证props.put("mail.smpt.port", "25"); // 代理主机端口auth =  new Email_Autherticatorbean(from,password); // 发件人的邮箱及密码验证规则sendMailSession = Session.getInstance(props,auth);//session认证,并获得Session实例            ///// 2、获取代理服务器邮件发送器 /////            transport = sendMailSession.getTransport("smtp");sendMailSession.setDebug(true);//这个是跟踪后台消息。打印在控制台///// 3、生成邮件/////Message newMessage = new MimeMessage(sendMailSession); // 创建邮件///// 3.1、设置邮件主题/////newMessage.setSubject("Mail Test Subject");  // 设置邮件主题//newMessage.setContent("<b>Hell!</b>","text/html;charset=gb2312");///// 3.2、设置正文(MINI邮件)/////MimeMultipart multipart = new MimeMultipart("related");// 创建MINI邮件(正文)BodyPart body = new MimeBodyPart();// 创建MINI邮件组件//body.setContent("<b>Hello!</b><br><img src="cid:0">","text/html;charset=gb2312");body.setContent(htmlContext,"text/html;charset=gb2312");// 设置MINI邮件正文格式multipart.addBodyPart(body);// 将MINI邮件组件添加到MINI邮件中///// 3.3、附件处理   /////for(int i = 0; i < dataSources.length; i++)// 附件处理,根据所提供的符件地址添加符件{body = new MimeBodyPart(); // 创建MINI邮件组件(用于附件)DataSource fds = new FileDataSource(dataSources[i]);body.setDataHandler(new DataHandler(fds));// 是否在html文件中关联附件,这里匹配正文中img标签,匹配cid:<number>,number从0开始,与符件下标一致if(fixDataSource == true)body.setHeader("Content-ID","<"+ (i) +">");// 将匹配正文中的cidmultipart.addBodyPart(body);// 将MINI邮件组件添加到MINI邮件中}// 设置正文(MINI邮件)newMessage.setContent(multipart);////// 4、邮件信息处理 //////newMessage.setFrom(new InternetAddress(from));// 设置发件人地址newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 设置收件人地址newMessage.setSentDate(new Date()); // 设置发送时间//newMessage.setText("<b>Mail Test Content</b>"); ///// 5、发送邮件 /////transport.send(newMessage); return true;}catch(Exception e){e.printStackTrace();return false;}}/** * <p>邮件验证规则</p> * @author bing * @version 1.0, 2010-10-16 * */public class Email_Autherticatorbean extends Authenticator{    private String m_username = null;    private String m_userpass = null;    public void setUsername(String username)    {        m_username = username;    }    public void setUserpass(String userpass)    {        m_userpass = userpass;    }    public Email_Autherticatorbean(String username, String userpass)    {        super();        setUsername(username);        setUserpass(userpass);    }    /**     * <p>密码验证</p>     * @return PasswordAuthentication 密码验证结果     */    public PasswordAuthentication getPasswordAuthentication()    {        return new PasswordAuthentication(m_username,m_userpass);    }}}

?

热点排行