您的位置:首页 > 编程语言 > Java开发

java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作

2013-12-16 17:02 731 查看
效果图:





相关代码:

test1

[java]
view plaincopy





package com.mail;

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* com.mail.reference下面的是在网上找的,还没来得级看
* Test 是本人写的,并都测试成功发送了的 邮箱和密码换成你自已的,
* 可能会遇到一个问题, 就是要把你自已myeclipse的javaee.jar文件中的mail包给删掉
* 他们会冲突,自已到网上找一个具体的操作吧!
* @author liangrui
*
*/

public class Test1 {

public static void main(String[] args) throws Exception {
System.out.println("hello....");

Properties perps=new Properties();
//认证
perps.setProperty("mail.smtp.auth", "true");
//协议
perps.setProperty("mail.transport.protocol", "smtp");

Session session=Session.getInstance(perps);
Message mes=new MimeMessage(session);
//收件 内容 、 人
mes.setText(" hello worldddddddddddddddddd");

//设置发件人地址
mes.setFrom(new InternetAddress("liangrui_1988@126.com"));

//发件信息
Transport transport=session.getTransport();
transport.connect("smtp.126.com",25,"liangrui_1988","******");

//收件人
transport.sendMessage(mes,
new Address[]{new InternetAddress("liangrui_1988@sina.com")});

transport.close();

System.out.println("-----");
}

}

test2

[java]
view plaincopy





package com.mail;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

public class Test2 {

/**
* @param args
* @throws MessagingException
*/
public static void main(String[] args) throws Exception {

//邮件Properties设置============================================
Properties pro=new Properties();
//认证
pro.setProperty("mail.smtp.auth", "true");
//协议
pro.setProperty("mail.transport.protocol", "smtp");
//主机 指定服务器 端口默认
pro.setProperty("mail.host", "smtp.sina.com");


//邮件Session设置============================================
Session session= Session.getInstance(pro,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
//用户名密码
return new PasswordAuthentication("liangrui_1988","******");

}
});

//邮件信息设置============================================
Message ms=new MimeMessage(session);
//地址 发件人
ms.setFrom(new InternetAddress("liangrui_1988@sina.com"));
//主题
ms.setSubject("你好吗!这是邮件主题");
//地址 收件人
ms.setRecipients(RecipientType.TO,
InternetAddress.parse("liangrui_1988@126.com,liangrui_1988@sohu.com,liangrui_1988@sohu.com"));

//内容
ms.setContent("<span style='color:red'>文本内容 呆呆呆呵呵</span>","text/html;charset=gbk");

//发射=================================
Transport.send(ms);
System.out.println("okkk--------------");
}

}

test2222demo

[java]
view plaincopy





package com.mail;

import java.io.FileInputStream;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

public class Test2Demo {

/**
* @param args
* @throws MessagingException
*/
public static void main(String[] args) throws Exception {

//邮件Properties设置============================================
Properties pro=new Properties();
//认证
pro.setProperty("mail.smtp.auth", "true");
//协议
pro.setProperty("mail.transport.protocol", "smtp");
//主机 指定服务器 端口默认
pro.setProperty("mail.host", "smtp.sina.com");


//邮件Session设置============================================
Session session= Session.getInstance(pro,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
//用户名密码
return new PasswordAuthentication("liangrui_1988","******");

}
});

//邮件信息设置============================================
/*Message ms=new MimeMessage(session);
//地址 发件人
ms.setFrom(new InternetAddress("liangrui_1988@sina.com"));
//主题
ms.setSubject("你好吗!这是邮件主题");
//地址 收件人
ms.setRecipients(RecipientType.TO,
InternetAddress.parse("liangrui_1988@126.com,liangrui_1988@sina.com,liangrui_1988@sohu.com"));

//内容
ms.setContent("<span style='color:red'>文本内容 呆呆呆呵呵</span>","text/html;charset=gbk");

//发射=================================
Transport.send(ms);*/

//加载生成好的邮件 Test3 并发送
Message me=new MimeMessage(session,new FileInputStream("F:/juxunDocument/email/demo3.eml"));
Transport.send(me,InternetAddress.parse("liangrui_1988@sohu.com") );




System.out.println("okkk--------------");


}
}

test3

[java]
view plaincopy





package com.mail;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Properties;


import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Message.RecipientType;
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;

import com.sun.mail.util.MimeUtil;


