上犹电脑信息网我们一直在努力
您的位置:上犹电脑信息网 > 电脑怎么了 > 怎么群发邮件-Java 高级教程: Java 发送邮件

怎么群发邮件-Java 高级教程: Java 发送邮件

作者:上犹日期:

返回目录:电脑怎么了

使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) 。


你可以在 JavaMail (Version 1.2) 下载最新的版本。


你可以再 在JAF (Version 1.1.1)下载最新的版本。


下载并解压这些文件,最上层文件夹你会发现很多的jar文件。你需要将mail.jar和activation.jar 添加到你的CLASSPATH中。


如果你使用第三方邮件服务器如QQ的SMTP服务器,可查看文章底部用户认证完整的实例。


发送一封简单的 E-mail


下面是一个发送简单E-mail的例子。假设你的localhost已经连接到网络。


  1. // 文件名 SendEmail.java
  2. import java.util.*;
  3. import javax.mail.*;
  4. import javax.mail.internet.*;
  5. import javax.activation.*;
  6. public class SendEmail
  7. {
  8. public static void main(String [] args)
  9. {
  10. // 收件人电子邮箱
  11. String to = "abcd@gmail.com";
  12. // 发件人电子邮箱
  13. String from = "web@gmail.com";
  14. // 指定发送邮件的主机为 localhost
  15. String host = "localhost";
  16. // 获取系统属性
  17. Properties properties = System.getProperties();
  18. // 设置邮件服务器
  19. properties.setProperty("mail.smtp.host", host);
  20. // 获取默认session对象
  21. Session session = Session.getDefaultInstance(properties);
  22. try{
  23. // 创建默认的 MimeMessage 对象
  24. MimeMessage message = new MimeMessage(session);
  25. // Set From: 头部头字段
  26. message.setFrom(new InternetAddress(from));
  27. // Set To: 头部头字段
  28. message.addRecipient(Message.RecipientType.TO,
  29. new InternetAddress(to));
  30. // Set Subject: 头部头字段
  31. message.setSubject("This is the Subject Line!");
  32. // 设置消息体
  33. message.setText("This is actual message");
  34. // 发送消息
  35. Transport.send(message);
  36. System.out.println("Sent message successfully....");
  37. }catch (MessagingException mex) {
  38. mex.printStackTrace();
  39. }
  40. }
  41. }

编译并运行这个程序来发送一封简单的E-mail:


  1. $ java SendEmail
  2. Sent message successfully....

如果你想发送一封e-mail给多个收件人,那么使用下面的方法来指定多个收件人ID:


  1. void addRecipients(Message.RecipientType type,
  2. Address[] addresses)
  3. throws MessagingException

下面是对于参数的描述:


  • type:要被设置为TO, CC 或者BCC. 这里CC 代表抄送、BCC 代表秘密抄送y. 举例:Message.RecipientType.TO
  • addresses: 这是email ID的数组。在指定电子邮件ID时,你将需要使用InternetAddress()方法。

发送一封HTML E-mail


下面是一个发送HTML E-mail的例子。假设你的localhost已经连接到网络。


和上一个例子很相似,除了我们要使用setContent()方法来通过第二个参数为"text/html",来设置内容来指定要发送HTML内容。


  1. // 文件名 SendHTMLEmail.java
  2. import java.util.*;
  3. import javax.mail.*;
  4. import javax.mail.internet.*;
  5. import javax.activation.*;
  6. public class SendHTMLEmail
  7. {
  8. public static void main(String [] args)
  9. {
  10. // 收件人电子邮箱
  11. String to = "abcd@gmail.com";
  12. // 发件人电子邮箱
  13. String from = "web@gmail.com";
  14. // 指定发送邮件的主机为 localhost
  15. String host = "localhost";
  16. // 获取系统属性
  17. Properties properties = System.getProperties();
  18. // 设置邮件服务器
  19. properties.setProperty("mail.smtp.host", host);
  20. // 获取默认的 Session 对象。
  21. Session session = Session.getDefaultInstance(properties);
  22. try{
  23. // 创建默认的 MimeMessage 对象。
  24. MimeMessage message = new MimeMessage(session);
  25. // Set From: 头部头字段
  26. message.setFrom(new InternetAddress(from));
  27. // Set To: 头部头字段
  28. message.addRecipient(Message.RecipientType.TO,
  29. new InternetAddress(to));
  30. // Set Subject: 头字段
  31. message.setSubject("This is the Subject Line!");
  32. // 发送 HTML 消息, 可以插入html标签
  33. message.setContent("This is actual message",
  34. "text/html" );
  35. // 发送消息
  36. Transport.send(message);
  37. System.out.println("Sent message successfully....");
  38. }catch (MessagingException mex) {
  39. mex.printStackTrace();
  40. }
  41. }
  42. }

编译并运行此程序来发送HTML e-mail:


  1. $ java SendHTMLEmail
  2. Sent message successfully....

发送带有附件的 E-mail


下面是一个发送带有附件的 E-mail的例子。假设你的localhost已经连接到网络。


  1. // 文件名 SendFileEmail.java
  2. import java.util.*;
  3. import javax.mail.*;
  4. import javax.mail.internet.*;
  5. import javax.activation.*;
  6. public class SendFileEmail
  7. {
  8. public static void main(String [] args)
  9. {
  10. // 收件人电子邮箱
  11. String to = "abcd@gmail.com";
  12. // 发件人电子邮箱
  13. String from = "web@gmail.com";
  14. // 指定发送邮件的主机为 localhost
  15. String host = "localhost";
  16. // 获取系统属性
  17. Properties properties = System.getProperties();
  18. // 设置邮件服务器
  19. properties.setProperty("mail.smtp.host", host);
  20. // 获取默认的 Session 对象。
  21. Session session = Session.getDefaultInstance(properties);
  22. try{
  23. // 创建默认的 MimeMessage 对象。
  24. MimeMessage message = new MimeMessage(session);
  25. // Set From: 头部头字段
  26. message.setFrom(new InternetAddress(from));
  27. // Set To: 头部头字段
  28. message.addRecipient(Message.RecipientType.TO,
  29. new InternetAddress(to));
  30. // Set Subject: 头字段
  31. message.setSubject("This is the Subject Line!");
  32. // 创建消息部分
  33. BodyPart messageBodyPart = new MimeBodyPart();
  34. // 消息
  35. messageBodyPart.setText("This is message body");
  36. // 创建多重消息
  37. Multipart multipart = new MimeMultipart();
  38. // 设置文本消息部分
  39. multipart.addBodyPart(messageBodyPart);
  40. // 附件部分
  41. messageBodyPart = new MimeBodyPart();
  42. String filename = "file.txt";
  43. DataSource source = new FileDataSource(filename);
  44. messageBodyPart.setDataHandler(new DataHandler(source));
  45. messageBodyPart.setFileName(filename);
  46. multipart.addBodyPart(messageBodyPart);
  47. // 发送完整消息
  48. message.setContent(multipart );
  49. // 发送消息
  50. Transport.send(message);
  51. System.out.println("Sent message successfully....");
  52. }catch (MessagingException mex) {
  53. mex.printStackTrace();
  54. }
  55. }
  56. }

编译并运行你的程序来发送一封带有附件的邮件。


  1. $ java SendFileEmail
  2. Sent message successfully....

用户认证部分


如果需要提供用户名和密码给e-mail服务器来达到用户认证的目的,你可以通过如下设置来完成:


  1. props.put("mail.smtp.auth", "true");
  2. props.setProperty("mail.user", "myuser");
  3. props.setProperty("mail.password", "mypwd");

e-mail其他的发送机制和上述保持一致。


需要用户名密码验证邮件发送实例:


本实例以QQ邮件服务器为例,你需要在登录QQ邮箱后台在"设置"=》账号中开启POP3/SMTP服务 ,如下图所示:


Java 代码如下:


  1. // 需要用户名密码邮件发送实例
  2. //文件名 SendEmail2.java
  3. //本实例以QQ邮箱为例,你需要在qq后台设置
  4. import java.util.Properties;
  5. import javax.mail.Authenticator;
  6. import javax.mail.Message;
  7. import javax.mail.MessagingException;
  8. import javax.mail.PasswordAuthentication;
  9. import javax.mail.Session;
  10. import javax.mail.Transport;
  11. import javax.mail.internet.InternetAddress;
  12. import javax.mail.internet.MimeMessage;
  13. public class SendEmail2
  14. {
  15. public static void main(String [] args)
  16. {
  17. // 收件人电子邮箱
  18. String to = "xxx@qq.com";
  19. // 发件人电子邮箱
  20. String from = "xxx@qq.com";
  21. // 指定发送邮件的主机为 localhost
  22. String host = "smtp.qq.com"; //QQ 邮件服务器
  23. // 获取系统属性
  24. Properties properties = System.getProperties();
  25. // 设置邮件服务器
  26. properties.setProperty("mail.smtp.host", host);
  27. properties.put("mail.smtp.auth", "true");
  28. // 获取默认session对象
  29. Session session = Session.getDefaultInstance(properties,new Authenticator(){
  30. public PasswordAuthentication getPasswordAuthentication()
  31. {
  32. return new PasswordAuthentication("xxx@qq.com", "qq邮箱密码"); //发件人邮件用户名、密码
  33. }
  34. });
  35. try{
  36. // 创建默认的 MimeMessage 对象
  37. MimeMessage message = new MimeMessage(session);
  38. // Set From: 头部头字段
  39. message.setFrom(new InternetAddress(from));
  40. // Set To: 头部头字段
  41. message.addRecipient(Message.RecipientType.TO,
  42. new InternetAddress(to));
  43. // Set Subject: 头部头字段
  44. message.setSubject("This is the Subject Line!");
  45. // 设置消息体
  46. message.setText("This is actual message");
  47. // 发送消息
  48. Transport.send(message);
  49. System.out.println("Sent message successfully....from shouce.ren");
  50. }catch (MessagingException mex) {
  51. mex.printStackTrace();
  52. }
  53. }
  54. }

更多JAVA视频教程资料获取,私信菲儿(学习)即可!


本文标签:怎么群发邮件(13)
关键词不能为空
极力推荐

电脑蓝屏_电脑怎么了_win7问题_win10问题_设置问题_文件问题_上犹电脑信息网

关于我们