java发送邮件

java发邮件的方法应该不止一种

我这里只说我会的一种

首先添加两个jar包mail.jar activation.jar

然后自己写一个mail的类,类中包括发送等方法

 1 public class Mail {

 2     private String subject;

 3     private String from;

 4     private String[] recipients;

 5     private String message;

 6 

 7     private static final String SMTP_HOST_NAME = "";//你的smtp服务器地址

 8     private static final String SMTP_AUTH_USER = "";//smtp用户名

 9     private static final String SMTP_AUTH_PWD  = "";    //密码;

10     

11     public void send() throws MessagingException{

12         boolean debug = false;

13 

14         Properties props = new Properties();

15         props.put("mail.smtp.host", SMTP_HOST_NAME);

16         props.put("mail.smtp.auth", "true");

17 

18         Session session = Session.getDefaultInstance(props, new SMTPAuthenticator());

19         session.setDebug(debug);

20 

21         // create a message

22         Message msg = new MimeMessage(session);

23         msg.setFrom(new InternetAddress(from));

24 

25         InternetAddress[] addressTo = new InternetAddress[recipients.length];

26         for (int i = 0; i < recipients.length; i++)

27         {

28             addressTo[i] = new InternetAddress(recipients[i]);

29         }

30         msg.setRecipients(Message.RecipientType.TO, addressTo);

31 

32         msg.setHeader("X-Priority", "3");    //1:紧急 3:普通 5:缓慢

33         msg.setSubject(subject);

34         msg.setContent(message, "text/plain; charset=UTF-8");

35         Transport.send(msg);

36     }

37     

38     //如需认证发件,可打开下面注释

39     private class SMTPAuthenticator extends javax.mail.Authenticator

40     {

41 

42         public PasswordAuthentication getPasswordAuthentication()

43         {

44             String username = SMTP_AUTH_USER;

45             String password = SMTP_AUTH_PWD;

46             return new PasswordAuthentication(username, password);

47         }

48     }

49     

50     public String getSubject() {

51         return subject;

52     }

53 

54 

55     public void setSubject(String subject) {

56         this.subject = subject;

57     }

58 

59 

60     public String getFrom() {

61         return from;

62     }

63 

64 

65     public void setFrom(String from) {

66         this.from = from;

67     }

68 

69 

70     public String[] getRecipients() {

71         return recipients;

72     }

73 

74 

75     public void setRecipients(String[] recipients) {

76         this.recipients = recipients;

77     }

78 

79 

80     public String getMessage() {

81         return message;

82     }

83 

84 

85     public void setMessage(String message) {

86         this.message = message;

87     }

88 

89 

90 

91 }
View Code

在别的类中这样引用就可以了:

private static void sendRenew(String toMail,String message){

        Mail mail = new Mail();

        mail.setFrom("License Manager <[email protected]>");//发送方

        mail.setRecipients(new String[]{toMail});//接收方,可以多个

        mail.setSubject("Renew Now!!");

        mail.setMessage(message);

        try {

            mail.send();//发送

        } catch (Exception e) {

            System.out.println("error report failure.\n"+e);

        }

    }
View Code

这样就行了,不过如果你使用的是MyEclipse有时候会出现这样的异常

java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
解决方法:
进入MyEclipse的安装目录下
D:\Genuitec\Common\plugins\com.genuitec.eclipse.j2eedt.core_8.5.0.me201003231033\data\libraryset\EE_5

(蓝色部分不同版本略有不同)
可以看到javaee.jar包,

使用压缩软件打开把这个包文件,然后进到javax文件夹中,删除mail目录和activation文件夹

(也就是说MyEclipse中也自带了这样的功能包,只是方法与JDK的javamail包不一致而导致报异常)
删掉之后,在运行代码,就不会出现错误了

 

参考:http://blog.sina.com.cn/s/blog_4550f3ca01019qpt.html,谢谢这位大哥

 

你可能感兴趣的:(java)