public class Test3 {
public static void main(String[] args) throws Exception {

Session session=Session.getInstance(new Properties());
MimeMessage message=new MimeMessage(session);
//发件人 指定别名
message.setFrom(new InternetAddress("\""+MimeUtility.encodeText("国务院")+"\" <liangrui_1988@sina.com>"));

message.setSubject("subject Hello world");//标题
//如果收到该邮件 点击回复时,地址是这个邮箱地址 而不是发件人
message.setReplyTo(new Address[]{new InternetAddress("liangrui_1988@sohu.com")});//回复
//收件人
message.setRecipients(RecipientType.TO,
//把字符串转为数组 //转码
InternetAddress.parse(
MimeUtility.encodeText("刘备")+" <liangrui_1988@126.com>,"
+MimeUtility.encodeText("关羽")+ "<liangrui_1988@suho.com>"));

//复杂格试文件内容 多部件的/混合
MimeMultipart mutimart=new MimeMultipart("mixed");
//文本
message.setContent(mutimart);

//多用途互联网邮件扩展 mime 体部分
MimeBodyPart content =new MimeBodyPart();
MimeBodyPart attach1 =new MimeBodyPart();
MimeBodyPart attach2 =new MimeBodyPart();

//添加文本 和附近
mutimart.addBodyPart(content);
mutimart.addBodyPart(attach1);
mutimart.addBodyPart(attach2);

//附近1
DataSource ds=new FileDataSource("E:\\1y2\\context.xml");
DataHandler dh1=new DataHandler(ds);
attach1.setDataHandler(dh1);
attach1.setFileName(MimeUtility.encodeText("中文context.xml"));//附件名称

//附近2
DataSource ds2=new FileDataSource("F:\\ipho\\IMG_0266.JPG");
DataHandler dh2=new DataHandler(ds2);
attach2.setDataHandler(dh2);
attach2.setFileName(
MimeUtility.encodeText("图片img_0266.jpg"));//附件名称 转为中文

//文本 是一个复杂体
MimeMultipart bodyMultipart=new MimeMultipart("related");
content.setContent(bodyMultipart);

//构造 体 有两个部分组成 图片和文本
MimeBodyPart thmlPart=new MimeBodyPart();
MimeBodyPart imgPart=new MimeBodyPart();

bodyMultipart.addBodyPart(thmlPart);//html
bodyMultipart.addBodyPart(imgPart);//img

//图片数据来源
DataSource dsImg=new FileDataSource("F:/ipho/IMG_0332.JPG");
DataHandler dhImg=new DataHandler(dsImg);
imgPart.setDataHandler(dhImg);

//这个图片代表的位置
imgPart.setHeader("Content-location","http://www.aaa.com/img_0332.jpg");

//文本
thmlPart.setContent("<h1>你好呀 </h1><span style=color='red'>yesterday once more</sapn>" +
" <img src='http://www.aaa.com/img_0332.jpg'/>",
"text/html;charset=gbk");
//生成
message.saveChanges();

//保存在本地 测试 输出到本地
OutputStream os=new FileOutputStream("F:\\juxunDocument\\email\\demo3.eml");
message.writeTo(os);
os.close();


}

}

servelt

[java]
view plaincopy





package com.mail.web.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.mail.Test2Demo;

public class SendMail extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request,response);
}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();

try {
//调用生成好的Test2Demo.jar 类发送邮件 方式一
//Test2Demo.main(new String[]{});

/**
* JNDI 配制方式发送邮件 方式二
* META-INF文件夹中配context.xml信息
* 在web.xml配置相关信息
* 发布到tomcat时
* 需要把lib 的mail.jar拷贝到Tomcat的lib下
* 并且删掉项目中的mail.jar
*/

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
Session session = (Session) envCtx.lookup("mail/hello");

Message message = new MimeMessage(session);
//发件人
message.setFrom(new InternetAddress("liangrui_1988@sina.com"));

//收件人地址
InternetAddress to[] = new InternetAddress[1];
to[0] = new InternetAddress("liangrui_1988@sohu.com");

message.setRecipients(Message.RecipientType.TO, to);
message.setSubject("测试主题");//主题
message.setText("test email ok---");

//Transport
Transport tran=session.getTransport();

tran.connect("smtp.sina.com","liangrui_1988","*****");//获得连接
tran.sendMessage(message, to);

tran.close();

out.print("ok----------------");
} catch (Exception e) {
e.printStackTrace(out);
}


out.flush();
out.close();
}

}

META-INF
context.xml

[html]
view plaincopy





<Context>
<Resource name="mail/hello" auth="Container"
type="javax.mail.Session"
mail.smtp.host="smtp.sina.com"
mail.smtp.auth="true"
mail.transport.protocol="smtp"
/>
</Context>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: