代码由纯Java写成,支持中文,一目了然,只要将Main函数中的相关信息填写正确就直接用了,便于修改,可以在此类基础上任意扩展成自己的类。

注意做HTML形式的邮件,最好把HTML,CSS都写全,只写一部分,不全,效果就不好看了。

邮件效果如图:

import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.mail.BodyPart;
import javax.mail.Message;
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;
import javax.mail.internet.MimeUtility;

/**
 * 邮件发送测试类
 *
 * 2013年9月25日18:12:54
 */
public class TestMailService{
    protected String smtpServer;
    protected String smtpUsername;
    protected String smtpPassword;
    protected String fromMailAddress;
    protected String toMailAddress;
    protected String ccMailAddress;
    protected String bccMailAddress;
    protected boolean testMode;
    
    public boolean isTestMode() {
        return testMode;
    }

public void setTestMode(boolean testMode) {
        this.testMode = testMode;
    }

/**
     * 无参构造函数
     */
    public TestMailService(){
        
    }
    
    
    /**
     * 发送邮件的关键函数
     *
     * @param title
     * @param content
     * @return
     * @throws Exception
     */
    protected boolean sendMail(String title,String content) throws Exception{
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", smtpServer);
        // 与邮件服务器开始会话
        Session session = Session.getDefaultInstance(props,new SmtpAuthenticator(smtpUsername, smtpPassword));
        /** *************************************************** */
        // 创建MIME邮件对象
        MimeMessage mimeMessage = new MimeMessage(session);
        mimeMessage.setFrom(new InternetAddress(fromMailAddress));// 发件人
        
        // To收件人
        mimeMessage.setRecipients(Message.RecipientType.TO, getInternetAddressArr(toMailAddress));
        
        // Cc收件人
        InternetAddress[] arr=getInternetAddressArr(ccMailAddress);
        if(arr!=null && arr.length>0){
            mimeMessage.setRecipients(Message.RecipientType.CC, getInternetAddressArr(ccMailAddress));
        }
        
        // Bcc收件人
        arr=getInternetAddressArr(bccMailAddress);
        if(arr!=null && arr.length>0){
            mimeMessage.setRecipients(Message.RecipientType.BCC, getInternetAddressArr(bccMailAddress));
        }
        
        mimeMessage.setSubject(MimeUtility.encodeText(title,"gb2312","B"));
        mimeMessage.setSentDate(new Date());// 发送日期
        Multipart mp = new MimeMultipart("related");// related意味着可以发送html格式的邮件
        
        /** *************************************************** */
        BodyPart bodyPart = new MimeBodyPart();// 正文
        bodyPart.setDataHandler(new DataHandler(content,"text/html;charset=gb2312"));// 网页格式
        mp.addBodyPart(bodyPart);
        mimeMessage.setContent(mp);// 设置邮件内容对象
        Transport.send(mimeMessage);// 发送邮件
        
        
        return true;
    }
    
    /**
     * Mail地址转化
     * @param mialAddr
     * @return
     * @throws Exception
     */
    protected InternetAddress[] getInternetAddressArr(String mialAddr) throws Exception{
        if(mialAddr==null){
            return null;
        }
        
        String[] arr=mialAddr.split(",");
        
        InternetAddress[] retval=new InternetAddress[arr.length];
        
        for(int i=0;i<arr.length;i++){
            retval[i]=new InternetAddress(arr[i]);
        }
        
        return retval;
    }
    
    /**
     * 保留两位小数
     * @param s
     * @return
     */
    protected String getFormatted(String s){
        float f=Float.parseFloat(s);
        java.text.DecimalFormat   df   =new   java.text.DecimalFormat("#0.00");  
        return df.format(f);
    }
    
    
    public String getSmtpServer() {
        return smtpServer;
    }
    public void setSmtpServer(String smtpServer) {
        this.smtpServer = smtpServer;
    }
    public String getSmtpUsername() {
        return smtpUsername;
    }
    public void setSmtpUsername(String smtpUsername) {
        this.smtpUsername = smtpUsername;
    }
    public String getSmtpPassword() {
        return smtpPassword;
    }
    public void setSmtpPassword(String smtpPassword) {
        this.smtpPassword = smtpPassword;
    }
    public String getFromMailAddress() {
        return fromMailAddress;
    }
    public void setFromMailAddress(String fromMailAddress) {
        this.fromMailAddress = fromMailAddress;
    }
    public String getToMailAddress() {
        return toMailAddress;
    }
    public void setToMailAddress(String toMailAddress) {
        this.toMailAddress = toMailAddress;
    }
    public String getCcMailAddress() {
        return ccMailAddress;
    }
    public void setCcMailAddress(String ccMailAddress) {
        this.ccMailAddress = ccMailAddress;
    }
    public String getBccMailAddress() {
        return bccMailAddress;
    }
    public void setBccMailAddress(String bccMailAddress) {
        this.bccMailAddress = bccMailAddress;
    }
    
    public String getHTML(){
        StringBuilder sb=new StringBuilder();
        sb.append("    <html>");
        sb.append("     <head>");
        sb.append("      <title> New Document </title>");
        sb.append("     </head>");
        sb.append("    ");
        sb.append("    <style type=\"text/css\">");
        sb.append("    table { ");
        sb.append("      margin: 10px 0 30px 0;");
        sb.append("    }");
        sb.append("    ");
        sb.append("    table caption { ");
        sb.append("      text-align:left;");
        sb.append("    }");
        sb.append("    ");
        sb.append("    table tr th { ");
        sb.append("      background: #3B3B3B;");
        sb.append("      color: #FFF;");
        sb.append("      padding: 7px 4px;");
        sb.append("      text-align: left;");
        sb.append("    }");
        sb.append("    ");
        sb.append("    table tr td { ");
        sb.append("      color: #FFF;");
        sb.append("      padding: 7px 4px;");
        sb.append("      text-align: left;");
        sb.append("    }");
        sb.append("    ");
        sb.append("    table tr.odd{");
        sb.append("        background-color:#cef;");
        sb.append("    }");
        sb.append("    ");
        sb.append("    table tr.even{");
        sb.append("        background-color:#ffc;");
        sb.append("    }");
        sb.append("      ");
        sb.append("    table tr td { ");
        sb.append("      color: #47433F;");
        sb.append("      border-top: 1px solid #FFF;");
        sb.append("    }");
        sb.append("     </style>");
        sb.append("    ");
        sb.append("     <body>");
        sb.append("    <table style=\"width:300px; border-spacing:0;\">  ");
        sb.append("       <tr>  ");
        sb.append("          <th>A</th>  ");
        sb.append("          <th>B</th>  ");
        sb.append("          <th>C</th>  ");
        sb.append("          <th>D</th>  ");
        sb.append("          <th>E</th>  ");
        sb.append("       </tr>  ");
        sb.append("       <tr class=\"odd\">  ");
        sb.append("         <td>1</td>  ");
        sb.append("         <td>2</td>  ");
        sb.append("         <td>3</td>  ");
        sb.append("         <td>4</td>  ");
        sb.append("         <td>5</td>  ");
        sb.append("       </tr>  ");
        sb.append("       <tr class=\"even\">  ");
        sb.append("         <td>11</td>  ");
        sb.append("         <td>22</td>  ");
        sb.append("         <td>33</td>  ");
        sb.append("         <td>44</td>  ");
        sb.append("         <td>55</td>  ");
        sb.append("       </tr>  ");
        sb.append("       <tr class=\"odd\">  ");
        sb.append("         <td>111</td>  ");
        sb.append("         <td>222</td>  ");
        sb.append("         <td>333</td>  ");
        sb.append("         <td>444</td>  ");
        sb.append("         <td>555</td>  ");
        sb.append("       </tr>  ");
        sb.append("        <tr class=\"even\">  ");
        sb.append("         <td>你好</td>  ");
        sb.append("         <td>2222</td>  ");
        sb.append("         <td>3333</td>  ");
        sb.append("         <td>4444</td>  ");
        sb.append("         <td>5555</td>  ");
        sb.append("       </tr> ");
        sb.append("    </table> ");
        sb.append("     </body>");
        sb.append("    </html>");
        
        return sb.toString();
    }
    
    public static void main(String[] args) throws Exception{
        TestMailService s=new TestMailService();
        
        s.setSmtpServer("***.smtp.173.com");
        s.setSmtpUsername("***");
        s.setSmtpPassword("*****");
        s.setFromMailAddress("a@b.com");
        s.setToMailAddress("c@d.com");
                
        s.sendMail("测试邮件", s.getHTML());
    }    
}

要是感觉此类有问题,请留言。

《End》

用Java发送HTML格式邮件测试类(支持中文)的更多相关文章

  1. 一个用于发送HTML格式邮件的类

    以下类是在网上孙钰佳的版本上改写而来,主要变化了三点:1.去掉了附件部分:2.形式从纯Java类改成可注入方式:3.to,cc和bcc都变成了一堆人,以前是一个人. 以下是Java类的代码: impo ...

  2. EBS中使用JAVA方式发送HTML格式邮件

    转自huan.gu专栏:http://blog.csdn.net/gh320/article/details/17174769 EBS中使用JAVA方式发送HTML格式邮件 一.开发工具:JDevel ...

  3. python测试开发django-29.发送html格式邮件

    前言 上一篇已经通过send_mail()函数发送纯文本的邮件,发送成功了,如果我们想发送一个html格式的邮件,如何实现呢? 发送html格式的邮件实际上还是调用send_mail()函数 ,只需多 ...

  4. JAVA 发送各种邮箱邮件 javamail

    QQ邮箱 /** * 单条发送 * @param mail 邮件对象,包含发送人.邮件主题.邮件内容 * @param recipients 收件人 * @throws AddressExceptio ...

  5. java发送soapui格式的报文

    import java.io.*;import java.net.HttpURLConnection;import java.net.URL; 使用java对soapui报文进行发送 public c ...

  6. Java连接MQ的实例, 测试类

    package cjf.mq.mqclient; import com.ibm.mq.MQC; import com.ibm.mq.MQEnvironment; import com.ibm.mq.M ...

  7. JAVA发送xml格式的接口请求

    /** * * @param urlStr 接口地址 * @param xmlInfo xml格式参数数据 * @return */ public static String sendMsgXml(S ...

  8. Java导包后在测试类中执行正确但在Servlet中执行错误报ClassNotFoundException或者ClassDefNotFoundException解决办法

    将原来导的包remove from build path,并复制到Web-root下的lib目录中,再add to build path,

  9. 通过C#发送自定义的html格式邮件

    要发送HTML格式邮件,需要设置MailMessage对象的IsBodyHtml属性,设置为true. 类MailMessage在命名空间System.Net.Mail下.using System.N ...

随机推荐

  1. luoguP5024 保卫王国 动态dp

    题目大意: emmmmm 题解: QAQ #include <cstdio> #include <cstring> #include <iostream> usin ...

  2. 【洛谷】4310: 绝世好题【二进制DP】

    P4310 绝世好题 题目描述 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). 输入输出格式 输入格式: 输入文件共2行 ...

  3. BZOJ3473 字符串 广义后缀自动机

    今天主攻了下SAM 好多东西以前都没理解到 对于这道题 我们建一个自动机存所有串 每个穿last从1开始 对于自动机上每个点额外记一个cnt 表示能匹配到这个点的不同串个数 建完对每个串在自动机上匹配 ...

  4. 【对比分析五】CSS阻塞和JS阻塞

    js 的阻塞特性: 所有浏览器在下载 JS 的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等.直到 JS 下载.解析.执行完毕后才开始继续并行下载其他资源并呈现内容.为了提高用户体验,新 ...

  5. PAT甲级1123. Is It a Complete AVL Tree

    PAT甲级1123. Is It a Complete AVL Tree 题意: 在AVL树中,任何节点的两个子树的高度最多有一个;如果在任何时候它们不同于一个,则重新平衡来恢复此属性.图1-4说明了 ...

  6. hierarchyid有关的一些函数

    于hierarchyid有关的一些函数主要有:    GetAncestor :取得某一个级别的祖先    GetDescendant :取得某一个级别的子代    GetLevel :取得级别    ...

  7. C++各大名库

    C++各大名库的介绍之C++标准库 标准库中提供了C++程序的基本设施.虽然C++标准库随着C++标准折腾了许多年,直到标准的出台才正式定型,但是在标准库的实现上却很令人欣慰得看到多种实现,并且已被实 ...

  8. Linux常用命令&定位生产报错日志

    1. cd / 到根目录下 2. cd .. 返回上层目录 3.ls 显示当前目录有哪些文件 4. pwd 显示当前目录 5. ps -ef|grep tomcat7 查看当前运行进程 6. kill ...

  9. jQuery动画高级用法(上)——详解animation中的.queue()函数

    如果你拿着一个疑问去找专业人士寻找答案,那么你的一个疑问会变成三个,因为他会用另外两个令你更加一头雾水的名词来解释你的这个疑问. 我想这是大多数,包括我在内,IT人在学习过程中碰到的最大问题.当你有一 ...

  10. 使用邮件和RSS两种方式,订阅博客更新通知

    分类: 系统运维 点击订阅按钮,可以订阅本博客的更新 输入您的邮件地址,可以订阅本博客的更新通知,及时了解最新内容 使用RSS,订阅-马二进三名人传记-博客 也许大家是第一次听到RSS这个概念,那什么 ...