`

Java发送邮件(1)

阅读更多


l 邮箱加密算法

现在很多WEB应用在开发时都需要集成邮件发送功能,例如:

给新注册的用户自动发送一封包含其注册信息的欢迎E-Mail。

给过生日的注册会员自动发送一封表示祝贺的E-Mail 。

将网站的最新活动信息通过E-Mail发送给所有的注册会员。

等等 …...

这些功能的实现都需要软件开发人员在开发WEB应用中编写相应的邮件处理程序。

搜狐邮箱、新浪邮箱

public void test1()throws Exception {

/*字节流 :

* inputStream

* outputStream

* 字符流:

* Read

* Write

* */

BufferedReader br =new  BufferedReader(new InputStreamReader(System.in));

System.out.println("请输入用户名:");

String userName=br.readLine();

System.out.println("请输入密码");

String userPass=br.readLine();

System.out.println("加密之前用户名"+userName+"加密之前密码"+userPass);

BASE64Encoder b6=new BASE64Encoder();

System.out.println("加密之前用户名"+b6.encode(userName.getBytes())+"加密之zhu前密码"+b6.encode(userPass.getBytes()));

}

}


Socket发送邮件



public class MailSend {

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

Socket soc = new Socket("smtp.sohu.com", 25);

OutputStream os = soc.getOutputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(soc

.getInputStream()));

os.write("ehlo ZHULEI\r\n".getBytes());

System.out.println(br.readLine());

System.out.println(br.readLine());

System.out.println(br.readLine());

os.write("auth login\r\n".getBytes());

System.out.println(br.readLine());

os.write("emh1bGVpc2hpdG91\r\n".getBytes());

System.out.println(br.readLine());

os.write("YWJjMTk5MTI4\r\n".getBytes());

System.out.println(br.readLine());

os.write("mail from:<zhuleishitou@sohu.com>\r\n".getBytes());

System.out.println(br.readLine());

os.write("rcpt to:<437105308@qq.com>\r\n".getBytes());

System.out.println(br.readLine());

os.write("data\r\n".getBytes());

System.out.println(br.readLine());

os.write("from:<zhuleishitou@sohu.com>\r\n".getBytes());

os.write("to:<437105308@qq.com>\r\n".getBytes());

os.write("subject: 多多亲爱的\r\n".getBytes());

os.write("多多亲爱的\r\n".getBytes());

os.write(".\r\n".getBytes());

os.write("quit".getBytes());

os.close();

br.close();

soc.close();

}

}


利用控制台发送邮件




telnet smtp.sina.com

SMTP协议

ehlo 主机名

auth login //经过base64编码后的用户名和密码

mail from:<redarmycsdn@sohu.com> 

rcpt to:<redarmycsdn@sina.com>

Data   .号代表邮件内容的结束

quit


============================OK

220 95.62 ESMTP ready

ehlo ZHULEI

250-95.62

250-AUTH PLAIN LOGIN

250 STARTTLS

auth login

334 VXNlcm5hbWU6

emh1bGVpc2hpdG91

334 UGFzc3dvcmQ6

YWJjMTk5MTI4

235 2.0.0 OK

mail from:<zhuleishitou@sohu.com>

250 2.1.0 Ok

rcpt to:<437105308@qq.com>

250 2.1.5 Ok

data

354 End data with <CR><LF>.<CR><LF>

from:<zhuleishitou@sohu.com>

to:<437105308@qq.com>

subject: 多多亲爱的


z这是测试想你的内同


.

250 2.0.0 Ok: queued as 37C0F698F57

quit

221 2.0.0 Bye


l MIME协议发送邮件

v MIME协议是对RFC822文档的升级和补充,它描述了如何生成一封复杂邮件。通常我们把MIME协议描述的邮件称之为MIME邮件,MIME协议描述的数据称之为MIME消息。

v 对于一封复杂邮件,如果包含了多个不同的数据,MIME协议规定了要使用分隔线对多段数据进行分隔,并使用Content-Type头字段对数据的类型、以及多个数据之间的关系进行描述。(查看outlook邮件源文件)






                                                           











1.发送普通的邮件

public void MimeImageMail() throws Exception {

//创建邮件

MimeMessage mm = new MimeMessage(Session.getInstance(new Properties()));

//设置邮件头

mm.setFrom(new InternetAddress("zhu@zhulei.com"));//发送的的人

mm.setRecipient(Message.RecipientType.TO, (new InternetAddress(

"lei@zhulei.com")));//发送到的人

mm.setSubject("祝自己快乐!!");//主题

//邮件体

MimeBodyPart mbp = new MimeBodyPart();

mbp.setContent("记住这个日子没有人给你庆祝只有个你自己!!",

"text/html;charset=gb2312");

mmp.addBodyPart(mbp);

mm.setContent(mmp);

mm.saveChanges();

/*

* 注意不能用一个MimeBodyPart 同时的添加文件和图像

*

* */


mm.writeTo(new FileOutputStream("D:\\3.eml"));

2.发送有图片的邮件

@Test

public void MimeImageMail() throws Exception {

//创建邮件

MimeMessage mm = new MimeMessage(Session.getInstance(new Properties()));

//设置邮件头

mm.setFrom(new InternetAddress("zhu@zhulei.com"));//发送的的人

mm.setRecipient(Message.RecipientType.TO, (new InternetAddress(

"lei@zhulei.com")));//发送到的人

mm.setSubject("祝自己快乐!!");//主题

//邮件体

MimeBodyPart mbp = new MimeBodyPart();

mbp.setContent("记住这个日子没有人给你庆祝只有个你自己!!<img src='cid:m.jpg' >",

"text/html;charset=gb2312");

//添加图片

MimeBodyPart mBp = new MimeBodyPart();

mBp.setDataHandler(new DataHandler(new FileDataSource("src\\m.jpg")));

mBp.setContentID("m.jpg");

MimeMultipart mmp = new MimeMultipart();

mmp.setSubType("related");// 设置为附件(mixed) 还是图片(related) 默认时为附件

mmp.addBodyPart(mbp);

mmp.addBodyPart(mBp);

mm.setContent(mmp);

mm.saveChanges();

/*

* 注意不能用一个MimeBodyPart 同时的添加文件和图像

*

* */


mm.writeTo(new FileOutputStream("D:\\3.eml"));

}

3.发送带附件和图片的邮件


import java.io.BufferedReader;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.Socket;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Message;

import javax.mail.Session;

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;


public void MimeAccth() throws Exception {

//创建邮件

MimeMessage mm = new MimeMessage(Session.getInstance(new Properties()));

//设置邮件头

mm.setFrom(new InternetAddress("zhu@zhulei.com"));//发送的的人

mm.setRecipient(Message.RecipientType.TO, (new InternetAddress(

"lei@zhulei.com")));//发送到的人

mm.setSubject("祝自己快乐!!");//主题

//邮件内容

MimeBodyPart mbp = new MimeBodyPart();

mbp.setContent("记住这个日子没有人给你庆祝只有个你自己!!<img src='cid:m.jpg' >",

"text/html;charset=gb2312");

//添加图片

MimeBodyPart mBpI= new MimeBodyPart();

mBpI.setDataHandler(new DataHandler(new FileDataSource("src\\m.jpg")));

mBpI.setContentID("m.jpg");

//添加附件

MimeBodyPart mBpF = new MimeBodyPart();

DataHandler dh=new DataHandler(new FileDataSource("src\\海阔天空.mp3"));

mBpF.setDataHandler(dh);

String fileName=dh.getName();

mBpF.setFileName(MimeUtility.encodeText(fileName));

MimeMultipart mmp = new MimeMultipart();

mmp.addBodyPart(mbp);

mmp.addBodyPart(mBpI);

mmp.setSubType("related");//设置为图片

MimeBodyPart part=new MimeBodyPart();

part.setContent(mmp);

MimeMultipart mmp2 = new MimeMultipart();

mmp2.addBodyPart(part);

mmp2.addBodyPart(mBpF);

mmp2.setSubType("mixed");

mm.setContent(mmp2);

mm.saveChanges();

/*

* 1、注意不能用一个MimeBodyPart 同时的添加文件和图像

* 2、添加附件和图片是只用用一个MimeMultipart添加并分别设置其属性

* 3、默认设置为附件

* */


mm.writeTo(new FileOutputStream("D:\\7.eml"));

}


}
分享到:
评论

相关推荐

    java发送邮件工具

    java发送邮件工具类,用于java程序实现邮件的发送功能

    java发送邮件jar包2个

    java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个...

    java实现邮件发送(三种发送方式都有)

    Java发送邮件是软件开发中常见的需求,特别是在自动化通知、用户验证和客户服务等方面。在这个主题下,我们将探讨三种Java实现邮件发送的方式,以及如何通过提供的代码和参考资料进行实践。 首先,让我们了解一下...

    Java发送outlook邮件

    首先,Java发送邮件主要依赖于JavaMail API,这是一个开源的Java库,它提供了标准的JavaMail API规范,允许开发者发送、接收和处理邮件。在发送Outlook邮件时,我们通常不是直接与Outlook交互,而是使用SMTP(Simple...

    java发送邮件功能

    Java发送邮件功能是Java开发中常见的一项任务,它允许开发者通过编程的方式实现电子邮件的发送,包括正文内容、附件以及抄送等高级功能。在Java中,我们主要利用JavaMail API来实现这一目标。 JavaMail API是一个...

    java发送邮件完整程序

    Java发送邮件是一个常见的任务,尤其在自动化通知、订阅服务或者数据传输中。在这个"java发送邮件完整程序"中,我们将会探讨如何使用Java语言来构建一个邮件发送功能,包括所需的库、步骤以及关键代码片段。 首先,...

    java发送邮件实例

    Java发送邮件是一个常见的任务,尤其在自动化通知、报表发送或者用户验证等场景中。下面将详细解释这个过程,包括SMTP(Simple Mail Transfer Protocol)的工作原理、JavaMail API的使用以及可能遇到的问题及其解决...

    JAVA发送邮件实现,消息格式化

    本文将详细讲解如何使用Java发送邮件,并着重介绍消息格式化的概念及其重要性。 首先,发送邮件的核心类是JavaMail API提供的`javax.mail`包中的`Session`, `Message`, `Transport`等类。为了发送邮件,我们需要...

    java发送邮件项目

    Java发送邮件是一个常见的任务,尤其在企业级应用中,用于通知、报告或者自动化流程。本项目专注于使用Java来实现这个功能。以下将详细介绍如何利用Java发送邮件,以及项目中的关键知识点。 首先,Java发送邮件主要...

    java实现发送邮件功能源码+jar

    下面是一个简单的Java发送邮件的示例代码: ```java Properties props = new Properties(); props.put("mail.smtp.host", "smtp.example.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp....

    java发邮件 java发email

    Java发送电子邮件是一个常见的任务,尤其在自动化通知、报表发送或者用户验证等场景中。下面将详细解释如何使用Java来发送邮件,并提供相关的知识点。...希望这些信息能帮助你解决Java发送邮件的问题。

    java发送邮件所需jar包.zip

    1. **JavaMail API**:这是Java发送邮件的基础,提供了一系列接口和类,用于构建和发送邮件。JavaMail API包括了`javax.mail`和`javax.mail.internet`这两个主要的包。它们提供了如Session、Message、Transport等...

    java发送邮件Demo

    本示例“java发送邮件Demo”旨在教你如何利用JavaMail API实现这个功能。JavaMail API是一个开源库,允许开发者通过SMTP(简单邮件传输协议)发送、接收和管理邮件。 首先,确保在项目中引入JavaMail API的相关依赖...

    java发送邮件代码

    java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件 java发送邮件

    java 发送邮件 spring发送邮件Mail

    Java发送邮件是软件开发中常见的需求,特别是在企业级应用中,用于发送通知、报表或验证用户的电子邮件地址。Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java...

    基于Java的邮件发送模板

    在Java开发中,发送邮件是一项常见的任务,尤其在企业级应用和服务中,它用于通知、确认订单、发送报告等。本篇文章将详细讲解如何利用Java实现邮件发送,并结合Apache的相关库来创建邮件发送模板,以提升效率和用户...

    JAVA发送邮件示例代码

    本文将详细讲解如何使用Java发送邮件,包括所需的库、基本概念以及实际示例代码。 首先,JavaMail API是Java平台用于处理邮件服务的核心库。要发送邮件,你需要在项目中引入JavaMail的依赖。如果你使用的是Maven,...

    Java邮件发送.zip

    总结来说,Java发送邮件涉及以下关键知识点: 1. JavaMail API的使用,包括`javax.mail`和`javax.mail.internet`包。 2. 配置SMTP服务器的参数,如主机名、端口、安全协议等。 3. 使用`Session`进行会话初始化和...

    java发送HTML模版邮件

    6. **发送邮件**: 最后,通过`Transport`类的`send()`方法将`Message`对象发送出去。记得在完成后关闭`Transport`,释放资源。 在`mailTest`这个类中,你可能会看到这样的代码结构: ```java Properties props = ...

    使用java发送邮件的方法

    使用java发送邮件的方法,直接可以拿来用,最近找了个例子,稍微整理了一下

Global site tag (gtag.js) - Google Analytics