`
wangyujie
  • 浏览: 53626 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

创建邮件

阅读更多
1、创建邮件——RFC822文档
邮件头和邮件体,两者使用空行分隔
邮件头
from字段
to字段
subject字段
cc、bcc字段
邮件体
邮件内容
使用java代码写邮件
public class SendMailSocket {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket sc=new Socket("smtp.sohu.com",25);
//输出流
OutputStream os=sc.getOutputStream();
//输入流
BufferedReade bf=new BufferedReader(new InputStreamReader(sc.getInputStream()));
System.out.println(bf.readLine());

os.write("ehlo ..\r\n".getBytes());//输入主机名
System.out.println(bf.readLine());
System.out.println(bf.readLine());
System.out.println(bf.readLine());

os.write("auth login\r\n".getBytes());
System.out.println(bf.readLine());

os.write("cmVkYXJteWNzZG4=\r\n".getBytes());//加密后的用户名
System.out.println(bf.readLine());
os.write("cmVkYXJteWNzZG4=\r\n".getBytes());//加密后的密码
System.out.println(bf.readLine());

    //邮件发送地址
os.write("mail from:<*****@sohu.com>\r\n".getBytes());
System.out.println(bf.readLine());
//邮件接受地址
os.write("rcpt to:<******.com>\r\n".getBytes());
System.out.println(bf.readLine());

os.write("data\r\n".getBytes());
System.out.println(bf.readLine());
    //邮件内容
os.write("ni hao *****\r\n".getBytes());
os.write(".\r\n".getBytes());
System.out.println(bf.readLine());
    //退出
os.write("quit\r\n".getBytes());
bf.close();
os.close();
sc.close();

}
}
2、创建邮件—— MIME协议
    MIME协议是对RFC822文档的升级和补充,它描述了如何生成一封复杂邮件。通常我们把MIME协议描述的邮件称之为MIME邮件,MIME协议描述的数据称之为MIME消息。对于一封复杂邮件,如果包含了多个不同的数据,MIME协议规定了要使用分隔线对多段数据进行分隔,并使用Content-Type头字段对数据的类型、以及多个数据之间的关系进行描述。(查看outlook邮件源文件)
3、MIME协议常用头字段
    Content-ID头字段用于为“multipart/related”组合消息中的内嵌资源指定一个唯一标识号,在HTML格式的正文中可以使用这个唯一标识号来引用该内嵌资源。例如,假设将一个表示内嵌图片的MIME消息的Content-ID头字段设置为如下形式: Content-ID: it315logo_gif那么,在HTML正文中就需要使用如下HTML语句来引用该图片资源: <img src="cid:it315logo_gif"> 注意,在引用Content-ID头字段标识的内嵌资源时,要在资源的唯一标识号前面加上“cid:”,以说明要采用唯一标识号对资源进行引用。
4、使用JavaMail API创建邮件
(1)创建简单邮件
          //1、创建邮件
Properties props = new Properties(); //设置属性
Session session = Session.getInstance(props); //创建session
MimeMessage message = new MimeMessage(session);
//2、设置邮件属性
message.setFrom(new InternetAddress("aa@xiaoli.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("bb@xiaoli.com"));
message.setSubject("HiRedarmy");
//3、正文
MimeBodyPart part = new MimeBodyPart();
part.setContent("xxxxxxxxxxxx", "text/html");
//content.setText("xxxxxxxx", "utf8");
//4、描述关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(part);

//设置关系
message.setContent(mm);
message.saveChanges();
message.writeTo(new FileOutputStream("D:\\1.eml"));
(2)创建包含内嵌图片的邮件
         //1、创建邮件
MimeMessage message = new MimeMessage(Session.getInstance(new Properties()));
//2、设置邮件属性
message.setFrom(new InternetAddress("redarmy@xiaoli.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("xiaoli@redarmy.com"));
message.setSubject("呵呵呵呵呵呵呵呵呵呵..");
//3、创建正文
MimeBodyPart text = new MimeBodyPart();
text.setContent("xxx<br/><br/><img src='cid:xx.jpg'>xxxxx", "text/html;charset=gb2312");
//4、创建一个图片
MimeBodyPart image = new MimeBodyPart();
image.setDataHandler(new DataHandler(new FileDataSource("src\\f.jpg")));
image.setContentID("xx.jpg");
//5、创建描述关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
//6、设置关系
mm.setSubType("related");
message.setContent(mm);
message.saveChanges();
message.writeTo(new FileOutputStream("D:\\2.eml"));
创建包含附件的邮件
//1、创建邮件
MimeMessage message = new MimeMessage(Session.getInstance(new Properties()));
//2、设置邮件属性
message.setFrom(new InternetAddress("redarmy@xiaoli.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("xiaoli@redarmy.com"));
message.setSubject("啊啊啊啊啊啊啊..");
MimeBodyPart text= new MimeBodyPart();
text.setContent("xxx<br/><br/><img src='cid:xx.jpg'>xxxxx", "text/html;charset=gb2312");
MimeBodyPart attch= new MimeBodyPart();
attch.setDataHandler(new DataHandler(new FileDataSource("src\\1.mp3")));
attch.setFileName("1.mp3");
//4、创建描述关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(attch);
//5、设置关系
mm.setSubType("mixed");
message.setContent(mm);
message.saveChanges();
message.writeTo(new FileOutputStream("d:\\3.eml"));
包含内嵌图片和附件的复杂邮件
//1、创建邮件
MimeMessage message = new MimeMessage(Session.getInstance(new Properties()));
//2、设置邮件的属性
message.setFrom(new InternetAddress("redarmycsdn@sina.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("xx@sina.com"));
message.setSubject("世界上最复杂的邮件");
//3、设置正文
MimeBodyPart text = new MimeBodyPart();
text.setContent("xxxxxxx<br/><img src='cid:xx.jpg'><br/>xxxxxx","text/html;charset=gb2312");

//4、设置图片
MimeBodyPart image = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource("src\\f.jpg"));
image.setDataHandler(dh);
image.setContentID("xx.jpg");
//5、设置附件
MimeBodyPart attch = new MimeBodyPart();
DataHandler dh1 = new DataHandler(new FileDataSource("src\\大笑.mp3"));
attch.setDataHandler(dh1);
String filename = dh1.getName();
attch.setFileName(MimeUtility.encodeText(filename));
//6、描述关系
//图片与正文的描述关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("related");
//图片与正文的 bodypart
MimeBodyPart part = new MimeBodyPart();
part.setContent(mm);
//附件与以上的bodypart关系
MimeMultipart m = new MimeMultipart();
m.addBodyPart(part);
m.addBodyPart(attch);
m.setSubType("mixed");
//把MIME消息设置到message中
message.setContent(m);
message.saveChanges();
message.writeTo(new FileOutputStream("d:\\66.eml"));
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics