在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

java发送邮件示例讲解

2016-8-29 13:21| 发布者: zhangjf| 查看: 686| 评论: 0

摘要: 本文实例讲解了java发邮件的详细过程,供大家参考,具体内容如下 1、邮件协议 发邮件的:SMTP (Simple Mail Transport Protocal) 收邮件的协议:pop3 (Post Office Protocal 3) IMAP 新协议 发邮件也可以收邮件。 ...

本文实例讲解了java发邮件的详细过程,供大家参考,具体内容如下

1、邮件协议

发邮件的:SMTP (Simple Mail Transport Protocal)

收邮件的协议:pop3 (Post Office Protocal 3)

IMAP 新协议 发邮件也可以收邮件。

(一步步的与服务器交互)

SMTP :

2、收发邮件的过程:

一般情况下,smtp和pop3是两个服务器(主机)。

Smtp邮件的端口为25。

POP3 端口 为110。

发邮件示例

1)、安装foxmail:

2)、发邮件时,要对用户名和密码进行base64编码

  1. //对用户名和密码进行base64编码
  2. @Test
  3. public void base64(){
  4. String name = "wj_leaf12345";
  5. String pwd = "1qaz2wsx";
  6. BASE64Encoder en = new BASE64Encoder();
  7. name = en.encode(name.getBytes());
  8. pwd = en.encode(pwd.getBytes());
  9. System.err.println(name);
  10. System.err.println(pwd);
  11. }
复制代码

3)、通过java代码发邮件

用java发邮件,必须要导入新的包

mail.jar – 发邮件的核心包

activation.jar – 对用户和密码加密.

在mail.jar中有三个核心类:

Javax.mail.Session – 是指与邮件服务器会话。整个项目中只要一个就可以了.

Javax.mail.Message(接口) —准备发送数据信息。

MimeMessage - 可以设置类型的数据信息。

Transport – 它拥有一个方法可以发送Message。

第一步:导入两个jar包

第二步:发简单的邮件

  1. public void sendMail() throws Exception{
  2. //第一步:声明properties对象放信息
  3. Properties prop = new Properties();
  4. //设置连接哪一台服务器
  5. prop.setProperty("mail.host","smtp.126.com");
  6. //设置是否验证
  7. prop.setProperty("mail.smtp.auth", "true");
  8. //第二步:声明用户名和密码
  9. Authenticator auth = new Authenticator() {
  10. //此访求返回用户和密码的对象
  11. public PasswordAuthentication getPasswordAuthentication() {
  12. PasswordAuthentication pa =
  13. new PasswordAuthentication("aaa", "sss");
  14. return pa;
  15. }
  16. };
  17. ////第二步:获取Session对象
  18. Session session =
  19. Session.getDefaultInstance(prop,auth);
  20. //设置session的调试模式
  21. session.setDebug(true);
  22. //第三步:声明信息
  23. MimeMessage mm1 =
  24. new MimeMessage(session);
  25. //第四步:设置发件人email
  26. Address from = new InternetAddress("wj@126.com");
  27. mm1.setFrom(from);
  28. //第五步:设置收件人
  29. mm1.setRecipient(RecipientType.TO,new InternetAddress("wj@163.com"));
  30. mm1.setRecipient(RecipientType.CC, new InternetAddress("554@qq.com"));
  31. mm1.setRecipient(RecipientType.BCC, new InternetAddress("wj@ss.cn"));
  32. //第六步:设置主题
  33. mm1.setSubject("这是用Java发的邮件3");
  34. mm1.setContent("你好,这是用java发的邮件,3333再试一下", "text/plain;charset=UTF-8");
  35. //第七步:
  36. Transport.send(mm1);
  37. }
复制代码

第三步:v发带有超连接的邮件

  1. mm1.setSubject("这是用Java发的邮件sfasdf3");
  2. mm1.setContent("你好,这是用java发的邮件,<a href='http://www.baidu.com'>百度</a>", "text/html;charset=UTF-8" );
  3. //第七步:
  4. Transport.send(mm1);
复制代码

第四步:符件的邮件

  1. public void sendFile() throws Exception{
  2. Properties p = new Properties();
  3. p.setProperty("mail.host","smtp.163.com");
  4. p.setProperty("mail.smtp.auth","true");
  5. Session s = Session.getDefaultInstance(p,new Authenticator() {
  6. @Override
  7. public PasswordAuthentication getPasswordAuthentication() {
  8. return new PasswordAuthentication("ww", "123");
  9. }
  10. });
  11. s.setDebug(true);
  12. //声明MimeMessage
  13. MimeMessage msg = new MimeMessage(s);
  14. msg.setFrom(new InternetAddress("ww@163.com"));
  15. msg.setRecipient(RecipientType.TO, new InternetAddress("ww@126.com"));
  16. msg.setSubject("图片的");
  17. //第一步:声明多处理的Part
  18. MimeMultipart mm = new MimeMultipart();
  19. //第二步:声明
  20. MimeBodyPart body1 = new MimeBodyPart();
  21. //第三步:设置符件
  22. DataSource ds = new FileDataSource(new File("./img/a.jpg"));
  23. DataHandler dh = new DataHandler(ds);
  24. body1.setDataHandler(dh);
  25. //必须要设置名称
  26. body1.setFileName(MimeUtility.encodeText("美女.jpg"));
  27. MimeBodyPart body2 = new MimeBodyPart();
  28. //第三步:设置符件
  29. DataSource ds2 = new FileDataSource(new File("./img/b.jpg"));
  30. DataHandler dh2 = new DataHandler(ds2);
  31. body2.setDataHandler(dh2);
  32. //必须要设置名称
  33. body2.setFileName(MimeUtility.encodeText("美女2.jpg"));
  34. MimeBodyPart body3 = new MimeBodyPart();
  35. //第三步:设置符件
  36. DataSource ds3 = new FileDataSource(new File("./img/m.mp3"));
  37. DataHandler dh3 = new DataHandler(ds3);
  38. body3.setDataHandler(dh3);
  39. //必须要设置名称
  40. body3.setFileName(MimeUtility.encodeText("世纪末.mp3"));
  41. //将body1添加到mm
  42. mm.addBodyPart(body1);
  43. mm.addBodyPart(body2);
  44. mm.addBodyPart(body3);
  45. msg.setContent(mm);
  46. //发送
  47. Transport.send(msg);
  48. }
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助。

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-7 03:04

Copyright 2015-2025 djqfx

返回顶部