package com.hzk.mail;

import java.net.MalformedURLException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date; import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail; /***
* HtmlEmail 用于发送HTML格式的邮件。完全的兼容MultiPartEmail, 易于添加附件,同时也支持内嵌图像
* MultiPartEmail 用于发送带附件的或者内嵌形式的邮件
* @author Administrator
*
*/
public class MailTest2 {
public static void main(String[] args) {
try {
//Create the attachment 创建附件1
//System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
EmailAttachment attachment1 = new EmailAttachment();
attachment1.setURL(new URL("http://www.apache.org/images/asf_logo_wide.gif")); // 发送网络文件
attachment1.setDisposition(EmailAttachment.ATTACHMENT);
attachment1.setDescription("apache logo");
attachment1.setName("apache logo"); //Create the attachment 创建附件2
EmailAttachment attachment2 = new EmailAttachment(); //发送本地文件
attachment2.setPath("img/qq_znone.gif");//不支持png格式的图片
attachment2.setDisposition(EmailAttachment.ATTACHMENT);
attachment2.setDescription("qq znone logo");
attachment2.setName("qq znone logo"); //Create the mail message
HtmlEmail htmlEmail = new HtmlEmail();
htmlEmail.setHostName("smtp.163.com");//你的邮件服务器的地址
htmlEmail.setAuthentication("tjhouzhikai", "757583770");//如果你的邮件服务器设置了密码,请输入密码,否则此语句可以忽略
htmlEmail.addTo("china_houzhikai@163.com", null);//设置收件人,如果想添加多个收件人,将此语句多写几次即可。
//其中参数1,代表收件人邮件地址;
//参数2,用于收件人收到邮件时看到的收件人姓名
htmlEmail.setFrom("tjhouzhikai@163.com", "张三");//发件人
htmlEmail.setCharset("UTF-8");
htmlEmail.setSubject("带图片和附件的java测试");
htmlEmail.setMsg("hello wellcome"); URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
String cid = htmlEmail.embed(url, "Apache logo");
String testEditor = "亲 你想登录qq空间吗?想的话就<a href='http://qzone.qq.com/'> 点击 </a>"+
     "<br />"+
     "<html>" +
"<img src=\"cid:"+cid+"\">" +
"<br />" +
"<iframe src='http://i.qq.com' height='100' scrolling='auto' width='50%' frameborder='1'></iframe>" +
"</html>";///关于iframe :出于安全考虑,大多邮箱是不支持iframe框架或javascript脚本内容的,也就是说,你就算成功把内容发给别人,对方邮箱不一定能把内容显示出来,例如发给qq、163、126等主流邮箱就不行,会显示空白。 htmlEmail.setHtmlMsg(testEditor);//testEditor 变量包含html内容
htmlEmail.attach(attachment1);//添加 --附件 1
htmlEmail.attach(attachment2);//添加 --附件 2 htmlEmail.send();//发送邮件
System.out.println("发送成功!");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (EmailException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
邮件箱截图如下:

=======================================================================================================================================

用java发送email邮件例子的更多相关文章

  1. Java发送Email邮件及SpringBoot集成

    一:普通方式发送 1.导包 <!--Java MAil 发送邮件API--> <dependency> <groupId>javax.mail</groupI ...

  2. java mail Received fatal alert: handshake_failure java 无法发送邮件问题 java 发送qq邮件(含源码)

     java 无法发送邮件问题 java 发送qq邮件 报错:java mail Received fatal alert: handshake_failure (使用ssl) javax.mail.M ...

  3. java发送email一般步骤

    java发送email一般步骤 一.引入javamail的jar包: 二.创建一个测试类,实现将要发送的邮件内容写入到计算机本地,查看是否能够将内容写入: public static void mai ...

  4. Java发送email的端口问题

    Could not connect to SMTP host: smtp.***.com, port: 465, response: -1 使用Java发送email 的端口问题.一般使用25端口即可 ...

  5. C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用: using System.Net.Mail; using System.Text; using System.Net; ...

  6. [转]C#发送Email邮件 (实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用:using System.Net.Mail;using System.Text;using System.Net; 程序 ...

  7. 【转】C#发送Email邮件

    转自:http://hi.baidu.com/bluesky_cn/item/8bb060ace834c53f020a4df2 下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需 ...

  8. java发送email

    package com.assess.util; import java.io.File; import java.util.ArrayList; import java.util.List; imp ...

  9. 【工具】java发送验证码邮件

    文章目录 前言 配置邮箱服务器 代码实现 发送随机验证码与验证 后记 前言 要实现 可以设置格式,附件,抄送等功能,就跟真人操控邮箱发送邮件一样的功能,或许比较难,博主没研究,博主暂时没用到那些功能, ...

随机推荐

  1. C++进制转换(十进制转二进制、八进制、随意进制)

    十进制转二进制: //十进制转二进制 #include<iostream> using namespace std; void printbinary(const unsigned int ...

  2. Q_INVOKABLE与invokeMethod用法全解

    在Qt/Qt Quick宏浅议一文中,我们将介绍Qt中经常使用的几个宏: Q_OBJECT, SIGNAL与SLOT, Q_SIGNALS 与 Q_SLOTS, Q_EMIT ,Q_INVOKABLE ...

  3. php.ini的配置

    一.user_agent ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)') user_agent,再 ...

  4. php防止ddos,dns,集群攻击的实现代码

    <?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +-------------------------------------- ...

  5. debian7 更换GCC版本

    最近在编译qt,之前用的是debian6,gcc版本是gcc-4.4,当使用debian7时,编译遇到了很多跟debian6不一样的问题,debian7的默认gcc使用的是gcc-4.7,可能是编译器 ...

  6. C. Tavas and Karafs 二分查找+贪心

    C. Tavas and Karafs #include <iostream> #include <cstdio> #include <cstring> #incl ...

  7. 属性通知之INotifyPropertyChanged

    为什么后台绑定的值改变了前台不发生变化了? 针对这个初学者很容易弄错的问题,这里介绍一下INotifyPropertyChanged的用法 INotifyPropertyChanged:用于绑定属性更 ...

  8. IOS UItableView 滚动到底 触发事件

    开发过程中,在使用UItableView 总会遇到加载更多的问题,到底是手势响应瀑布流的方法好? 还是添加一个底端cell点击触发加载更多好?我也想有自己的判断.但是我们老板总说了算,没办法,谁叫我给 ...

  9. SQL Server远程连接操作

    有时候需要在跨数据库或者跨服务器间进行操作时,可用以下代码: -- 开启远程选项 reconfigure reconfigure -- 方法1: -- 方法2: * FROM OPENROWSET(' ...

  10. amoeba实现MySQL读写分离

    amoeba实现MySQL读写分离 准备环境:主机A和主机B作主从配置,IP地址为192.168.131.129和192.168.131.130,主机C作为中间件,也就是作为代理服务器,IP地址为19 ...