zoukankan      html  css  js  c++  java
  • java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作

    项目源码下载:http://download.csdn.net/detail/liangrui1988/6720047


    效果图:


    相关代码:

    test1

    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


    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

    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

    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

    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

    <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>


  • 相关阅读:
    我的ORM之六-- 批量
    我的ORM之五-- 事务
    我的ORM之四--删除
    我的ORM之三 -- 更新
    我的ORM之二--添加
    我的ORM之一 -- 查询
    hmailserver
    jquery 插件原则
    C#中 ToString 和 override ToString 的区别
    linq操作符:元素操作符
  • 原文地址:https://www.cnblogs.com/riasky/p/3476375.html
Copyright © 2011-2022 走看看